Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
5.1 KiB
TASK · 报告读者版修复单:年运 Year Lord / Muntha 全是「-」+ 投影误删 Bhava Bala(2026-09-25)
基线
origin/staging = fabe0114(已部署)。分支codex/report-reader-main-fix-20260925。与 people-archive-p1-fix 不交叉(本单只动scripts/与report-public-projection.ts),可并行。- Claude 09-25 验收
3c2f7bd5:读者版导入与上游23b9609e逐函数一致;虚构生日(1990-01-01 12:00 北京)生成读者版 1929 行,D5 全部泄漏词 0 命中;KP 与三项 transit 在type('Args')参数下不再 blocked;birth_asc_sign_idx已补,太阳回归 Muntha 随年份变化(双鱼 → 白羊 → 金牛)、Year Lord 木星 → 火星 → 金星;Python 定向 183 条全绿。以下是未通过项。
事故实证
P1-1 · 两边一致也判"冲突":scripts/annual_tajika_pack.py _annual_comparable_value("year_lord"):太阳回归侧给 {year_lord: Jupiter, year_lord_sign: Pisces},tajika 侧给 {year_lord: Jupiter, year_lord_sign: None}(它的字典里是 muntha_sign 而不是 year_lord_sign)→ 比较失败 → 2026 / 2027 / 2028 全是 status: conflict(木星 / 木星、火星 / 火星、金星 / 金星)。参考版仍印「Year Lord 仍要带着分歧标签阅读」。该函数原样来自上游,上游有同样弱点;单测只用键集相同的合成字典,所以通过。
P1-2 · 读者版年运章 Year Lord / Muntha 全是「-」:读者版读 annual.year_lord.data.{year_lord, muntha_sign, selection_basis};year_lord 是没有 data 的冲突字典 → Varshesha、选取依据、年度上升、Muntha 星座每年都是「-」,未来年份 Varshapravesha 也是「-」(排查实测与入库 golden frontend/tests/fixtures/report-reader-main-fictional.json 一致)。即使修好冲突,data 取太阳回归值也没有 muntha_sign。上游用 tajika.calc_panchadhikari_year_lord 填这些字段,本仓从未同步。Python 测试只查表头里有 "Year Lord" "Muntha" 字样。用户能看到的年运结论仍不可用,docs/testing/report-reader-main-20260924.md 第 3 条无法通过。
P2-1 · 投影误删真实章节:projectOrdinaryReportMarkdown 作用于读者版 golden 时整段删掉 ### Bhava Bala 十二宫力量(标题 + 12 行表,15 行):旧 tableIsInternal 把表头 Score 当内部词,新 adjacentInternalTableIndexes 连前面的标题一起删。D5 只要求删说明段,不删标题;且标题后若还有正常表格会挂到错误章节下。
P2-2 新泄漏规则(D5 词表 + 12 个英文单词规则)同时作用于 fenceIsPublic、isAllowlistedSvg 与 projectChatExportMarkdown,会删掉聊天导出里的英文行。
P3 读者版五要素表仍露原始键(overall_score、吉性_count、total_elements);姓名行显示「姓名:-」。
决策记录
- D1
_annual_comparable_value("year_lord")只比较year_lord(行星);星座字段一侧缺失时不参与比较。在本仓注明与上游的差异与原因。 - D2 读者版年运表数据来源:Varshesha = 太阳回归侧
year_lord(D1 后两侧一致时取之,冲突时标注两者),Muntha 星座 =muntha.data.muntha_sign,年度上升 = 太阳回归上升;优先从上游同步calc_panchadhikari_year_lord(整段引入并注明来源提交),同步不可行时用本地已有字段拼,不得编造。 - D3 投影:
Score等通用英文表头不作为内部判据;删内部表时只删紧邻说明段,不删标题。 - D4 新泄漏规则只用于报告正文投影,不作用于
projectChatExportMarkdown(聊天导出沿用原规则)。 - D5 五要素表原始键映射为中文或删除该列;姓名缺失时整行不输出。
硬红线
- 不改 Ayanamsa / 宫制 / 大运口径;不改上游算法(D1 的比较口径除外,必须注明)。
- golden 必须由真实引擎重新生成(虚构生日),新增断言:读者版年运章至少两年的 Varshesha 与 Muntha 单元格不是「-」且彼此不同;读者版 golden 投影后仍含
Bhava Bala标题与表。 - 读者版投影后
ordinaryOutputLeaks = []不得弱化。 jyotish_api_server.py不增长;Python 快速门与定向测试必跑;前端全量失败名单与基线逐条一致(Node 22 + Linux)。
任务分解
- T1 比较口径(D1),单测用真实引擎两侧字典。
- T2 读者版年运表数据(D2),含是否同步上游
calc_panchadhikari_year_lord的决定写进 PROGRESS。 - T3 投影(D3、D4)与五要素 / 姓名行(D5)。
- T4 记录:BUG-1028 补"读者可见结果未修"并关联本单;BUG-1026 补投影误删;PROGRESS;更新真机清单。
开工前置命令
git fetch origin --prune
python3 scripts/pre_work_check.py --remote-timeout 8 --command-timeout 45
git worktree add -b codex/report-reader-main-fix-20260925 .worktrees/report-reader-main-fix-20260925 origin/staging
cd .worktrees/report-reader-main-fix-20260925
python3 -m pytest -q tests/test_report_reader_main.py tests/test_annual_tajika_pack.py
BUG 编号
沿用 BUG-1026 / 1028,不新开号。