Compare commits

...
Author SHA1 Message Date
Claude 8dbaf2d30e docs: brief for synastry-b1-20261114 (BUG-1888, #275)
Adds product contract section L (synastry interim rules, pending astrologer rulings).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-14 18:16:02 +08:00
2 changed files with 89 additions and 0 deletions
+81
View File
@@ -0,0 +1,81 @@
# TASK:合盘第 1 批:技法审计两栏、附录核验两行、第二人 Saham、缓存日期、旧打分接口(2026-11-14)
- Gitea:#275
- 分支:`codex/synastry-b1-20261114`,从 staging `29ac0138` 切出。
- Bug 编号:BUG-1888。开工时核对 `docs/BUG_HISTORY.md` 末尾;已被占用就顺延,并在 PROGRESS 写明。
- 负责验收:Claude(jyotisha-3f)。
- 同时在做:#276(合盘出生时间误差,BUG-1889),会改 `full_dossier.py` 和 `synastry-full-technical.ts`。两单各改各的函数,后合入的负责 rebase。
任务书没写到的取舍,不得写成"产品决定"或"裁定",一律标「需拍板」。不得修改或删除既有断言来让测试通过。确需修改的,在 PROGRESS 逐条写明原值、新值和原因。
## 背景
2026-11-14 合盘差距盘点(`/workspace/eval-upstream-1107/synastry-audit-1114/SYNASTRY_GAP_AUDIT.md`)对照的是占星师的合盘子 skill `skills/jyotish-full-synastry-reading`(她 7a773d13,与本仓同名目录逐字节一致)。本单只做不需要等她裁定的确定性和展示问题。
暂行规则已写进 `references/product_runtime_contract.md` 第 L 节(本任务书同一提交),照该节执行。
## 要做的
### 1. 技法执行情况改两栏(`frontend/src/lib/synastry-full-technical.ts`)
- 现状:`STATUS_LABELS` 把 `ready_for_comparison` 映射成「已执行」(第 16 行)。她在 SKILL.md:105-107 写明这只代表两人的输入齐了。
- 改成和年运附录一样的两栏表:方法、计算、在本报告中。复用 `consultation-technique-audit.ts` 的标签和年运 `annualAudit` 的表格版式,不新做组件。
- 映射照契约 L 节第 1 条。blocked、not_applicable 必须附回执里的理由(中文,不出现字段名或下划线)。
- 个人技法(`individual_technique_audit`)按人分组,标明甲方、乙方;两盘任务(`pair_execution_tasks`)单独一组。
- 已经生成的旧报告照常显示,不报错。
### 2. 附录加两行核验
- 照契约 L 节第 2 条,在「技法执行情况」末尾加「网上资料核对:未完成」「真实案例校准:未完成」,写法同个人报告和年运的附录。
- 删掉 11-08 那条「原值、新值、原因」注释所说的删除,改成新注释写明 11-12 的业主决定。
- 正文和合盘追问对话里不提这两项(BUG-1794 照旧)。
### 3. 第二人的 Saham 缺失
- 现象:用一对公开名人盘离线跑 `build_synastry_full_dossier`,第二人 `modules.sahams` 缺失。结果是「Vivah and other Sahams」blocked,两盘年度对照(shared transit, Tajika, Saham and annual-window comparison)blocked,`legal_marriage` 也 blocked。复现脚本:`/workspace/eval-upstream-1107/synastry-audit-1114/syn_probe.py`。
- 先查根因:是我方给她 builder 准备第二人模块时漏了,还是引擎对这个人真的算不出。
- 漏了:补上,第二人和第一人走同一条路径。
- 引擎真的算不出:保持 blocked,理由写清楚,记进 BLOCKED,标需拍板。
- 她的 builder 和冻结文件只能调用,不能改。
### 4. 缓存键加日期
- `consult_full_data_cache.py` 的缓存最多保留 2 天,合盘的缓存键(`marriage_match_service/api.py` `_birth_identity`)不含 `today`。她 SKILL.md:47-50 要求与日期有关的层按当天重算。
- 把 `today` 加进合盘缓存键,`CACHE_SCHEMA` 版本号加一,并照现有格式写原值、新值、原因。
### 5. 旧的合盘打分接口
- `/api/synastry`(`frontend/src/app/api/synastry/route.ts`)按 36 分加档位标题给结论,按性别取月亮,违反她 SKILL.md:202-204、243-247。
- 首页 `frontend/src/app/(app)/page.tsx:404` 还在用 `useSynastry`(`hooks/use-synastry.ts:64` 调这个接口)。先确认首页上有没有用户能点到、会触发这个接口的入口:
- 没有入口:删掉接口、hook 和首页里的引用,相关测试一起移除,在 PROGRESS 列出删了什么。
- 有入口:不改,停下来写进 BLOCKED,标需拍板,把入口位置和截图路径写清楚。
## 不要碰
- 她的 `skills/jyotish-full-synastry-reading/**`、冻结文件(`jyotish_engine.py`、`jyotish_api_server.py` 等)只能调用。
- `references/**`(L 节已由本提交写好)、`consult-preset-prompts.ts`。
- 不改四类事件、事件扫描、写作提示词、断言标签。这些等她裁定。
- 不调用 DeepSeek。
## 要改的文件
- `frontend/src/lib/synastry-full-technical.ts`、合盘报告页附录部分
- `scripts/marriage_match_service/api.py`、`scripts/marriage_match_service/full_dossier.py`(只限第 3 节)、`scripts/consult_full_data_cache.py`
- 第 5 节确认没有入口时:`frontend/src/app/api/synastry/route.ts`、`frontend/src/hooks/use-synastry.ts`、`frontend/src/app/(app)/page.tsx`
- 测试:`tests/test_synastry_b1_20261114.py`、`frontend/tests/synastry-b1-20261114.test.tsx`,覆盖:
- `ready_for_comparison` 显示「输入已齐」,不显示「已执行」;
- blocked 行带理由;
- 两行核验在附录里,正文里没有;
- 第二人 Saham 存在(或 blocked 带真实理由);
- 缓存键随 `today` 变化;
- 旧报告照常显示;
- 用户可见文字没有「·」、字段名或下划线。
- `docs/BUG_HISTORY.md`,只在末尾追加
- `docs/tasks/PROGRESS-synastry-b1-20261114.md`
## 验收标准
1. 公开名人盘一对:附录技法表是两栏,没有一行把 `ready_for_comparison` 写成「已执行」。
2. 第二人 Saham 的根因写进 PROGRESS,结果符合第 3 节。
3. 第 5 节结果符合两种情况之一,并写进 PROGRESS。
4. tsc、eslint(0 错)、`npm test`(基线失败除外)、quick gate 全部通过。
+8
View File
@@ -352,3 +352,11 @@ evidence_card.backstage records, for the backend only, that global web evidence
- 出生时间误差按 #224:用户自报的误差,否则前后 30 分钟。
- 研究方法(Yoga/Nakshatra Pravesha)只作观察,不进必需。
- 本条不减少她要求执行的任何技法,也不把「需说明」项写成结论依据。
## L. 合盘的暂行做法(产品 2026-11-14,待占星师裁定)
<!-- 产品对她合盘子 skill(skills/jyotish-full-synastry-reading,7a773d13)的暂行落地,不是她的方法。依据:2026-11-14 合盘差距盘点;产品负责人 2026-11-12「计算依据附录照实列网上资料核对、真实案例校准两行」、2026-11-13 出生时间误差规则(#224)。下列各条在她裁定前暂行,裁定后按她的改。 -->
- 技法执行情况分两栏:「计算」照她回执的状态写;`ready_for_comparison` 写「输入已齐」,不写「已执行」(她 SKILL.md:105-107)。「在本报告中」是产品的 v1 映射:executed、ready_for_comparison 写「供写作参考」,parameter_sensitive、partial 写「只作观察」,blocked、not_applicable 写「未使用」并附理由。
- 附录照实列「网上资料核对:未完成」「真实案例校准:未完成」两行。正文不提。
- 出生时间误差:每人用自报误差,没填按前后 30 分钟。某人的 D1 上升、D9 上升或月亮星宿在误差内会变时,只把这个人一侧依赖它的层,以及用到这一侧的两盘对照,标为参数敏感,并在附录写明;另一人不受影响。是只封一侧还是整层都封,待她裁定(合盘问题 6)。
- 以下沿用现状,待她裁定,不算产品规则:附录显示的回执方法名(问题 1)、模型自选的 6 个断言标签(问题 2)、产品自写的逐类激活扫描和四类事件(问题 3–5)、Raman 默认并列显示(问题 8)。