Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
55 lines
5.1 KiB
Markdown
55 lines
5.1 KiB
Markdown
# 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 五要素表原始键映射为中文或删除该列;姓名缺失时整行不输出。
|
||
|
||
## 硬红线
|
||
|
||
1. 不改 Ayanamsa / 宫制 / 大运口径;不改上游算法(D1 的比较口径除外,必须注明)。
|
||
2. golden 必须由真实引擎重新生成(虚构生日),新增断言:读者版年运章至少两年的 Varshesha 与 Muntha 单元格**不是「-」且彼此不同**;读者版 golden 投影后仍含 `Bhava Bala` 标题与表。
|
||
3. 读者版投影后 `ordinaryOutputLeaks = []` 不得弱化。
|
||
4. `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;更新真机清单。
|
||
|
||
## 开工前置命令
|
||
|
||
```bash
|
||
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,不新开号。
|