feat(consult): copy the full-data packet into a per-domain judgment table

Dialogue cards now take numbers from the same packet as the full-data report. Each of the twelve domains gets one table the card builder assembles. Lookups allow three calls a turn. further_reading is a per-domain technique index. BUG-1293, BUG-1294, BUG-1295.
This commit is contained in:
jesse-ux
2026-10-09 10:00:45 +08:00
parent 8bb7ff9383
commit 3874a328a5
24 changed files with 2082 additions and 74 deletions
@@ -0,0 +1,96 @@
# PROGRESS · 对话数据卡与报告同源(2026-10-09)
分支 `codex/consult-card-full-source-20261007`。基线 HEAD `e1c7383c`。本地未推送。状态:待验收。
## 做了什么
对话卡的新数字从完整数据版同一个资料包来,入口是 `read_full_data_domain`。12 个领域一次做完。每个领域一张综合判断表,由卡片构建器组装,模型只解读。旧的基础投影留着,所以首轮回答的字段名不变;新的权威数字是领域段上的表。表是资料包里的挑选,不是第二套计算。
卡版本仍是 `evidence-card-v2`。没有事实时不上表,golden 的 `meta.gaps` 仍为空。年运对话继续读 `tajika_yogas`,不读 `tajika_named_yogas`。KP 不上卡,补取仍带参考说明。不做每轮联网,不接书籍语料。
`scripts/jyotish_api_server.py` 只在原有的咨询计算入口上薄薄包了一层,主体在 `scripts/consult_full_data_cache.py` 与 `scripts/consult_card_domain_facts.py`。类方法数仍是 218。文件换行数 10,956,粗护栏上限 11,224。`page.tsx` 的 useState / useRef 没有增加。没有第二个聊天输入框。
## T0 · 12 领域对照
共用层里,Parashari 星照在 `references/strict-workflow-router.md` 找不到「单独列为参与层」的段落,12 个领域都是 `blocked`。表上的「照」因此记在关系缺口里,不重算。KP 按产品决定写「不参与」。其余共用层有出处:Sudarshana、D9、Bhava Chalit、Shadbala、Bhava Bala、Avastha、Vimsopaka、八分法、功能吉凶、Jaimini 星照、Argala、定位星链、Vimshottari、Narayana、Yogini、行运、双重过运、瑜伽 hits。
| 领域 | 专属项出处 | blocked |
| --- | --- | --- |
| 事业 | D10、A10、AL、AmK、Karakamsha、Ghati、太阳/土星/水星/木星、10 宫、D1/D9/D10 联动:`strict-workflow-router.md`、`event_judgment_career.md`、`jaimini-complete-system.md`、`deep-analysis-complete-workflow.md`、`pdf-chart-reading-guide.md` | Parashari 星照;Vighati(`references/` 无条目) |
| 财富 | D2、D11、Hora、Sree、木星/金星/水星、2/11/5/9/10 宫:`event_judgment_wealth.md`、`deep-analysis-complete-workflow.md`、`promise-assessment-templates.md` | Parashari 星照;Indu;从 AL 起第 2 宫;从 AL 起第 11 宫 |
| 婚恋 | D9 第 7 宫、UL、DK、金星、木星、Vivah Saham、火星、7 宫:`event_judgment_marriage.md`、`jaimini-complete-system.md` | Parashari 星照;UL 起第 2 宫;A7 |
| 健康 | D6、D8、D30、第 22 个 Drekkana、Badhaka、太阳/月亮/土星/火星、1/6/8/12 宫:`strict-workflow-router.md`、`shodasavarga-complete-guide.md`、`badhaka-obstacle-planet-guide.md` | Parashari 星照;第 64 个 Navamsa;Gulika;Mandi;Pranapada(问事章有,未列入本命健康) |
| 子女 | D7、PK、木星、5 宫:`strict-workflow-router.md`、`jaimini-complete-system.md`、`house-domain-planet-mapping.md` | Parashari 星照 |
| 父母 | D12、MK、PiK、太阳、月亮、4 宫、9 宫:同上三份 | Parashari 星照 |
| 学业 | D24、水星、木星、4/5/9 宫:`strict-workflow-router.md`、`house-domain-planet-mapping.md` | Parashari 星照;D5(未找到标成学业分盘的段落) |
| 迁居 | D4、罗睺、4/9/12 宫:`birth-time-rectification-decision-tree.md`、`house-domain-planet-mapping.md` | Parashari 星照;D12(路由器标给家族,未标给迁居) |
| 家庭 | D12:`strict-workflow-router.md` | Parashari 星照;D4(出处是搬迁,不是家庭);D7(出处是子女);自然代表星整组 |
| 流年 | Tajika、Muntha、年主、Mudda、Sahams:`varshaphala-annual-chart-guide.md` | Parashari 星照;单独的自然代表星;单一本命宫 |
| 时间 | Narayana 子运、年盘:`bphs-ch48-narayana-dasha.md`、`varshaphala-annual-chart-guide.md` | Parashari 星照;单独的自然代表星;单一本命宫 |
| 综合 | D1、D9、AL、Karakamsha、1 宫:`strict-workflow-router.md`、`pdf-chart-reading-guide.md`、`jaimini-complete-system.md`、`house-domain-planet-mapping.md` | Parashari 星照;D10(标给事业);D2(标给财富);自然代表星整组 |
自然代表星没有出处的领域是家庭、流年、时间、综合,写的是 `blocked`,没有自拟。家庭领域的分盘列仍是 D4,参与清单里的家庭 D4 是 `blocked`:出处说的是搬迁,不是家庭。这是故意分开的。
Argala 与定位星链有出处,卡上放的是路径引用,不在对话卡里重算。若以后要把 `argala.houses` 的净结果抄上卡,那是另一次叶子复制。
## T1 · 缓存
键是年月日时分秒、经纬度、时区、岁差、交点模式、引擎版本、schema `consult-full-data-cache-v1`。文件名是 sha256,放在 `scratch/local/consult_full_data_cache`(服务器上这块目录就是 `api_scratch` 卷)。键里没有「今天」,所以当前大运冻在第一次计算的那天。改出生资料会换成另一把键(BUG-1251)。精度闸在取事实时做,不进缓存键。未命中同步计算,没有另加超时绕过。超过 20 秒会标 `slow`,本机没有出现。
| 情况 | 未命中整包 | 领域取数 |
| --- | --- | --- |
| 虚构盘 | 7.342 秒 | — |
| 乔布斯公开盘 | 7.075 秒 | 0.145 秒 |
| 奥巴马公开盘 | 4.668 秒 | 0.118 秒 |
| 泰勒公开盘 | 4.421 秒 | 0.104 秒 |
| 乔布斯同一身份再取 | 命中,装入 0.044 秒 | 十二领域合计 0.552 秒,约 0.046 秒/域 |
都低于 20 秒,命中后的领域取数也低于约 1.66 秒/域。没有另做事实侧车缓存。
## T2–T5
综合判断表:每个因素一行。列按任务书。宫主另起一行。受冲是计数加明细,表里没有门槛,也没有「两个及以上」。Vargottama 由抄来的 D1 星座和 D9 星座是否相同推导。罗计功能角色为空。大层 JSON 超过 800 字符或含 `tajika_named_yogas` 时只留路径、检查记 `nonempty`;判断表上的标量格子是全文复制。
乔布斯、奥巴马、泰勒三张公开盘 × 12 领域,以及虚构密度盘 × 12 领域,叶子对照通过。
精度闸:`declared_accuracy` 为 `rectified`,或 `birth_time_status` 为 accepted / confirmed,或请求里明确带了 `birth_time_accuracy=confirmed`,并且有时、分,才放行 D16 及以上与 Ghati。只申报了分钟、尚未接受,仍然不放行。
补取上限 3。测试:前三次成功,第四次 `lookup_limit_reached`。`AGENT_MAX_STEPS` 仍是 8。一次计算加三次成功补取、一次被拒绝的第四次、再写回答,测试跑完了,所以不加步数。
`further_reading` 每领域 1–8 条,形如 `领域: references/...`,无 oracle、无治理文件。索引上限 24 改为 48。共享方法正文没有加长。
临时上限:卡 ≤ 20,000 字符,加清单 ≤ 26,000。最终上限等 T6,本单不定。
## T6 / T7 · 环境缺口
本机没有模型 key。没有寻找、没有读取、没有发明 key。没有输入 token、首字时间、总耗时、空答率,也没有生平回测的冲突数。这两项不能写成通过。
## 系统提示
BUG-1256 修完后的本命系统提示是 26,591 字符,上限 26.6K。本单只把「补取一次」那句改成「最多三次」,新句短 20 字符。按 Linux 上真实技能文件(本机该文件是一行相对指针)用同一套摘录规则测量:26,571 字符,仍 ≤ 26,600。方法块仍小于 4,000。首轮形状与口吻没有改。新增读法在清单里。
## 本机验证
- `tsc --noEmit`:退出码 0。
- `npm run lint`:退出码 0,0 error。既有 warning 未动。
- 相关前端测试:综合判断表、补取 3/4、清单、资料目录、口吻、预算断言通过。
- `skill-binding.test.ts` 开头两条在本机失败:`skills/jyotish-vedic-astrology/SKILL.md` 在 Windows 上是一行 `../../SKILL.md`,不是符号链接。该文件本单没有改。Linux 上 `readFileSync` 会跟到真文件。其余该文件测试通过,方法块长度断言通过。
- Python:`tests/test_consult_card_full_source.py`(不含三张公开盘的快测)与 `tests/test_api_server_growth_contract.py` 通过。三张公开盘的未命中耗时见上表,通过。
- 未跑:Linux 全量、快速门、`npm test` 全套、`next build`、浏览器走查。不能声称这些通过。
## 改过的既有断言
| 位置 | 原值 | 新值 | 原因 |
| --- | --- | --- | --- |
| 补取上限 | 1 | 3 | 产品 2026-10-08,BUG-1294 |
| 补取测试 | 第二次拒绝 | 第三次成功、第四次拒绝 | 同上 |
| 系统提示句子 | once | at most three times | 同句短 20 字符,BUG-1256 |
| 共用清单条数 | 8 | 9 | 受冲只计数、资料用 skill_read,BUG-1293 |
| 清单字段扫描 | 只放过 blocked | 再放过 skill_read、further_reading | 这两个词是工具和目录名 |
| 卡预算三处 | 12,500 / 18,500 | 20,000 / 26,000 | 产品临时上限,最终等 T6 |
资料目录测试改为按 12 个领域检查真实路径。行走源码的测试在 Windows 上改用 `fileURLToPath`,期望的相对路径名单没变。
## 明确没做
没有 `git push`,没有推 `staging`,没有改 workflow,没有提升 `main`。没有模型 key。
+2 -3
View File
@@ -129,9 +129,8 @@
| 任务书 | 进度 | 主题 | 状态 | 落点 |
| --- | --- | --- | --- | --- |
| `TASK-consult-card-full-source-20261007.md` | — | **对话数据卡与报告同源 + 领域综合判断表**:事业卡只有约 7,600 字符、无自然代表星、无大运主星关系、D10 联动只能补取、补取上限 1;全 12 领域;综合判断表、参与清单(不止 D1/D9,含精度闸)、补取 3 次、资料目录均已确认;KP 不上卡、不联网、不接书籍语料;排在 sync6 与报告单之后 | 验收未通过(`35dafd1e`,见 fix-20261009) | — |
| `TASK-consult-card-full-source-fix-20261009.md` | — | **对话卡同源修复**:缓存键无日期致当前大运冻结、整卡 37.5K(每格带内部路径)、星照整列 blocked(资料库其实有出处)、前端测试手写数据、无预热;合入前用临时 key 跑模型 A/B 与生平回测 | F1–F5 已验收,F6 未过(`e47c161a`,见 fix2) | — |
| `TASK-consult-card-full-source-fix2-20261009.md` | — | **对话卡同源第二轮**:齐达内事业被「水星=说写算」带偏致严重冲突 1→3;事业清单加「代表星只看力量受冲、不按星性猜职业」后重跑回测(≤1 才合入);预热改为不占重计算名额 | 待领取 | — |
| `TASK-consult-card-full-source-20261007.md` | `PROGRESS-consult-card-full-source-20261007.md` | **对话数据卡与报告同源 + 领域综合判断表**:事业卡只有约 7,600 字符、无自然代表星、无大运主星关系、D10 联动只能补取、补取上限 1;全 12 领域;综合判断表、参与清单(不止 D1/D9,含精度闸)、补取 3 次、资料目录均已确认;KP 不上卡、不联网、不接书籍语料;排在 sync6 与报告单之后 | 验收未通过(`35dafd1e`,见 fix-20261009) | `codex/consult-card-full-source-20261007` |
| `TASK-consult-card-full-source-fix-20261009.md` | — | **对话卡同源修复**:缓存键无日期致当前大运冻结、整卡 37.5K(每格带内部路径)、星照整列 blocked(资料库其实有出处)、前端测试手写数据、无预热;合入前用临时 key 跑模型 A/B 与生平回测 | 待领取 | — |
| — (产品 09-27 拍板 D1–D4,直接执行) | [PROGRESS](PROGRESS-home-landing-blank-20260927.md) | **登录后 / 裸 `/` 落空白首页**:真机登录后在「首页」提问其实问进了上一次生时校正。删登录返回存根(401 / 次级页链接写、登录后写回 `?c=` 打开),裸 `/` 不再落最近会话,一律当前人物的空白首页(复用空草稿);`?c=` / `?new=1` / 对话内刷新不变;推翻 BUG-1038 存根与 BUG-599 默认落点 | 已验收(真机欠) | `codex/home-landing-blank-20260927`(BUG-1052,本地未推) |
| — (产品 09-26 口头拍板 D1–D3,直接执行) | `PROGRESS-consult-answer-truncation-20260926.md` | **普通咨询回答写到一半被掐断仍扣点(BUG-1051,复发自 BUG-305)**:工具循环与写回答共用 110 秒 signal;Mastra 1.50 超时不抛错(`abort` 块 + `finish(tripwire)` 后正常关流),结算只认抛错与 `length`。D1 写回答自有 70 秒时钟(首用起算,续写 / 回答重试共用,最坏 180 秒,`maxDuration` 240);D2 写回答的最后一个流不是 `stop` 且有正文 → `answer_truncated`、不扣点、记 abort 步、不冲半句,`length` 续写不变;D3 观测加 `composeFinishReason` / `composeAborted` / `answerVisibleChars` | 已验收(真机欠) | `codex/consult-answer-truncation-20260926`(本地,未推送);新回归 15 条用真实 Mastra `Agent`(修复前 11 条红);全量失败名单 0 新增;Python 948/1;`/` ○、gzip 0%;真机清单 `docs/testing/consult-answer-truncation-20260926.md` |
| `TASK-consult-evidence-card-research-20260927.md` | `PROGRESS-consult-evidence-card-research-20260927.md` | **普通对话数据卡调研**:引擎输出逐项分五类计量(现约 4 万 token、父母问题相关约 3.5%);四处领域→技法来源对账并起草各领域数据卡(家庭拆父母/子女);卡体量与逐字一致性;按卡算的提速空间;反馈迭代埋点方案。只调研不改线上 | 已验收(待产品拍板 7 项) | `codex/consult-evidence-card-research-20260927` 快进 staging;报告 `docs/research/consult_evidence_card_research_2026_09_27.md`;投影缺口记 BUG-1054 investigating |