Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
103 lines
10 KiB
Markdown
103 lines
10 KiB
Markdown
# TASK · 数据卡补「谁照谁、谁和谁同宫、燃烧」,瑜伽按领域分流(2026-10-01,三单之一)
|
||
|
||
- 基线:`origin/staging` `2d620fb4`
|
||
- 分支 / worktree:`codex/consult-card-affliction-data-20261001` / `.worktrees/consult-card-affliction-data-20261001`
|
||
- 范围:普通对话的引擎附加层(`scripts/consultation_native_layers.py`)+ 数据卡(`frontend/src/lib/consultation-evidence-card.ts`)+ golden 刷新。**提示词、清单、写作形状不在本单**(第二、三单)。生时校正面、报告面不动。
|
||
- 串行:本单 → `TASK-consult-affliction-reading-20261001`(读法与清单,依赖本单的新字段)→ `TASK-consult-no-presupposition-and-backtest-20261001`(写作形状与名人回测)。三单都改 `consultation-evidence-card.ts` 或其测试,必须按顺序,后一单以前一单推上 staging 的提交为基线。
|
||
- BUG 编号起点:`BUG-1154`,本单预留 1154~1159(开工时 `grep -o "BUG-1[0-9]\{3\}" docs/BUG_HISTORY.md | sort -u | tail -1` 核对,当前最大 1153;被占用就顺延,并通知后两单顺延)。
|
||
|
||
## 1. 事故实证
|
||
|
||
见 `docs/research/consult_affliction_audit_2026_10_01.md`。摘要:
|
||
|
||
- 读者盘(双鱼上升):9 宫主火星合罗睺、太阳是 6 宫主(功能凶星)、D12 的 9 宫有火星。模型写「父亲是有分量的标尺」「站得住,不是缺位」,与读者经历相反。
|
||
- 三位公开名人 13 份样稿里,11 份漏读关键信号,6 份读反,5 份与生平冲突(奥巴马父亲缺席、泰勒八次婚姻、泰勒终身重病)。
|
||
- 本单负责其中的 A 类与 E1/E2/E3 类根因:模型看不到的数据。
|
||
|
||
## 2. 根因(本单部分)
|
||
|
||
1. **卡上没有相位。** `baseNatal` 的 `PLANET_ROW_KEYS = sign/house/degree_in_sign/nakshatra/retrograde/status`;`domainSection` 的宫位只有 `sign/occupants/lords`。引擎在 `scripts/jyotish_engine.py` Step 5 算了 `report['modules']['aspects']`(`scripts/aspects.py` `calc_house_aspects`),但普通对话工作流响应里没有(golden `frontend/tests/fixtures/consult-evidence-card-golden.json` 中搜不到 `house_aspects` / `aspects_to`)。土星照太阳、火星照 7 宫这类最经典的受冲信号,模型无从得知。
|
||
2. **卡上没有燃烧。** 引擎 `jyotish_engine.py` 按度数写了 `planet['combust']`,投影没带。奥巴马 9 宫主水星距太阳约 10°,模型看不出。
|
||
3. **领域段只列被选中宫位的星。** 宫主或代表星和谁同宫,要模型自己从 base 里对,四份乔布斯答案都没对出「木星与计都同宫」。
|
||
4. **瑜伽不分领域。** `scripts/jyotish_api_server.py` 普通对话层 `build_raman_support_observations` 之后的 `modules['yogas']` 是同一份(奥巴马 8 条:Matrunasa、Bahu Puthra、Eka Puthra……),`EVIDENCE_CARD_SPECS` 里 career/wealth/general `yogas: true` 原样整份放进去;parents/children `yogas: false`。结果母亲、子女类瑜伽出现在财富卡,父母卡、子女卡反而没有;Sasa、落陷取消这类大格局也不在 8 条里。
|
||
5. **宫位选择缺口。** health `houses: [6, 8]` 缺命宫与 12 宫(住院);education `houses: [5, 9]` 缺 4 宫(正规学业);annual 卡看不到「土星行运压本命月亮」。
|
||
|
||
## 3. 决策记录(产品 2026-10-01 授权)
|
||
|
||
- **D1 三单串行、全领域一起修。** 产品选定,不只修父母。
|
||
- **D2 相位按 Parashari 整宫制。** 所有行星照第 7 宫;火星另照 4、8;木星另照 5、9;土星另照 3、10。罗睺、计都**不**给特殊相位(流派分歧大),它们的影响通过同宫体现。这与 `scripts/aspects.py` `SPECIAL_ASPECTS` 一致,不改引擎规则。
|
||
- **D3 卡仍然只抄不算。** 相位、燃烧、同宫的值必须由引擎给出或由已有字段做「选择」(同宫 = 同一 `house` 的行星集合,属于选择);卡里不得新写判断文字(不写「受冲」「凶」)。是否算受冲由第二单的清单教模型判断。
|
||
- **D4 父母卡带宫主与代表星的完整行。** 产品已同意父母修法 A~D;其中 B(相位)落在本单。
|
||
- **D5 健康卡加命宫、12 宫,学业卡加 4 宫。** 健康改名「健康」属于第二单(D 那边的口径),本单只改卡的取材。
|
||
- **D6 字符上限不放宽。** 单领域「契约 + 卡」≤ 12,000 字符的既有断言(`consult-evidence-card-20260927.test.ts`、`consult-evidence-card-v2-20260927.test.ts`)保持。超了先压缩格式(短数组),不得删已有字段,不得改断言。
|
||
|
||
## 4. 硬红线
|
||
|
||
1. `scripts/jyotish_api_server.py` 不得增长超过 4 行(只做薄注册,逻辑进 `consultation_native_layers.py`,每层用 `_guard`)。冻结测试 `tests/test_api_server_growth_contract.py` 必须过。
|
||
2. golden 必须由真实引擎重新生成(AGENTS §7.4),不得手改 JSON。
|
||
3. 不改相位、燃烧的引擎规则与容许度;不改功能吉凶分类(见 T5,只核对)。
|
||
4. 不改提示词、清单、`natalAnswerShapeBody`、`product-voice.ts`(属后两单)。
|
||
5. 任何既有断言改动写「原值 / 新值 / 原因」三栏。
|
||
|
||
## 5. 任务分解
|
||
|
||
### T1 引擎层:普通对话响应带上相位与燃烧(BUG-1154)
|
||
|
||
在 `scripts/consultation_native_layers.py` 新增 `build_graha_drishti(chart)`,由 `attach_native_consultation_layers` 挂到 `modules`(`_guard` 包裹,失败写 `blocked`,不影响其他层):
|
||
|
||
- `planets`: `{行星: {"aspects_houses": [被它照的宫号], "aspected_by": [照到它所在宫的行星]}}`,含罗睺、计都作为被照对象,不作为施照者(D2)。
|
||
- `houses`: `{"1": {"aspected_by": [...]}, ... "12": {...}}`。
|
||
- 行星燃烧:沿用引擎已有的 `combust` 字段,透传到普通对话的行星行(不重算)。
|
||
|
||
**验收**:Python 定向测试覆盖三位 golden 名人:奥巴马土星(1 宫)的 `aspects_houses` 含 3、7、10;太阳(7 宫)`aspected_by` 含 Saturn;水星 `combust = true`。`run_quality_gate.py --profile quick` 通过。
|
||
|
||
### T2 卡片 base:行星与宫位带相位、同宫、燃烧(BUG-1155)
|
||
|
||
- `base.natal.planets[行星]` 增加 `aspected_by`、`conjunct_with`(同 `house` 的其他行星,选择所得)、`combust`(只在 true 时出现,省字符)。
|
||
- `base.natal.houses[宫号]` 从字符串改为 `{sign, aspected_by}`,或另设 `base.natal.house_aspects`,二选一,以字符预算为准;改结构的话,所有读 `base.natal.houses` 的地方同步(`domainSection` 的 `sign` 读取)。
|
||
- 引擎没给相位层时,`meta.gaps` 记 `base.aspects`,不得补算。
|
||
|
||
**验收**:卡片合同测试新增断言:奥巴马卡太阳 `aspected_by` 含 Saturn、水星 `combust: true`;读者盘同构的 golden 场景(任一盘中宫主与罗睺同宫)`conjunct_with` 含 Rahu。12,000 字符断言全部通过。
|
||
|
||
### T3 父母、健康、学业、年运的取材(BUG-1156)
|
||
|
||
- 父母 `roles.mother/father` 每个条目增加 `lord_rows` 与 `significator_rows`:`{planet: {house, sign, status, functional, conjunct_with, aspected_by, combust?}}`。`functional` 从 base 的功能吉凶列表**选择**所得(benefic / malefic / neutral)。D12 同号宫再给该宫宫主在 D12 的星座(引擎已有 D12 行,选择所得)。
|
||
- health `houses` 改为 `[1, 6, 8, 12]`;education `houses` 改为 `[4, 5, 9]`。
|
||
- annual 卡带上「土星行运所在星座与本命月亮星座的宫距」:由 T1 在引擎侧给出 `saturn_from_moon_house`(1~12),卡只抄。
|
||
|
||
**验收**:三位名人 × 父母、健康、学业、年运卡快照更新(真实引擎 golden);乔布斯父母卡 `father.lord_rows.Venus.conjunct_with` 含 Rahu、`significator_rows.Sun.functional = malefic`;泰勒健康卡含 1 宫、12 宫;乔布斯年运卡 `saturn_from_moon_house = 1`(土星行运双鱼、本命月亮双鱼)。
|
||
|
||
### T4 瑜伽按领域分流(BUG-1157)
|
||
|
||
- 给瑜伽条目带上领域标签:先查引擎 / Raman 筛选是否已有类别字段;没有就在 `consultation_native_layers.py` 用**名称对照表**(固定表,不用正则猜)映射到 parents / children / siblings / wealth / career / general 等,表放 Python 一处,前端只按标签选择。
|
||
- 卡片:parents、children 打开 `yogas`,只收本领域标签;career / wealth / general 只收本领域与 general 标签。
|
||
- 查清 Sasa、Neecha Bhanga、Gajakesari 为什么不在 8 条里(Raman 筛选上限?规则引擎没跑?)。**只诊断并写进进度记录**;若是有意的置信度筛选,不得放宽(AGENTS §8.4),交产品决定。
|
||
|
||
**验收**:奥巴马财富卡、综合卡里不再有 Matrunasa / Puthra 类;父母卡含 Matru 类、子女卡含 Puthra 类。诊断结论写入进度记录。
|
||
|
||
### T5 功能吉凶核对(只核不改,BUG-1158 视结论决定是否占用)
|
||
|
||
泰勒盘(天蝎上升)引擎把火星(1、6 宫主)标 yogakaraka、太阳(10 宫主)标中性,与常见 BPHS 列表不同。查清引擎规则出处(文件、函数、引用的典籍或流派),写进进度记录。**不得改分类**;若确认是缺陷,登记 BUG-1158 为 `investigating`,交产品与占星顾问决定。
|
||
|
||
### T6 文档与记录
|
||
|
||
- `docs/BUG_HISTORY.md` 登记 BUG-1154~1157(以及视 T5 结论的 1158),关联 BUG-1133、BUG-1054。
|
||
- `CHANGELOG.md` 一条;Skill 无改动,写明不 bump。
|
||
- `docs/tasks/PROGRESS-consult-card-affliction-data-20261001.md`、`docs/tasks/README.md` 索引。
|
||
|
||
## 6. 让步顺序
|
||
|
||
T1、T2 不可让步。T3 的年运字段、T4 的大格局诊断可以挂 `blocked` 先交付,写进 `BLOCKED.md`。字符预算紧时,先压缩格式,再去掉 `combust: false`,绝不删已有字段。
|
||
|
||
## 7. 开工前置命令
|
||
|
||
```bash
|
||
git fetch origin --prune
|
||
git worktree add -b codex/consult-card-affliction-data-20261001 .worktrees/consult-card-affliction-data-20261001 origin/staging
|
||
cd .worktrees/consult-card-affliction-data-20261001
|
||
grep -o "BUG-1[0-9]\{3\}" docs/BUG_HISTORY.md | sort -u | tail -1
|
||
python3 scripts/pre_work_check.py --remote-timeout 8 --command-timeout 45 # 涉及引擎层
|
||
```
|
||
|
||
验收口径:Python 定向 + quick 门;前端 `tsc --noEmit` 0、`npm run lint` 0 error、相关测试 fail=0、测试总数不低于基线、`next build` 后 `/` 仍 Static。
|