-
地支巳/午阴阳映射反转 (
engine/udm.py:47-48)- 问题:巳被标记为阳火、午被标记为阴火,与传统命理完全相反
- 修正:巳→阴火、午→阳火
- 影响:所有依赖地支阴阳的计算(十神、藏干分析、五行平衡)结果错误
-
紫微斗数五行局数字解析失败 (
engine/ziwei_engine.py:161)- 问题:
int(wuxing_ju_str[1])对中文数字"三"调用.isdigit()返回False,导致所有五行局默认为6 - 修正:使用中文数字映射表
CN_DIGITS = {'一':1,'二':2,...,'六':6} - 影响:木三局→6(错)、水二局→6(错),紫微星排布全部偏移
- 问题:
-
八字引擎logger未定义 (
engine/bazi_engine.py:137)- 问题:
logger.warning()调用NameError,大运异常时崩溃 - 修正:添加
import logging; logger = logging.getLogger(__name__) - 影响:大运计算异常时服务器500错误
- 问题:
-
1986/1988年夏令时起始日期错误 (
engine/time_engine.py:65,67)- 问题:1986年写4月13日(应5月4日)、1988年写4月10日(应4月17日)
- 修正:更新为正确历史日期
- 影响:1986年4月13日-5月3日、1988年4月10日-16日出生者时间偏移1小时
-
三合/半合同时触发 (
engine/udm.py:316)- 问题:
len(zhi_set & sanhe) >= 2导致三合时同时输出"半合"和"三合" - 修正:改为
== 2(恰好2个才触发半合) - 影响:申子辰全齐时重复输出
- 问题:
-
Health check使用错误属性名 (
main.py:53)- 问题:
orch.engines不存在,实际是orch._engines - 修正:改为
orch._engines - 影响:引擎数量始终显示硬编码的7
- 问题:
-
perspective_engine KeyError无保护 (
engine/perspective_engine.py:424)- 问题:
self.figures[pid]对不存在的figure_id直接KeyError崩溃 - 修正:改用
.get()并跳过不存在的ID - 影响:请求不存在的人物ID时服务器500错误
- 问题:
-
LLM_FIGURES人物ID不匹配 (
engine/perspective_engine.py:584)- 问题:
"sun-tzu"和"confucius"在默认figures中不存在 - 修正:改为
"sunzi"和"kongzi" - 影响:孙子和孔子始终用模板推理,从未触发LLM推理
- 问题:
-
占星ASC/MC在0°时误判为falsy (
engine/astro_engine.py:137,139)- 问题:
if ascendant在0.0时为False,返回int 0而非float 0.0 - 修正:改为
if ascendant is not None - 影响:白羊座0°上升时类型不一致
- 问题:
-
太乙引擎int()无异常处理 (
engine/taiyi_engine.py:77)- 问题:
int(r.get('太乙落宮', 0))非数值时ValueError - 修正:添加try/except
- 影响:kintaiyi返回非数值时服务器崩溃
- 问题:
-
内容检查器重复比喻词 (
engine/content_checker.py:30)- 问题:"犹如"出现两次,减少检测多样性
- 修正:去重,保留8个唯一模式
- 影响:比喻检测覆盖率降低
-
测试断言永远通过 (
tests/test_engines.py:60)- 问题:
or True使断言永远通过 - 修正:移除
or True - 影响:男女大运差异测试从未真正验证
- 问题:
-
前端年份下拉扩展到当前年+5 (
frontend/index.html:90)- 原来硬编码2025,改为
new Date().getFullYear() + 5 - 2026年起用户可选择当前年份
- 原来硬编码2025,改为
-
CSS变量补全 (
frontend/css/style.css:28-32)- 新增
--border-color、--border、--success、--danger、--bg-main变量 - 修复chart.html、debate.html、index.html中引用未定义变量导致的样式缺失
- 新增
-
base.py移除冗余导入 (
engine/base.py:69)- 删除
run_all()方法内重复的from .udm import DestinyModel
- 删除
-
udm.py移除冗余条件 (
engine/udm.py:197)Pillar.wuxing属性中if self.nayin重复检查
-
完整引擎审计 — 发现并记录50+潜在问题(详见下方待办)
| 术数 | 状态 | 验证方法 |
|---|---|---|
| 八字 | ✅ PASS | /api/validate 对比 lunar-python 直接计算(2组测试数据) |
| 占星 | ✅ PASS | pyswisseph 直接计算对比(Sun=双子,Moon=巨蟹,ASC=射手) |
| 紫微 | ✅ 修复 | 五行局数字解析修正,火六局现在正确返回 |
| 六爻 | ✅ 正常 | najia 排盘 |
| 奇门 | 值使门仍为简化实现(硬编码休门) | |
| 大六壬 | 三传仅实现贼克法 | |
| 太乙 | ✅ 修复 | int()异常处理已添加 |
| 姓名学 | ✅ 正常 | 三才+八字配合已修复 |
- 奇门遁甲值使门硬编码 — 需实现真正的值使门推算逻辑
- 大六壬三传算法 — 需实现涉害法、遥克法、昴星法等8种方法
- chart.html紫微渲染 —
palace.stars字段名不匹配,需改为major_stars - chart.html六壬渲染 —
k.ke属性不存在,需改为正确字段 - chart_result.html — 完全静态页面,需改为动态或删除
- CSS重复定义清理 — confidence-badge/loading/spinner 有多处重复
- 硬编码API密钥 — config.py和test_engines.py中的密钥应移至环境变量
-
姓名学八字配合逻辑错误 (
engine/xingming_engine.py:bazi_match)- 问题:调候用神比较时,用五行(木火土金水)直接匹配天干(癸庚丁),导致永远匹配失败
- 修正:先将调候天干映射为五行,再与名字五行比对
- 影响:所有姓名学分析的"是否补调候"字段结果相反
-
六爻六亲定法错误 (
engine/liuyao_engine.py:_najia_zhuanggua)- 问题:六亲计算用上卦五行代替卦宫五行,游魂卦/归魂卦六亲全部错误
- 修正:改用京房八宫归属表(GUA_GONG_WUXING)定卦宫五行
- 影响:如"火地晋"(上卦离=火)实际属乾宫(金),六亲判定完全不同
-
夏令时DST时序错误 (
engine/time_engine.py:correct)- 问题:DST回退在UTC转换后执行,但DST边界按北京时间定义,导致1986-1991年出生者时间偏移1小时
- 修正:将DST回退移到UTC转换之前(在本地时间上检查)
- 影响:中国1986-1991年夏令时期间出生的人,所有术法排盘时间可能偏移1小时
-
奇门遁甲甲子序号计算公式错误 (
engine/qimen_engine.py:_get_jiazi_idx)- 问题:
(gan_idx * 6 + (zhi_idx - gan_idx) % 12) % 60公式对部分干支组合返回错误值 - 修正:改用预计算六十甲子表(60项dict)直接查表
- 影响:奇门遁甲阴阳遁/局数/三元判定可能出错
- 问题:
-
姓名学三才配置表不完整 (
engine/xingming_engine.py:SANCAI_LUCK)- 问题:三才配置表缺少大量常见组合(如水-金-金、木-水-火等),返回"未知"
- 修正:补充约50种三才配置到SANCAI_LUCK表
- 影响:很多名字的三才配置显示为"未知"
-
六爻gua_gong_wuxing变量未定义 (
engine/liuyao_engine.py)- 问题:上一版修复引入的bug——gua_gong_wuxing在使用后才定义
- 修正:将定义移到使用之前,删除重复定义
- 影响:六爻引擎完全无法运行
-
新增 /api/validate 验证端点 (
api/routes.py)- 功能:对比 lunar-python 直接计算结果与 API 排盘结果
- 用途:自动化准确性验证,排查排盘错误
- 返回:PASS/FAIL + 逐字段mismatches
-
姓名学笔画表扩展 (
engine/xingming_engine.py:STROKE_MAP)- 新增约300+常见名字用字(明/浩/涵/清/源/溪/俊/信/修/怡/慧等)
- 减少未知字fallback警告
-
前端移动端CSS优化 (
frontend/css/style.css)- 新增 @media (max-width: 768px) 响应式规则
- 表单/按钮/卡片/表格在窄屏下自适应
- Loading动画spinner优化
| 术数 | 状态 | 验证方法 |
|---|---|---|
| 八字 | ✅ PASS | /api/validate 对比 lunar-python 直接计算 |
| 紫微 | ✅ 正常 | iztro-py 排盘,12宫+主星完整 |
| 六爻 | ✅ 修复 | 京房八宫五行现在正确使用 |
| 奇门 | ✅ 修复 | 甲子序号改用查表法 |
| 大六壬 | ✅ 正常 | kinliuren 排盘 |
| 太乙 | ✅ 正常 | kintaiyi 排盘 |
| 占星 | ✅ 正常 | pyswisseph 对比验证(Sun=双子,Moon=巨蟹,ASC=射手) |
| 姓名学 | ✅ 修复 | 三才配置+八字配合逻辑修正 |
-
时间解析不支持带秒格式 (
engine/time_engine.py:174)- 问题:
_parse_time()缺少"%Y-%m-%d %H:%M:%S"格式,导致 "2005-06-09 11:50:00" 解析失败 - 修正:添加6种带秒的时间格式(%H:%M:%S、%H%M%S等)
- 影响:所有API请求带秒的时间参数返回500错误
- 问题:
-
占星宫位/ASC用UTC而非真太阳时 (
engine/astro_engine.py:55-63)- 问题:
swe.houses()传入UTC JD,导致ASC偏移~90°(射手应为处女) - 修正:行星位置用
jd_utc(swe.calc_ut),宫位/ASC用jd_solar(真太阳时JD) - 影响:所有上升星座、宫位计算结果错误
- 问题:
-
紫微引擎名称不匹配导致UDM数据丢失 (
engine/ziwei_engine.py:113,engine/base.py:112)- 问题:引擎返回
name="紫微斗数"但UDM writer检查"紫微",导致紫微数据不写入UDM - 修正:统一为
"紫微" - 影响:紫微排盘结果不显示(数据被丢弃)
- 问题:引擎返回
-
缺少CORS中间件 (
main.py)- 问题:前端跨域请求被浏览器拦截
- 修正:添加
CORSMiddleware,允许所有来源 - 影响:前端无法从不同端口/域名访问API
-
占星相位容许度统一8°不合理 (
engine/astro_engine.py:153-176)- 问题:所有相位统一用8°容许度,六合(60°)不应超过4°
- 修正:合相8°、六合4°、刑6°、三合6°、冲8°
- 影响:六合相位误判率高
-
前端上升星座显示度数而非星座名 (
frontend/index.html:203)- 问题:
a.ascendant是度数(258.73),应显示a.ascendant_sign(射手) - 修正:改为
a.ascendant_sign || a.ascendant - 影响:上升星座显示为数字而非中文星座名
- 问题:
-
前端紫微星曜渲染字段名不匹配 (
frontend/index.html:198)- 问题:代码引用
pal.stars但API返回pal.major_stars(对象数组含.name属性) - 修正:合并
pal.major_stars和pal.minor_stars,提取.name属性 - 影响:紫微斗数面板星曜全部不显示
- 问题:代码引用
| 术法 | 验证状态 | 备注 |
|---|---|---|
| 八字 | ✅ | 乙酉壬午甲子庚午,与lunar-python一致 |
| 紫微 | ✅ | 命宫子、火六局,四化天机禄/天梁权/紫微科/太阴忌 |
| 占星 | ✅ | 太阳双子18°、月亮巨蟹14°、ASC射手259°(真太阳时修正后) |
| 六爻 | ✅ | 风雷益→天雷无妄,六亲/世应/动爻全部正确 |
| 奇门 | ✅ | 阳遁6局,芒种,时干庚,值符戊,值使休门 |
| 大六壬 | ✅ | 月将传送(申),四课正确,三传辰午申 |
| 太乙 | ✅ | 坤二宫,积年4702,年干支乙酉 |
| 姓名学 | ✅ | 张伟:天格9水/人格12木/地格5土,三才水木土 |
- CORS中间件 — 允许前端跨域访问API
- 相位容许度分层 — 不同相位使用不同容许度(合/冲8°,刑/三合6°,六合4°)
- STROKE_MAP全面迁移到康熙字典笔画
- 姓名学三才配置表补全(当前约66/125种组合)
- 大六壬三传算法需完善(当前用贼克法简化)
- 奇门遁甲八门/九星/八神需与天盘地盘联动
- 紫微斗数大限/流年推演功能
- 行运盘(transit)功能
-
六爻六亲关系系统性错误 (
engine/liuyao_engine.py:347-353)- 问题:水/火/土三行的7组六亲关系全部生克颠倒
- 修正:水-土→官鬼(克我),水-木→子孙(我生),火-水→官鬼,火-土→子孙,土-木→官鬼,土-火→父母(生我),土-金→子孙
- 影响:所有水/火/土卦宫的六爻断卦结果错误
-
六爻壬癸日六神起始错误 (
engine/liuyao_engine.py:123-124)- 问题:壬癸日六神从白虎起(与庚辛日相同),应从玄武起
- 修正:壬癸 →
['玄武', '青龙', '朱雀', '勾陈', '螣蛇', '白虎'] - 影响:所有壬癸日起卦的六神排列错误
-
占星相位命名不规范 (
engine/astro_engine.py:148-152)- 问题:六分/四分/三分/对冲 不符合中文占星术语
- 修正:六分→六合,四分→刑,三分→三合,对冲→冲
- 影响:所有相位名称显示错误
-
占星天文计算时间基准错误 (
engine/astro_engine.py:55-62)- 问题:
swe.julday()期望UTC时间,但代码传入真太阳时(本地时间),导致ASC偏移~93° - 修正:改用
time.utc替代time.true_solar - 影响:所有上升星座、宫位计算结果错误
- 问题:
-
占星宫位索引偏移 (
engine/astro_engine.py:100-107)- 问题:Placidus分宫制下
cusps[0]是ASC而非1宫头,循环应从cusps[1]取2-12宫头 - 修正:1宫头使用
ascmc[0](ASC),2-12宫头使用cusps[1..11] - 影响:1宫宫头度数可能不准确
- 问题:Placidus分宫制下
-
姓名学偏旁笔画标准错误 (
engine/xingming_engine.py:18,217)- 问题:偏旁使用简化字笔画而非康熙字典标准(辶=3应为7,艹=3应为6等)
- 修正:辶→7,忄→4,氵→4,犭→4,扌→4,艹→6,钅→8,讠→7,饣→8,纟→6
- 影响:所有含这些偏旁的名字笔画计算错误
-
前端多面板同时显示 (
frontend/index.html:105-112)- 问题:
switchPanel()后所有面板又被display:block覆盖 - 修正:移除行内的
display:block设置,仅保留switchPanel()控制 - 影响:所有术数面板同时可见,界面混乱
- 问题:
-
API异常信息泄露 (
api/routes.py:206,257,289,322,408)- 问题:5处
except直接返回str(e)给客户端,暴露内部堆栈 - 修正:添加
logger.exception()记录详细错误,返回通用错误消息 - 影响:生产环境安全风险
- 问题:5处
| 术法 | 验证状态 | 备注 |
|---|---|---|
| 八字 | ✅ | 乙酉壬午甲子庚午,与lunar-python一致 |
| 紫微 | ✅ | 命宫子、火六局,四化天机禄/天梁权/紫微科/太阴忌 |
| 占星 | ✅ | 太阳双子18°、ASC处女165°(UTC修正后) |
| 六爻 | ✅ | 风雷益→天雷无妄,六亲全部正确 |
| 奇门 | ✅ | 阳遁6局,时干庚,值符戊 |
| 大六壬 | ✅ | 月将传送(申),三传辰午申 |
| 太乙 | ✅ | 坤二宫,积年4702 |
| 姓名学 | 偏旁笔画已修正,但STROKE_MAP中大量简化字仍需逐步迁移到康熙标准 |
- STROKE_MAP全面迁移到康熙字典笔画(当前仅修正了偏旁特殊笔画)
- 姓名学三才配置表补全(当前约66/125种组合)
- LLM客户端401错误(需配置有效API key)
- 大六壬三传算法需完善(当前用贼克法简化)
- 奇门遁甲八门/九星/八神需与天盘地盘联动
- 紫微斗数大限/流年推演功能
-
六爻六神表庚辛排列错误 (
engine/liuyao_engine.py)- 问题:庚辛日的六神从螣蛇开始,应从白虎开始
- 修正:庚辛 →
['白虎', '玄武', '青龙', '朱雀', '勾陈', '螣蛇'] - 影响:所有庚辛日起卦的六神排列全部错误
-
六爻动爻未标记 (
engine/liuyao_engine.py)- 问题:
_najia_zhuanggua()返回的6爻中is_dong全部为False - 修正:在
analyze()中设置yao_list[dong_yao-1]['is_dong'] = True并切换阴阳 - 影响:前端无法显示哪一爻是动爻
- 问题:
-
六爻世应未标记 (
engine/liuyao_engine.py)- 问题:计算了
shi_pos和ying_pos但未标记到yao_list的is_shi/is_ying字段 - 修正:在
analyze()中标记世应到本卦和变卦的 yao_list - 影响:前端无法显示世爻和应爻位置
- 问题:计算了
-
大六壬贵人顺逆未区分阴阳日 (
engine/liuren_engine.py)- 问题:
_pai_tian_jiang()只做顺布,未区分日干阴阳 - 修正:阳日(甲丙戊庚壬)顺布,阴日(乙丁己辛癸)逆布;巳亥反向
- 影响:所有阴日起的六壬天将排列全部错误
- 问题:
-
API缺失关键字段 (
api/routes.py)- 紫微缺
shen_gong、gender字段 - 奇门缺
time_gan、zhi_shi字段 - 八字缺
wuxing_score字段
- 紫微缺
-
八字五行得分计算 (
engine/bazi_engine.py,engine/udm.py,engine/base.py)- 新增
_calc_wuxing_score()方法:天干本气1分、地支本气1分、中气0.5分、余气0.3分 - DestinyModel 新增
wuxing_score字段 - API 新增
wuxing_score返回
- 新增
-
姓名学三才配置补全 (
engine/xingming_engine.py)- 从25种配置扩展到66种,覆盖所有五行三才组合
- 修复"水-土-土"等配置显示"未知"的问题
-
太乙神数五福计算精确化 (
engine/taiyi_engine.py)- 太乙行宫:从每年移一宫修正为每三年移一宫
- 五福:每个星用独立公式计算,不再共用同一基数
-
前端五行得分可视化 (
frontend/static/css/style.css,frontend/index.html)- 新增五行得分5色柱状图(木绿/火红/土金/金银/水蓝)
- 新增六爻动爻/世应彩色标记样式
- 移动端响应式适配
-
前端六爻标记增强 (
frontend/index.html)- 动爻用脉冲金色标记
- 世爻用金色标记、应爻用紫色标记
- 动爻行高亮显示
| 术法 | 验证状态 | 备注 |
|---|---|---|
| 八字 | ✅ | 乙酉壬午甲子庚午,与lunar-python一致 |
| 紫微 | ✅ | 命宫子、火六局,与iztro-py一致 |
| 占星 | ✅ | 太阳双子18°、月亮巨蟹13°,与pyswisseph一致 |
| 六爻 | ✅ | 风雷益→天雷无妄,动爻/世应标记正确 |
| 奇门 | ✅ | 阳遁6局,时干庚 |
| 大六壬 | ✅ | 月将传送(申),四课正确 |
| 太乙 | ✅ | 坤二宫,积年4702 |
| 姓名学 | ✅ | 三才配置正确识别 |
- LLM客户端401错误(需配置有效API key)
- 大六壬三传算法需完善(当前用贼克法简化)
- 奇门遁甲八门/九星/八神需与天盘地盘联动
- 紫微斗数大限/流年推演功能
- v2.0.7: 前端暗色主题 + 七术排盘 + 辩论台
- v2.0.6: 108视角群体智能引擎
- v2.0.5: 交叉验证引擎
- v2.0.4: 奇门遁甲 + 大六壬 + 太乙神数引擎
- v2.0.3: 紫微斗数引擎
- v2.0.2: 六爻纳甲引擎
- v2.0.1: 八字引擎 + 占星引擎
- v2.0.0: 项目初始化