Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5183afcc2b |
@@ -0,0 +1,107 @@
|
||||
# TASK:报告解读复查补三项机械检查(2026-11-12)
|
||||
|
||||
- Gitea:#207
|
||||
- 分支:`codex/reading-postcheck-gaps-20261112`(基于 staging `1ba0364a7a8c0f964c3e21c21cb304aaa1899375`)
|
||||
- Bug 编号:BUG-1854。开工时核对 `docs/BUG_HISTORY.md` 末尾;若已被占用,顺延,并在 PROGRESS 写明。
|
||||
- 负责验收:Claude(jyotisha-de)
|
||||
|
||||
不得自行写“产品决定/裁定”;任务书没写的取舍一律选需拍板。
|
||||
|
||||
不得修改或删除既有断言来让测试通过;确需修改必须写原值/新值/原因,并在 PROGRESS 里逐条列出。
|
||||
|
||||
## 背景
|
||||
|
||||
个人报告的「解读」由模型写,写完后由 `frontend/src/lib/personal-report-reading.ts::acceptReportReadingDraft` 逐节复查。
|
||||
|
||||
- 复查不通过的那一节,页面上显示「这一节没有通过数据核对,暂不显示。」,其他节照常显示。
|
||||
- 每一节由 `checkSection` 检查,退回原因记在 `ReadingRejection` 类型里。
|
||||
- 模型的输入是事实包 `report-reading-facts-v3`,由 `scripts/report_render/reading_facts.py` 生成。
|
||||
|
||||
占星师 2026-11-12 审核了一份样稿(她的仓库 `8aaf6099`,`handoff/2026-11-12/preset_q3/README.md` 第六、七节),列出了一批必须覆盖的反例。其中三条目前只在提示词里要求,复查不拦。#192 的验收材料把这三条标成了「部分(只靠提示)」:
|
||||
|
||||
1. **已故人物不给当前建议。** 事实包里 `report_mode = "historical_replay"`、`current_advice_allowed = false` 时,正文不应写对当事人现在的建议。一份样稿在健康节末尾写了「若有实际问题应依现实就医评估」。
|
||||
2. **Double Transit 不推到别的领域。** `transits.double_transit.checked_houses` 只列了被检测的宫位,例如 `[7]`。样稿曾把第 7 宫的检测结果写进健康和整体应期。
|
||||
3. **「形成」和「未验证」不混用。** 样稿曾写「Yoga 成立条件要等现实事件核验」,把“没有经过现实验证”写成了“没有形成”。
|
||||
|
||||
## 要改的文件
|
||||
|
||||
- `frontend/src/lib/personal-report-reading.ts`:只改复查部分,即 `checkSection`、`ReadingRejection`,以及新加的辅助函数。
|
||||
- 新建 `frontend/tests/report-reading-postcheck-gaps-20261112.test.ts`
|
||||
- `docs/BUG_HISTORY.md`:只在末尾追加一条。
|
||||
- `docs/tasks/PROGRESS-reading-postcheck-gaps-20261112.md`
|
||||
|
||||
## 要做的
|
||||
|
||||
每一条新检查不通过时,只退那一节,原因写进 `ReadingRejection`。
|
||||
|
||||
### 1. `current_advice_in_replay`
|
||||
|
||||
只在事实包 `current_advice_allowed === false` 时启用。
|
||||
|
||||
- 「几条建议」「健康」「现在这几年」三节里,任何一段命中下面任一条,就退回这一节:
|
||||
- 第二人称「你」「您」;
|
||||
- 建议性措辞:「建议」「应当」「应该」「应依」「最好」「不妨」「可以考虑」「宜」「不宜」「就医」「多休息」「留意」「注意」。
|
||||
- 例外:「宜」「不宜」「注意」「留意」出现在引号内的书名、技法名里时不算。如果没法可靠识别这种情况,就在 PROGRESS 列出误伤的例子,选需拍板。
|
||||
- `current_advice_allowed` 为 `true` 或缺失时,这条检查不运行。
|
||||
|
||||
### 2. `double_transit_scope`
|
||||
|
||||
- 先列出各节对应的宫位:
|
||||
- 事业:10;
|
||||
- 财富:2、11;
|
||||
- 感情:7;
|
||||
- 健康:1、6、8、12;
|
||||
- 性格:1。
|
||||
- 某一节的段落提到「Double Transit」「双星过境」「双重行运」「双行运」中任何一个,而这一节的宫位和 `checked_houses` 没有交集,就退回这一节。
|
||||
- 总评、现在这几年、依据与边界三节不在上面的列表里,不做这项检查。
|
||||
- `checked_houses` 为空或缺失时,凡是提到双行运又不在这三节的段落,一律退回。
|
||||
|
||||
### 3. `yoga_status_mismatch`
|
||||
|
||||
事实包 `yogas[]` 每一行有 `name`、`name_cn` 和 `state`。`state` 取 `candidate`、`formed` 等值,具体有哪些自己核对,列进 PROGRESS。
|
||||
|
||||
满足以下任一条件,就退回那一节:
|
||||
|
||||
1. 段落里出现某一行的 `name_cn`,或者 `name` 去掉 `Yoga` 后的主体词,同一句里又出现「未形成」「没有形成」「不成立」「未成立」「尚未成立」,而这一行的 `state` 是形成类的状态。
|
||||
2. 段落里出现「等现实」「要等现实事件」「需现实验证」「经现实核验才」中任何一个,同一句里又出现「成立」或「形成」。
|
||||
|
||||
「句」以「。」「;」「!」「?」分割。
|
||||
|
||||
## 不要碰
|
||||
|
||||
- `frontend/src/lib/personal-report-reading.ts` 里的现有检查和 `writeReportReading`,只新增代码。
|
||||
- `references/**`,包括 `references/product_runtime_contract.md`:提示词不改。
|
||||
- `scripts/**`、冻结文件和其他前端文件。
|
||||
|
||||
## 验收标准(写进新测试)
|
||||
|
||||
1. 三条检查各有一个能触发的合成段落和一个不触发的合成段落。
|
||||
- 第 1 条还要测:同一段文字在 `current_advice_allowed: true` 时不触发。
|
||||
- 第 2 条还要测:`checked_houses: [7]` 时,感情节可以提到双行运,健康节提到就退回。
|
||||
- 第 3 条还要测:`state` 为 `formed` 的瑜伽被写成「不成立」时退回;`candidate` 的瑜伽写成「候选、尚未确认」时不退回。
|
||||
2. 每条检查只退回所在的那一节,其他节保持 `status: "ok"`。
|
||||
3. 现有的 `frontend/tests/report-reading-20261027.test.tsx`、`report-md-export-reading-20261111.test.ts`、`report-no-web-wording-20261109.test.ts` 全部通过。
|
||||
4. 测试里的段落全部用合成文字,不使用真实模型的原文。
|
||||
|
||||
## 自测命令(在 frontend 目录)
|
||||
|
||||
```
|
||||
npx tsx --test tests/report-reading-postcheck-gaps-20261112.test.ts tests/report-reading-20261027.test.tsx tests/report-md-export-reading-20261111.test.ts tests/report-no-web-wording-20261109.test.ts
|
||||
npx tsc --noEmit -p .
|
||||
npx eslint .
|
||||
```
|
||||
|
||||
## 进度记录
|
||||
|
||||
写在 `docs/tasks/PROGRESS-reading-postcheck-gaps-20261112.md`,内容包括:
|
||||
|
||||
- 每条检查的规则和词表;
|
||||
- `yogas[].state` 实际有哪些取值;
|
||||
- 误伤风险,以及你测过的边界例子;
|
||||
- 测试结果。
|
||||
|
||||
## 何时停下来选“需拍板”
|
||||
|
||||
- 第 1 条的词表误伤正常的历史回放写法,而且不放宽就无法避免。
|
||||
- `yogas[].state` 里分不清哪些是形成类的状态。
|
||||
- 需要改提示词、事实包或冻结文件才能完成。
|
||||
Reference in New Issue
Block a user