Compare commits

...
3 changed files with 128 additions and 0 deletions
+14
View File
@@ -24987,3 +24987,17 @@
- 防复发:校验全部静态阻塞项都有原因码。用原生引擎验证公开盘边界两侧的分盘上升点并回归内部单号清理。
- 关联记录:#201、#192、BUG-1846、BUG-1844。
- 修复版本:`codex/reading-facts-v3-20261112`。
## BUG-1849 | 个人报告 Mudda 表、技法审计和上升行暴露内部展示口径
- 状态:blocked(待确认上升行占位符含义)。
- 首次发现 / 最近更新:2026-11-12 / 2026-11-12。
- 影响面:中英文个人报告的 Mudda 区间与年度表、Strength Layers、行星表和技法审计。
- 现象:区间天数小数过长,说明出现内部字段名,部分表头和审计状态直接显示工程键,上升行不适用的栏位使用缺值占位。
- 触发条件:生成包含 Mudda 区间、技法审计及上升行的个人报告。
- 已确认:报告的中英文阅读说明将 `—` 定义为缺数据或核对受限。任务书第 6 项的这些上升栏位属于不适用,直接使用同一符号会与该说明冲突。
- 验证:定位两处上升行和双语阅读说明,报告开篇补充测试通过。产品口径确认后再验证渲染行为。
- 防复发计划:用公开样例回归中英文报告的区间、后续年表、审计及上升行,保留既有断言的验证范围。
- 关联记录:#204、BUG-1092、BUG-1840、BUG-1843、BUG-1844。
- 修复版本:待定。
@@ -0,0 +1,10 @@
# 个人报告措辞修订 · 2026-11-12
Gitea #204,BUG-1849。按 Claude 评论 42071 认领。任务书位于任务分支首提交 `ca64e7b5c`,staging 基线为 `017e650fdafac4a841487dbba4aca803c761dad8`。
## 待拍板
- 任务书第 6 项将上升行的 R/C、速度、力量比和分主列为不适用,并要求在 `—` 的含义与不适用冲突时停下来。
- `scripts/pl9_reader_export.py` 在原始位置表与主星和状态表生成上升行。`scripts/report_render/opening_guide.py::reading_guide` 把 `—` 定义为「缺数据或核对受限」,英文为 “missing data or a verification limit”。两种语言的个人报告均由 `scripts/pl9_full_data_export.py` 插入该说明。
- 若直接将这些格改为 `—`,读者会按现有说明理解为数据缺失或核对受限。请确认是否允许为上升行在报告说明中明确该符号的特例,或指定单独的不适用显示。
- `tests/test_report_opening_supplement.py` 的 3 项测试通过。已记录冲突,等待确认后实施并跑任务书要求的定向回归、报告套件与 Python 快速门禁。
@@ -0,0 +1,104 @@
# TASK:个人报告几处露出的原始字段和格式问题(2026-11-12)
- Gitea:#204
- 分支:`codex/report-wording-fixes-20261112`(基于 staging `017e650fdafac4a841487dbba4aca803c761dad8`)
- Bug 编号:BUG-1849。开工时核对 `docs/BUG_HISTORY.md` 末尾;若已被占用,顺延,并在 PROGRESS 写明。
- 负责验收:Claude(jyotisha-de)
不得自行写“产品决定/裁定”;任务书没写的取舍一律选需拍板。
不得修改或删除既有断言来让测试通过;确需修改必须写原值/新值/原因,并在 PROGRESS 里逐条列出。
## 背景
2026-11-12,Claude 用 `tests/public_chart_reports.py` 的第一张公开名人盘渲染了中英文个人报告(`public_chart_reports(PUBLIC_REPORT_CASES[0])`),看到下面几处问题。它们都在报告渲染层,引擎的值本身没有错。
| # | 版本 | 现在显示 | 位置 |
|---|---|---|---|
| 1 | 中、英 | Mudda 区间小表「本报告覆盖区间」一行写 `365.2555787037037 天` | `scripts/pl9_reader_export.py::_mudda_coverage_lines`,`coverage.get('days')` |
| 2 | 中 | 区间表下方一句:`报告覆盖区间视图(本次真实返照 → 下一次真实返照);完整原始时间线见 raw_periods` | 同一函数,`periods_view.label`。英文版用的是 `label_en` |
| 3 | 中 | 跨返照那句 `……(原始计算延伸至2027-02-27T20:28:43)` 句末没有句号 | 同一函数,`MUDDA_CROSSING_TEXT` |
| 4 | 中 | 第二年及以后的年度表里,Mudda 表头是英文键:`balance_profile \| lord \| start \| end \| boundary_status` | `pl9_reader_export.py` 渲染 `annual_pack` 的 `table_key == 'mudda_rows'` 那段(约 :3240) |
| 5 | 中 | 「Strength Layers」审计行结尾是 `Vimsopaka status=良好。` | 技法审计表 Strength Layers 一行的组装处,自己定位 |
| 6 | 中、英 | 行星表和主星表里,**上升**一行的「R/C」「速度」「力量比」「分主」是 `未列` / `not listed` | 行星表、行星主星与状态表的组装处,自己定位 |
| 7 | 英 | 技法审计表的 Status 列写成 `calculation: executed; interpretation: primary` | 英文版审计表。中文版同一格写的是「计算已执行,解读主要依据」 |
## 要做的
1. **天数**:保留 4 位小数,中英文都改,例如 `365.2556 天` / `365.2556 days`。表里其他数值不动。
2. **`raw_periods`**:用户能看到的文字里不出现字段名。
- 中文改为:`报告覆盖区间视图(本次真实返照 → 下一次真实返照);完整原始时间线见上表「原始完整时间线」一行`;
- 英文改为与之对应的一句。
- 在报告层替换,不改引擎和 `scripts/tajika_mudda.py`。
3. **句号**:中文跨返照句末补「。」。在报告层补,`consultation_native_layers.py` 是冻结文件,不改。
4. **英文表头**:中文版第二年及以后的 Mudda 表,表头改用第一年那张表的中文表头:`余额口径 | 主星 | 开始 | 结束 | 边界口径`。
- 单元格里的枚举值,用第一年那张表现成的映射显示。
- 英文版不变。
- 别的 `annual_pack` 表如果在中文版里也露出英文键,**列进 PROGRESS,本单不改**。
5. **Vimsopaka**:去掉 `status=良好` 这类等级词。
- 改为写出每颗行星的 Vimsopaka 原始值,取值与报告 Vimsopaka 表相同、单位相同;
- 如果拿不到原始值,就整段去掉,不写任何等级词。
- 英文版同样处理。
6. **上升行**:上升点没有逆行、速度、力量比和分主。
- 这几格改为 `—`,中英文相同,只改上升一行;
- 表格说明里已经写了 `—` 表示“缺数据或核验限制”。若这个含义和“不适用”冲突,就选需拍板,不要另造新词。
7. **英文 Status 列**:按中文版的映射,一一对应写英文短语。
- 先在 PROGRESS 列出中文全部取值和你拟的英文译法,再改代码;
- 只改展示文字,不改状态值本身。
## 要改的文件
- `scripts/pl9_reader_export.py`
- 技法审计表与行星表的组装文件(自己定位,在 PROGRESS 写明)
- 新建 `tests/test_report_wording_fixes_20261112.py`
- `docs/BUG_HISTORY.md`:只在末尾追加一条。
- `docs/tasks/PROGRESS-report-wording-fixes-20261112.md`
## 不要碰
- 冻结文件:
- `scripts/jyotish_engine.py`
- `scripts/jyotish_api_server.py`
- `scripts/yoga_engine.py`
- `scripts/consultation_native_layers.py`
- `scripts/tajika_mudda.py`
- `scripts/shadbala*.py`
- `scripts/narayana_*.py`
- `scripts/report_render/reading_facts.py`、`frontend/src/lib/personal-report-reading*.ts`、`frontend/src/mastra/personal-report-reading.ts`:Claude 在 #192 里改。
- `references/**`
## 验收标准(写进新测试)
用两张公开名人盘渲染中英文报告,断言下面 7 条:
1. 不再出现 `\d+\.\d{5,} 天` 和 `\d+\.\d{5,} days`。
2. 用户可见文字里没有 `raw_periods`。
3. 跨返照句以「。」结尾。
4. 中文版里没有 `| balance_profile | lord |` 这样的表头。
5. 没有 `Vimsopaka status=`。
6. 上升行的 R/C 和速度两格是 `—`。
7. 英文版没有 `calculation: `、`; interpretation: ` 这种写法。
另外,`tests/test_report_*` 里现有的全部测试都要通过。
## 自测命令(在仓库根目录)
```
python -m pytest -q tests/test_report_wording_fixes_20261112.py
python scripts/run_quality_gate.py --profile quick --skip-frontend-runtime
```
## 进度记录
写在 `docs/tasks/PROGRESS-report-wording-fixes-20261112.md`,内容包括:
- 每一处改在哪里;
- 第 7 条的中英对照表;
- 第 4 条发现的其他英文键表;
- 测试结果,以及在 staging 上也复现的基线失败。
## 何时停下来选“需拍板”
- 某一处只能改冻结文件才能修好。
- 第 6 条里,`—` 的现有含义和“不适用”冲突。
- 第 5 条拿不到 Vimsopaka 原始值,而去掉整段会让这一行变空。