Compare commits

...
Author SHA1 Message Date
ClaudeandClaude Opus 5.5 2ebbc8080f docs(tasks): brief for #243 reading-computed-fallback
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXozsiu43ob7B8UZCmDM
2026-11-13 10:21:26 +08:00
@@ -0,0 +1,38 @@
# TASK:最后仍不通过的节,改用计算直接生成的内容;页面不再出现「没有通过核对」(2026-11-13)
- Gitea:#243
- 分支:`codex/reading-computed-fallback-20261113`。**开工条件:#242(重绑与重写)合入 staging**,开工前先 rebase。
- Bug 编号:BUG-1877
- 验收:Claude(jyotisha-e6)
不得自行写「产品决定/裁定」,任务书没写到的取舍一律选需拍板。不得修改或删除既有断言来让测试通过;确需修改的,写明原值/新值/原因。
## 产品决定(产品负责人 2026-11-13)
一节经过系统修正标注、模型重写一次之后仍不通过时,页面上这一节显示**由计算直接生成的内容**,不再写「这一节没有通过数据核对」,也不写原因。原因只留在后台的 `transform_log` 里。「依据与边界」被拦时生成的依据清单(#218),也并入这套做法。
## 要做的
1. **每节的计算兜底**:放在新文件 `frontend/src/lib/personal-report-reading-fallback.ts`,只读事实包,不调用模型。每节 2–4 段,句子固定,只陈述盘面事实;每段按所属结论类型的上限标等级(C 或 D)。
- 性格:上升星座与命宫星宿;命主星落宫与尊贵;月亮落宫与尊贵;功能吉星、凶星(按 `functional.functional_profile`)。
- 事业:第十宫星座、宫主落宫与尊贵;D10 上升(D10 在边界上时只写「出生时间误差内会换座,暂不判断」);A10、AmK。
- 财富:第二宫、第十一宫的星座、宫主落宫;D2 上升(处理同上);第二宫、第十一宫的 SAV 分数(只报分数,不写强弱)。
- 感情:第七宫星座、宫主落宫与尊贵;D9 上升(处理同上);UL、DK。
- 健康:第六、第八、第十二宫的宫主落宫;Badhaka 宫和 Badhaka 宫主(标注「产品计算,待占星师复核」);不写病症。
- 现在这几年:Vimshottari 当前的大运、小运、细运起止;Narayana 当前段(标注「参数敏感,只作条件窗口」)。
- 总评:取性格节第一段,再加各领域第一句。
- 几条建议:**整节不显示**。建议没法由计算生成;这节失败时,目录里也去掉它。
- 依据与边界:沿用 #218 的依据清单。
文案风格:短句,中文,术语第一次出现时用半句话说明它看什么,与模型稿保持一致。
2. **存储**:兜底的节记为 `status: "computed"`,段落带 `source: "computed"` 和 `grade`。存储版本加一,旧版本照常读取。
3. **页面与导出**:`computed` 的节和普通的节显示方式一致,段落下面照样有等级行。删去对用户显示的 `READING_SECTION_WITHHELD_TEXT` 和 `WITHHELD_REASONS`;旧存储里已有的 withheld 节,读取时也改用兜底生成(读取时手里有事实包就生成,没有就整节不显示)。
4. **验收工具**:`postcheck.json` 统计兜底节数。
## 验收
1. 合成事实包:每节都能生成兜底;D10、D2、D9 在边界上时,相应句子写成「暂不判断」;健康节没有病症词(跑一遍 #218 的 health_outcome 检查,必须通过)。
2. 页面和 MD 导出里,不再出现「没有通过数据核对」,也不出现任何退回原因。
3. 旧 v3/v4 存储里的 withheld 节能正常显示(兜底或不显示)。
4. 原有测试全部通过;tsc 无错误、eslint 0 个错误,Python 快速门通过。
5. 截图(手机宽度):兜底的事业节和普通节放在一起的效果,附在 PR 里。