Files
Jyotisha/docs/tasks/TASK-consult-card-full-source-20261007.md
T

136 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TASK · 对话数据卡与报告同源,按领域给出综合判断表(2026-10-07)
- 基线:`origin/staging` 合入 `TASK-upstream-sync6-20261007` 与 `TASK-report-full-data-edition-20261007` 之后的 SHA(开工时记下)。写作时为 `0ed45a4b`。
- 分支 / worktree:`codex/consult-card-full-source-20261007` / `.worktrees/consult-card-full-source-20261007`
- 串行顺序:sync6 → 报告单 → 本单。本单依赖报告单 T7 提供的资料包取值入口。报告单 T0–T3 完成后,本单的 T0 盘点可以先做;改代码要等报告单合入后再 rebase。
- BUG 编号:与另两份单共用一个序列,开工时核对 `docs/BUG_HISTORY.md` 最大号。
## 1. 事故实证
产品 10-07 反馈:对话里 AI「只看本命盘或 D10」,没有把事业代表星、大运主星和事业的关系、各项分值、KP、功能吉凶、相位、D10 映射回 D1 / D9 综合起来;也没用上资料库和公认技法。
用乔布斯 golden 盘(`frontend/tests/fixtures/consult-evidence-card-golden.json`)导出事业题的数据卡(`buildEvidenceCard`),约 7,600 字符:
| 产品说的缺口 | 引擎算了吗 | 卡上有吗(`frontend/src/lib/consultation-evidence-card.ts`) |
| --- | --- | --- |
| 10 宫、宫主、宫内星、照 10 宫的星 | 算了 | 有 |
| 事业的自然代表星(太阳、土星、水星、木星) | 位置算了 | 没被点名:`EVIDENCE_CARD_SPECS.career` 的 `planets: []`,清单只要求看 AmK |
| 大运主星和事业的关系 | 原料分散在各处 | 没有关系表。罗睺、计都当大运主星时没有功能吉凶(判定表只列七星)。样例当前正走罗睺大运,卡上没有一行写罗睺对事业的意义 |
| 分值综合 | 算了 | Shadbala 七星有;八分法只给 10 宫 SAV;没有把各项放在一起的表 |
| D10 映射回 D1 / D9 | **算了**(`consultation_native_layers.inter_chart_linkage`:每星在 D1 / D9 / D10 落第几宫) | 不在卡上,只能补取;D10 段只有星座,没有宫 |
| 卡外补取 | — | `MAX_EVIDENCE_LOOKUPS_PER_TURN = 1` |
| 资料库 | 有 190 份 | `methodology.further_reading` 的 19 条多为 oracle / 治理文件,KP、宫位对照、分盘深读、Argala、Jaimini 等技法书不在列 |
| Avastha、Bhava Bala、Vimsopaka | 报告资料包里有 | 对话链不算 |
| KP | 引擎有宫头 | 09-27 按顾问意见不上卡(`observation_only_truth_blocked`,原因 `licensed_provider_not_terms_safe`) |
| 联网 | — | 卡上写死「全网资料核对、真实案例校准:未做,置信度封顶」 |
## 2. 根因
09-27 数据卡改造时,为了解决「模型可见 13–14 万字符、读不过来」,把每个领域压成约 1.2 万字符,并按当时的清单挑字段。挑法只覆盖必看项,没有「把各因素放到一起比」的结构;对话和报告从两条路取数,深度不同。
## 3. 决策记录
产品 2026-10-07 已定:
1. **同源**:对话数据卡的数值取自与报告完整数据版**同一个资料包**(报告单 T7 的取值入口),按领域挑选。对话链不再单独拼一套。
2. **全领域一次做完**:12 个领域都改。
3. 任务书交 coding agent 执行,Claude 验收。
产品 2026-10-07 第二次回复:
4. **已确认**:每个领域上卡一张**综合判断表**(定义见 T2),由卡片构建器从资料包取值组装。模型只负责解读,不再自己从几处拼。
5. **已确认并扩大**:产品原话是「在顶级印度占星的复杂和丰富技法全量体系下,应该不止 D1 和 D9 盘的联动,还应该有其他的星盘报告信息参与」。因此不再只做「领域分盘 ↔ D1 / D9」,改为按 §3A 的**参与清单**:每个领域有一个共用层,再加本领域专属的盘与点。清单是 Claude 起草的候选,执行方在 T0 逐条到本仓 `references/` 找出处,找不到出处的写 `blocked`,不自拟。
产品 2026-10-07 第三次回复「都同意」:
6. **已确认**:卡外补取上限从 1 次改为 3 次(产品知悉:每多补取一次,回答可能慢几秒)。
7. **已确认**:`further_reading` 改为按领域的技法资料目录。
决策 1–7 全部确认,本单定稿,可以领取。
明确不做:
8. **KP 不上卡**:产品 10-07 说「先记下」,维持 09-27 决定,补取时仍带 `EVIDENCE_LOOKUP_KP_NOTE`。
9. **不做每轮实时联网**。
10. **不接上游书籍 / 文章语料**(`references/book_corpus`、`article_corpus`、`search_jyotish_books.py`):第三方作品不随仓库授权,商用前需要产品另行决定。
本单推翻的既有决定(执行方据此可以改,不得拒改):
- 09-27 数据卡 v1 / v2 的「每领域卡 ≤ 12,500 字符、加清单 ≤ 18,500 字符」上限(BUG-1160 / 1161 / 1221)。新上限由 T6 实测后报产品定,在此之前按卡 ≤ 20,000、加清单 ≤ 26,000 执行。
- 09-27 D8「卡外只补取一次」。
## 3A. 参与清单(决策 5;候选,T0 逐条核出处)
**共用层(12 个领域都带,取与本领域相关的宫和星)**
| 层 | 说明 |
| --- | --- |
| 三个参照点(Sudarshana) | 同一件事从上升、月亮、太阳三个起点各看一遍(月亮盘、太阳盘);资料包有 Sudarshana 三盘 |
| D9 | 星的真实力量与 D1 是否互相印证(Vargottama、D1 ↔ D9 尊贵反转) |
| Bhava Chalit | 星是否跨宫,跨宫时按哪一宫读 |
| 力量 | Shadbala(星)、Bhava Bala(宫)、Avastha(星的状态)、Vimsopaka(星在 16 张分盘的综合强弱) |
| 八分法 | 本领域宫的 SAV、相关星的 BAV |
| 功能吉凶 | 每颗相关星;罗计按红线 3 处理 |
| 相位 | Parashari 星照与 Jaimini 星座照,分开列 |
| Argala | 对本领域宫的支撑与阻碍 |
| 定位星链 | 本领域宫主的定位星一路追到终点 |
| 时间 | Vimshottari 与 Narayana 双轨(主),Yogini(第三条线,只作参照);行运与双重过运;问今年时加年盘 |
| 瑜伽 | 只认 `hits`,按领域标签 |
**领域专属**
| 领域 | 专属的盘与点 |
| --- | --- |
| 事业 | D10;A10、AL;AmK 及 Karakamsha;Ghati 上升;太阳、土星、水星、木星 |
| 财富 | D2、D11;Hora 上升、Indu 上升、Sree 上升;AL 起第 2、11 宫;木星、金星、水星 |
| 婚恋 | D9 第 7 宫与 7 宫主;UL 及 UL 起第 2 宫、A7、DK;金星、木星;Vivah Saham;火星煞 |
| 健康 | D6、D8、D30;第 22 个 Drekkana、第 64 个 Navamsa;Badhaka;Gulika / Mandi;Pranapada |
| 子女 | D7;PK;第 5 宫;木星 |
| 父母 | D12;MK、PiK;太阳、月亮;第 4、9 宫 |
| 学业 | D24(及现有 D5);水星、木星;第 4、5、9 宫 |
| 迁居 | D4、D12;第 4、9、12 宫;罗睺 |
| 家庭 | D4、D7、D12 |
| 流年 | 年盘 Tajika、Muntha、年主、Mudda 大运、Sahams |
| 时间 | 同共用层的时间行,加上 Narayana 子运与年盘 |
| 综合 | D1、D9、D10、D2;AL;Karakamsha |
**出生时间精度闸**:分盘越细,对出生时间越敏感(D10 约每 12 分钟换一次星座,D60 约每 2 分钟)。所以 D16 及以上的分盘,以及 Ghati、Vighati 这类按分钟变化的点,只在出生时间为 `confirmed` 或校正已交付分钟时参与;否则在卡上写「出生时间精度不够,不参与」。闸门口径沿用生时校正现有的精度判定,不另立一套。
**不参与**:KP(决策 8)。
## 4. 硬红线
1. 卡上数值一律从资料包原样复制,不改写、不四舍五入、不翻译(现有 `consultation-evidence-card.ts` 的不变式保持)。缺什么写进 `gaps`,不补。
2. 综合判断表里的「受冲条数」只是计数,**不设门槛、不下结论**。产品 10-02 已定:只说压力迹象和现实范围,请用户补充;「≥2 条就判定」是被推翻的设计,不得复活。
3. 罗睺、计都的功能吉凶:引擎没有就不填。只列它们的定位星、同宫星与这些星的功能角色,表头注明「罗计不单独定功能吉凶」。该怎么判写进给占星师的下一轮问题。
4. 自然代表星表必须有出处:从本仓 `references/`(如 `house-domain-planet-mapping.md`、`event_judgment_*.md`、`strict-workflow-router.md`)逐条引用文件与段落;本仓找不到出处的领域写 `blocked`,不自拟。
5. 普通对话的生平回测(`scripts/research/capture_consult_biography_backtest_golden.py` 一套)严重冲突数不得高于开工基线;对照组误报不得增加。没有模型 key 时写成环境缺口,不得宣称通过。
6. 首轮回答的形状、口吻规则(BUG-1244、1245、1255)不改;系统提示不增长(BUG-1256 的 26.6K 为上限)。新增的读法说明进清单,不进系统提示。
7. 前端红线照常:tsc 0、lint 0 error、`npm test` 失败名单与基线相同、build `/` Static、gzip ±2%。`scripts/jyotish_api_server.py` 不增长。
## 5. 任务分解
| # | 内容 | 验收标准 |
| --- | --- | --- |
| T0 | 盘点:对话链现在怎么拿数(`run-jyotish-consultation` → `toAgentConsultationContext` / `toModelOutput` → `buildEvidenceCard`);资料包里每个领域能取到的字段;12 个领域各自的「宫 / 宫主 / 自然代表星 / Jaimini 代表星 / 分盘」清单及出处 | 进度记录里有 12 行领域对照表,每行注明出处或 `blocked` |
| T1 | 资料包缓存:按「星盘身份 + 计算档(岁差、交点)+ 引擎版本」缓存资料包(放 `api_scratch`)。星盘新建或修改资料后在后台预热;对话命中缓存直接读;未命中就同步计算 | 命中时每领域取数耗时不高于现状(约 1.66 秒 / 域);未命中时 2 vCPU 档位实测耗时写进进度记录,**超过 20 秒就停下报产品**;改出生资料后缓存一定失效(参照 BUG-1251) |
| T2 | 综合判断表:每个领域一张,每个因素一行。因素包括本领域的宫、宫主、自然代表星、Jaimini 代表星、当前 Vimshottari MD / AD / PD 主星、当前 Narayana MD 星座及其主星。每行的列:D1 星座 / 宫 / 尊贵;功能角色;Shadbala 与 BPHS 最低要求;该星所落星座的 BAV 与本领域宫的 SAV;受冲条数及各条明细(按 `CONDENSED_SHARED_READING_LINES` 的规则);D9 星座、尊贵、Vargottama;本领域分盘的落宫;与本领域宫的关系(主管 / 落入 / 照 / 与宫主同宫) | 乔布斯、奥巴马、泰勒三盘 × 12 领域都能生成;每格都能追到资料包里的字段;新增测试逐格对照资料包 |
| T3 | 参与清单上卡:按 §3A 共用层 + 领域专属,从资料包取值;事业的三盘联动用 `inter_chart_linkage`;精度闸按 §3A | 12 个领域每项都有值、`gaps` 或 `blocked`(附出处);精度闸用一张 `confirmed` 盘和一张未校正盘各测一次 |
| T4 | 补取 3 次:`MAX_EVIDENCE_LOOKUPS_PER_TURN = 3`;第 4 次仍按现有方式拒绝 | 测试覆盖第 3 次成功、第 4 次拒绝;步数上限 `AGENT_MAX_STEPS` 是否需要加,按实测决定并写明 |
| T5 | 资料目录:`further_reading` 改为按领域列出本仓技法资料(每领域 ≤ 8 条,去掉 oracle / 治理文件);清单说明中写「需要时用 skill_read 读对应章节」 | 12 个领域各有目录;路径都真实存在(测试断言) |
| T6 | 体量与耗时:沿用 `docs/testing/prompt-slim-20261007-model-runs.md` 的 A/B 做法,比较改前改后的输入 token、首字时间、总耗时、空答率 | 数字写进进度记录,供产品定新的卡片上限;没有 key 就写环境缺口 |
| T7 | 回测:生平回测改前改后各跑一次(每份 2 次) | 按红线 5 判定 |
| T8 | 记录 | `docs/BUG_HISTORY.md`、`CHANGELOG.md`、`docs/tasks/PROGRESS-consult-card-full-source-20261007.md`、状态板、`docs/testing/` 真机清单(事业、婚恋、财富、健康各问一题,看回答是否引用了综合判断表里的因素) |
## 6. 让步顺序
T5 → T4 → §3A 共用层里的 Argala 与定位星链 → T3 中事业以外的领域(先保证事业)。T1、T2、红线 1–5 不让步。
## 7. 开工前置命令
```bash
git fetch origin --prune
git worktree add -b codex/consult-card-full-source-20261007 .worktrees/consult-card-full-source-20261007 origin/staging
grep -o "^## BUG-[0-9]*" docs/BUG_HISTORY.md | sed 's/## BUG-//' | sort -n | tail -1
```