Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
152 lines
16 KiB
Markdown
152 lines
16 KiB
Markdown
# PROGRESS · 普通对话「先看受冲、再看旺弱」读法,补齐各领域清单,健康改口径(2026-10-01,三单之二)
|
||
|
||
- 任务书:`docs/tasks/TASK-consult-affliction-reading-20261001.md`(origin/staging `9b937c4a`)
|
||
- 执行:Claude fork 子代理(直接执行模式,产品授权);未推送
|
||
- 分支 / worktree:`codex/consult-affliction-reading-20261001` / `.worktrees/consult-affliction-reading-20261001`
|
||
- 基线:第一单分支 `codex/consult-card-affliction-data-20261001` `4c888902`(已验收,尚未上 staging),合入 `origin/staging` `78823e94`(只多一个任务书文档提交,无冲突)→ 合并提交 `509c88c4`。全部门禁的基线数字都在 `509c88c4` 的独立检出上实测。
|
||
- BUG 编号:开工核对最大 BUG-1159(第一单用到 1159);本单用 1160~1163,1164~1166 未用。
|
||
- 代码提交:`40179650`;文档另一提交。
|
||
|
||
## 环境
|
||
|
||
- Node 22.14(`/exec-daemon/node`);`frontend/node_modules` 用 `cp -al` 硬链接自第一单 worktree(真目录,已 gitignore,未提交)。
|
||
- 无 Docker:24 条数据库 / 部署套件失败,与基线逐条同名。
|
||
- 无模型凭据:本单不跑模型,读法效果由第三单名人回测验收。
|
||
- 未改 Python、`skills/**`、数据库结构、`jyotish_api_server.py`。
|
||
|
||
## 交付门
|
||
|
||
| 项 | 基线 `509c88c4` | 本分支 |
|
||
| --- | --- | --- |
|
||
| `tsc --noEmit` | 0 错 | 0 错 |
|
||
| `npm run lint` | 0 error / 126 warning | 0 error / 126 warning |
|
||
| `npm test`(Node 22) | 4,878(pass 4,813 / fail 24 / skip 41) | 4,884(pass 4,819 / fail 24 / skip 41) |
|
||
| 失败名单 | 24 条,数据库 / 部署类 | 与基线逐条同名(`diff` 无差) |
|
||
| 测试名单 | — | 新增 9、改名 3(下表),无删除 |
|
||
| `next build` | `/` ○ Static | `/` ○ Static |
|
||
| 首屏 gzip | 555,580 B(`index.html` 引用 26 个脚本 gzip-9 求和;与第一单的 29 个口径不同,基线同法实测) | 555,582 B(+2 B,+0.0004%) |
|
||
|
||
改名的 3 条测试(断言改动见下):「a route the skill declares no checklist for is reported…」→「…gets this product's own list, never another route's」;「health uses the skill's health-timing-strict checklist」→「health uses the consultation's Chinese health list in place of health-timing-strict」;「methodology names no strict checklist for parents or children…」→「methodology gives parents and children their own consultation lists after the shared reading」。
|
||
|
||
## 实现
|
||
|
||
| 任务 | 落点 |
|
||
| --- | --- |
|
||
| T1(BUG-1160) | `consultation-condensed-checklist.ts` 新增 `CONDENSED_SHARED_READING_TITLE`「通用读法 · 先看受冲」、`CONDENSED_SHARED_READING_LINES`(任务书六条 + 第 7 条「瑜伽只认 yogas.hits:hits 里的才是这张盘成立的格局;只在 names 里、没进 hits 的是待检规则,不得说成本人的格局。」)、`sharedConsultationReading()`;`consultationMethodologyForDomains` 在 `sections` 最前推一次(多领域同轮也只一次),其后才是 Shared mandatory baseline |
|
||
| T2(BUG-1161) | `CONSULTATION_CONDENSED_CHECKLISTS` 加 parents、children、education、migration、family、annual、general、health 八份(任务书定稿文本);`domainMethodology` 填本地名 `consult-<domain>`(注释写明来源是本任务书、不是路由);这八份的 `source` 为 `CONSULT_BRIEF_CHECKLIST_SOURCE`。健康在普通对话里不再发英文 health-timing-strict(报告面不变);时运保留英文路由 |
|
||
| T3(BUG-1162) | 事业、婚姻、财富各加一行(行数 6 / 8 / 6) |
|
||
| T4(BUG-1163) | `consultation-domain-registry.ts` health:`label: "健康"`,`aliases` 加 `身心压力`,`prompt` 改为「我的身体底子怎样,哪些方面要多留意?」,`claimBoundary`、`confidenceCap: "low"` 不变;`guided-jyotish-topics.ts` 无出生分钟问法改为「请从非医疗诊断的角度,帮我看看我的身体底子怎样,哪些方面要多留意。」;`git grep "身心压力" frontend/src` 只剩 alias 一处。`frontend/docs/VOICE.md` 领域名改「健康」并加健康口径一条。无视觉变化(只改文字标签与默认问法),`frontend/DESIGN.md` 不需改 |
|
||
| 提示词 | `frontend/src/mastra/index.ts` 方法说明句:讲明第一段「通用读法 · 先看受冲」是全领域共用、先于领域清单;列出哪些领域是本产品中文清单。写作形状、`product-voice.ts` 未动(第三单) |
|
||
| 测试 | 新文件 `frontend/tests/consult-affliction-reading-20261001.test.ts`(6 条):T1 位置与次数、阻塞项钉住、T2 每领域 `sections` 标题与来源、T3、硬红线 3(清单里每个小写字段名都必须是三张 golden 盘某张卡上的真实键)、T4 |
|
||
|
||
`scripts/research/` 里两个测量脚本的健康问题文本仍是旧问法,只是测量用的问题字符串,不在 `frontend/src`,未改。
|
||
|
||
## 字段名改写(硬红线 3:意思不变,只改到卡上真实位置)
|
||
|
||
| 位置 | 任务书原文 | 落地文本 | 原因 |
|
||
| --- | --- | --- | --- |
|
||
| T1 第 2 条 ① | 同宫(`conjunct_with`) | 同宫(星行 conjunct_with、宫行 occupants) | `conjunct_with` 只在行星行上;领域段宫位行用 `occupants` 列同宫星 |
|
||
| T1 第 2 条 ① | 被土星、火星照(`aspected_by`) | 原样(aspected_by) | 行星行与领域段宫位行都有 |
|
||
| T1 第 2 条 ③ | 本上升的功能凶星 | 本上升的功能凶星(functional_malefics,父母行 functional) | 卡上 `base.natal.functional_benefic_malefic.functional_malefics`;父母卡 `lord_rows` / `significator_rows` 每行带 `functional` |
|
||
| T1 第 2 条 ④ | 落陷或燃烧(`combust`) | 落陷(status)或燃烧(combust) | 落陷在行星行 `status`(如「落陷(Debilitated)」);`combust` 只在 true 时出现 |
|
||
| T1 第 7 条(新增) | — | 瑜伽只认 yogas.hits… | 第一单 BUG-1159:`names` 是领域包的规则候选,只有 `hits` 成立 |
|
||
| parents 第 1 条 | D12 同号宫及其宫主 | D12 同号宫及其宫主(roles.*.d12_house) | D12 同号宫与宫主在 `roles.mother/father.d12_house`(`house/sign/occupants/lord/lord_sign`) |
|
||
| parents 第 1 条 | `roles.father/mother` 的 `lord_rows`、`significator_rows` | 原样 | 字段存在 |
|
||
| education 第 3 条 | 卡上 `d9` 段和本命 `status` | 原样 | `base.natal.d9`、行星行 `status` 存在 |
|
||
| annual 第 2 条 | `saturn_from_moon_house` | 原样 | 在年运领域段 `slow_transits.saturn_from_moon_house` |
|
||
|
||
清单里没写字段名、但卡上本领域段没选中的宫(如迁居的 9 宫、家庭的 2、3 宫、婚姻 UL 的第 2 宫),模型可从 `base.natal.houses` 星座与行星行推出;未为此改卡。PiK 卡上不出(父亲没有 karaka 行),清单原文「卡上有才看」已覆盖。
|
||
|
||
## 改动的既有断言(原值 / 新值 / 原因)
|
||
|
||
| 文件 · 测试 | 原值 | 新值 | 原因 |
|
||
| --- | --- | --- | --- |
|
||
| `consultation-methodology.test.ts`「the route's own strict checklist…」 | 去掉 baseline 后领域段 = 1 | 去掉 baseline 与通用读法后领域段 = 1 | T1 通用读法不是领域清单 |
|
||
| 同文件 education 测试 | `domains_without_strict_checklist` = `["education"]` | `[]`,且学业段来源是本任务书 | 决策 D6 推翻「报缺不替代」(普通对话) |
|
||
| 同文件 health 测试 | 标题含 health-timing-strict | 不含;有 consult-health 段、来源本任务书、含「体质底子」 | 决策 D4/D5 |
|
||
| `consultation-domain-parents-children-20260927.test.ts` | parents / children 报缺;`sections[0]` = Shared mandatory baseline | 均为 `[]`;`sections[0]` = 通用读法,baseline 在 `sections[1]`(D7/D12 文字断言保留) | T1 + D6 |
|
||
| `consult-condensed-checklist-20260927.test.ts`「each condensed list is 5–8 lines」 | 全部清单 5–8 行;只有三份 | 三份仍 5–8 行;共 11 份、每份 2–8 行 | T2 定稿文本行数 2–6,不得凑行 |
|
||
| 同文件「other routes still quote the live skill…」 | health 段来源是 strict-workflow-router.md | 无 health-timing-strict 段;consult-health 段来源是本任务书 | D4/D5 |
|
||
| `consultation-domain-registry.test.ts` 无出生分钟问法 | 「…近期的身心压力和调整重点。」 | 「…我的身体底子怎样,哪些方面要多留意。」 | D4 |
|
||
|
||
三个 12,000 字符断言(`consult-evidence-card-20260927`、`consult-evidence-card-v2-20260927`、`consult-condensed-checklist-20260927`)一条未改。
|
||
|
||
## 字符预算与阻塞项(BLOCKED,待产品决定)
|
||
|
||
两条断言的口径(开工先核实):
|
||
|
||
- `consult-evidence-card-20260927`「model-visible size…」:`withoutMethod`(契约 + 卡,去掉 `methodology`)≤ 12,000 对全部领域;`total`(整个工具返回,含 `methodology`)≤ 12,000 只对 `methodHeavy` 以外的领域(`methodHeavy` = career / marriage / wealth),≤ 18,000 对全部。
|
||
- `consult-condensed-checklist-20260927`「size…」:`total`(含清单)≤ 12,000 对**全部 12 个领域**(annual / timing 用各自路由 golden)。
|
||
- 所以任务书「12,000 只算契约 + 卡」的假设不成立:清单在内。
|
||
|
||
通用读法作为一个 section 占 733 字符(JSON 序列化),年运清单 334。全部下发时实测:
|
||
|
||
| 盘 / 领域 | 本单之前 含清单 | 全部下发 | 上限 |
|
||
| --- | ---: | ---: | ---: |
|
||
| 泰勒 / annual | 11,918 | 12,979 | 12,000 |
|
||
| 乔布斯 / annual | 11,787 | 12,848 | 12,000 |
|
||
| 奥巴马 / annual | 11,537 | 12,598 | 12,000 |
|
||
| 泰勒 / timing | 11,523 | 12,257 | 12,000 |
|
||
| 奥巴马 / timing | 11,496 | 12,230 | 12,000 |
|
||
| 乔布斯 / timing | 11,474 | 12,208 | 12,000 |
|
||
|
||
按交代不改断言、不删清单行、不压缩定稿文本:`CONSULT_READING_BUDGET_BLOCKED = {annual, timing}`(`consultation-methodology.ts`,注释写明数字)让**只含这两个领域**的轮次保持本单之前的方法段(不加通用读法;年运清单已写入但不下发,年运仍列在 `domains_without_strict_checklist`)。年运或时运与其他领域同轮时,通用读法照常第一段(年运清单仍不发)。测试「T1/T2 budget blocker is pinned」钉住这一缺口,解除时必须有意改它。
|
||
|
||
产品可选:①把年运 / 时运单领域轮的 12,000 改成与 career / marriage / wealth 同口径(契约 + 卡 ≤ 12,000、总量 ≤ 18,000);②再压卡(年运 `slow_transits.key_dates` 等)腾出约 1,000 字符;③方法段去掉 `further_reading`(863 字符)或英文 Shared mandatory baseline(1,007)。决定后删 `CONSULT_READING_BUDGET_BLOCKED` 的对应项并改钉住测试。
|
||
|
||
本分支各领域最大值(三张 golden 盘取最大;annual / timing 为阻塞后的实际下发):
|
||
|
||
| 领域 | 契约+卡 | 含清单 | 盘 |
|
||
| --- | ---: | ---: | --- |
|
||
| career | 7,233 | 10,653 | 乔布斯 |
|
||
| marriage | 8,064 | 11,608 | 泰勒 |
|
||
| wealth | 7,466 | 10,824 | 泰勒 |
|
||
| health | 7,410 | 10,564 | 乔布斯 |
|
||
| education | 6,527 | 9,604 | 泰勒 |
|
||
| migration | 6,369 | 9,366 | 泰勒 |
|
||
| family | 6,469 | 9,452 | 泰勒 |
|
||
| parents | 7,398 | 10,687 | 奥巴马 |
|
||
| children | 6,362 | 9,462 | 泰勒 |
|
||
| annual | 9,882 | 11,918 | 泰勒 |
|
||
| timing | 8,604 | 11,523 | 泰勒 |
|
||
| general | 7,859 | 10,877 | 乔布斯 |
|
||
|
||
健康卡比第一单少 2 字符(标签「身心压力」→「健康」);健康方法段从英文路由换成中文清单,含清单总量反而下降(泰勒 11,120 → 10,485)。
|
||
|
||
## 产品决定(2026-10-02):年运 / 时运字数口径,阻塞解除
|
||
|
||
产品选上节方案 ①:年运、时运单领域轮与事业 / 婚姻 / 财富同口径,**契约 + 卡 ≤ 12,000,含清单 ≤ 18,000**。在第三单分支 `codex/consult-no-presupposition-backtest-20261001` 单独一个提交落地:
|
||
|
||
- 删 `CONSULT_READING_BUDGET_BLOCKED`:每轮第一段都是通用读法;年运单领域轮下发本产品年运清单(`domains_without_strict_checklist` 为空),时运仍是英文路由。
|
||
- 断言改动(原值 / 新值 / 原因):
|
||
|
||
| 文件 · 测试 | 原值 | 新值 | 原因 |
|
||
| --- | --- | --- | --- |
|
||
| `consult-evidence-card-20260927`「model-visible size…」 | `methodHeavy` = career / marriage / wealth | 加 annual、timing | 产品 2026-10-02 字数口径决定 |
|
||
| `consult-condensed-checklist-20260927`「size…」 | 全部 12 领域 total ≤ 12,000 | 年运、时运:契约 + 卡 ≤ 12,000、total ≤ 18,000;其余领域不变 | 同上 |
|
||
| `consult-affliction-reading-20261001`「T1/T2 budget blocker is pinned」 | 年运只有 baseline 段、报缺;时运无通用读法 | 改为「annual and timing single-domain turns get the shared reading, and annual its list」 | 同上 |
|
||
| 同文件 T1、T2 | 跳过年运、时运;annual 期望标题 "" | 全部 12 领域;annual 期望「年运 · consult-annual · 普通对话精简清单」 | 同上 |
|
||
|
||
- 实测(三张 golden 盘):年运 契约 + 卡 9,501~9,882、总量 12,598~12,979;时运 8,555~8,604、12,208~12,257,都在新口径内。
|
||
- BUG-1160、BUG-1161 状态改 resolved(文本层),`BLOCKED.md` 对应条目划掉。
|
||
|
||
## 产品决定(2026-10-02,第二次):受冲读法改为「迹象 + 范围」
|
||
|
||
第三单名人回测第一轮对照组误报 1 → 15;Claude(PM)按卡片确定性计数核对,在场与缺席的父亲受冲信号数相同。产品改口径,推翻本单以下定稿文本中冲突的部分,实现在第三单分支提交 `066558a6`:
|
||
|
||
| 位置 | 原定稿 | 新文本要点 |
|
||
| --- | --- | --- |
|
||
| 通用读法第 3 条(T1) | 两个及以上受冲:第一句先写这一面,用「可能」 | 引用 `AFFLICTION_RANGE_RULE`:压力或距离的迹象 + 依据 + 现实范围;不断定传记事实;不写「有分量」「站得住」「不是缺位」「底子不差」「关系稳」「能走下去」;段末请用户说一句,全篇最多一处 |
|
||
| 父母第 2 行(T2) | 第一句写「爸爸(妈妈)可能不常在你身边 / 很早就有距离」 | 按通用读法写范围;盘分不出父母在不在身边,不替用户断定 |
|
||
| 婚姻受冲行(T3) | 「感情可能不止一段 / 可能有断续」 | 「感情这条线上有波折的迹象」+ 范围,不断定有几段 |
|
||
| 健康第 1 行(T2) | 命主兼 6、8 宫主……底子偏弱 | 受冲两个及以上写「身体这条线有压力的迹象」+ 范围,不写「底子不差」,不诊断 |
|
||
| 事业第 3 行 | ①接触(消息、面试、初步接洽)②结构性机会(合同、正式职位、长期项目) | ①机会出现(消息、邀约、初步接洽)②成形(合同、合作、长期项目)③公开落地(发布、到账、被看见、名声);另加首行「先讲这张盘一生的事业形态……受冲只说阻力和代价,不改写事业形态」(事业 7 行) |
|
||
|
||
断言改动(三栏也写在测试注释里):`consult-affliction-reading-20261001` 父母断言(原 `/不得写成「有分量」「站得住」/` → 新「盘分不出父母在不在身边,不替用户断定」且不得再有「可能不常在你身边 / 很早就有距离」)、婚姻断言(原「感情可能不止一段 / 可能有断续」→ 新「感情这条线上有波折的迹象」「不断定有几段」);`consult-condensed-checklist-20260927` 事业必含词(原「结构性机会」→ 新「机会出现」「成形」「事业形态」,并断言事业清单无「面试 / 职位 / 简历」)。字数断言全部原样通过。
|
||
|
||
## 未做 / 交给第三单
|
||
|
||
- 写作形状去「对象在场」预设、`product-voice.ts` 逆行示例(排查 D 类源头)——第三单。
|
||
- 名人回测(门槛「两个及以上受冲信号」的误报校验)——第三单。
|
||
- 年运 / 时运单领域轮的通用读法与年运清单——待产品定字符口径(上节)。
|