Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
4.5 KiB
4.5 KiB
进度:报告开篇解读 + 对话口吻 C1(issue #113,2026-10-27)
- 任务书:
docs/tasks/TASK-voice-reading-20261027.md - 分支:
codex/voice-reading-20261027(基线origin/staging9ca933968) - 执行:Claude(直接执行模式)。BUG-1460(C1)、BUG-1461(R1);staging 合入 #111 后最大号 1459,编号即为最终号。
做了什么
| 项 | 状态 | 说明 |
|---|---|---|
| C1 对话 | 完成 | CHART_REASON_RULE / HOUSE_LIFE_AREA_RULE / TIMING_FOCUS_RULE;示例改写;读心第 2 条收窄;VOICE 第七条原则补充 |
| R1-1 事实包 | 完成 | scripts/report_render/reading_facts.py;professional_report_reference 接 include_reading_facts(只在 full_data + markdown),开关进缓存键,失败只返回 gaps |
| R1-2 写作 | 完成 | lib/personal-report-reading.ts(提示词、重试、超时 120 s)+ mastra/personal-report-reading.ts(结构化输出,与合盘写作器同一模式) |
| R1-3 校验 | 完成 | 外文、字段名、禁词(宿命 / 病名 / 投资 / 内部说法 / 北交点)、节数与顺序、长度、每节免责 ≤1 |
| R1-4 存与读 | 完成 | 存进计算快照 v2 的 reading / readingUnavailable(不改表);读接口返回 reading,与英文版共用一次快照读取;页面在导读之后、引擎正文之前渲染,加「计算依据」,目录首条「解读」;英文不显示 |
| R1-5 记账 | 完成 | 报告用量取解读调用的 token,没有解读时为 0;单价结算沿用 completeUsage |
| R1-6 文档 | 完成 | DESIGN、VOICE、CHANGELOG、BUG_HISTORY、BLOCKED、真机清单 |
改动的既有断言(三栏也写在测试里)
| 文件 | 原值 | 新值 | 原因 |
|---|---|---|---|
consultation-voice-contract.test.ts |
「然后在括号里给出撑住这段判断的盘上依据」「每段最多一处括号」 | 依据写进正文「因为……」,宫位带领域,时间最多三件;旧句不得出现 | issue #113 C1 |
| 同上 | 示例标签「括号里是依据的占位」;Bad 起点「多对象题」 | 「「因为」后面的依据是占位」;先是新 Bad「段尾括号复述」 | issue #113 C1 |
| 同上 | 父母例括号 (母亲这条线没有受冲;…)、事业例括号 (木星行运 10 宫;…) |
依据进正文,宫位带领域 | issue #113 C1 |
| 同上 | 「用户自己的心全篇最多读一句」 | 只在情绪、关系感受题读;结尾不猜动机 | issue #113 C1 |
| 同上 | 是非题例 不是。(母亲这条线没有受冲;4 宫主落 10 宫)… |
不是。管母亲的 4 宫(母亲、家和住处)这条线没有受冲… |
issue #113 C1 |
consult-no-presupposition-20261001.test.ts |
受冲规则「括号里只写…」;每段的判断后在括号里给…;是非题例 |
「依据只写…用白话写进句子」;段规则后接三条新常量;是非题例新写法 | issue #113 C1 |
consult-plain-speech-20261006.test.ts |
「括号里的依据最多两条」「括号里只写最能说明问题的一两条」 | 「说出来的依据最多两条」「依据只写最能说明问题的一两条」 | issue #113 C1 |
consult-upstream-functional-v2-20261002.test.ts |
妈妈段例括号 | 「因为管母亲的 4 宫…没有受冲」 | issue #113 C1 |
personal-report-worker.test.ts |
/inputTokens: 0/ |
/inputTokens: generated\.usage\?\.inputTokens \?\? 0/ |
R1 解读按实际 token 记账 |
personal-report-view.test.ts |
<ReportToc headings={outline.headings} …/> |
headings={tocHeadings},只在有解读时多一条「解读」 |
R1 解读进目录 |
环境缺口
见 BLOCKED.md 同名条目:无模型 key,真实解读输出和名人生平回测都没跑。
验收数字(执行方自测,合入 origin/staging 8e05e4114 之后;Claude 另行复验)
| 检查 | 结果 |
|---|---|
tsc --noEmit |
0 错 |
npm run lint |
0 error(122 条原有警告) |
npm test 全量 |
5233 项,失败 25,与 staging 已知名单逐条相同 |
next build |
/ 仍 Static;首屏 gzip 699,756(合入前在 9ca933968 上为 727,789,staging 727,249,+0.07%;合入 #111 后的 staging 基线待复验时实测) |
| Python | test_report_reading_facts.py 等报告 / 同源卡 / 增长合同 / 隐私 / 脚本数预算 44 项通过;合入前 tests/test_report_*.py 全量通过 |
快速门 --skip-frontend-runtime |
通过(初版把新模块放在 scripts/ 根目录,被脚本数预算拦下,已移到 scripts/report_render/reading_facts.py) |