diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b7a042c..08a901d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # 印度占星 Skill 更新日志 +## 2026-10-01 — 校正后判断不了的分盘,聊天和报告会说出来(待验收) + +- 用新版生时校正采用了出生时间、而校正卡上 D9(婚恋)或 D10(事业)写着「判断不了」的用户:聊天里问到婚恋 / 事业时,回答会用一句大白话说明这张盘在出生时间范围里会变、判断不了,只看本命盘和大运,不按它下结论(BUG-1138)。 +- 新生成的个人报告里,这些分盘的图盘和数值位置表下面各加一行「提示:出生时间范围内这张盘的上升会变,这一节仅供参考。」,英文版同步;图和表照常保留(BUG-1139)。 +- 旧版校正采用的、没校正过的资料,聊天上下文和报告正文与之前逐字节相同;已经生成的旧报告不回改。 +- Skill 版本不 bump(Skill 文本未改);不改数据库结构。 + ## 2026-10-01 — 普通对话改说人话:先给结论,问到几个人就分几段讲(未部署) diff --git a/docs/BUG_HISTORY.md b/docs/BUG_HISTORY.md index f54a8068..ecfdfa7e 100644 --- a/docs/BUG_HISTORY.md +++ b/docs/BUG_HISTORY.md @@ -15224,6 +15224,35 @@ - 防复发:同上合同测试。 - 相关记录:BUG-1132 - 修复版本:分支 `codex/consult-plain-answer-20261001`(未部署) +## BUG-1138 | 校正采用后聊天不知道哪些分盘判断不了,照样按存下的分钟读 D9 / D10 + +- 状态:resolved(代码 + 回归测试;未部署,真机与真实模型待部署后复核) +- 首次发现 / 最近更新:2026-10-01 / 2026-10-01 +- 影响面:`frontend/src/lib/report-candidate-range.ts::loadReportCandidateRange`(聊天与报告共用)、`frontend/src/lib/consultation-route-service.ts::prepareConsultationRoute`、`frontend/src/mastra/consultation-workflow.ts::runConsultationWorkflow` / `projectEvidenceContract`、`frontend/src/lib/consultation-birth-time-mode.ts`。 +- 用户现象:盘型口径的交付卡对宽窗口用户写「D9 / D10 分不开」,但采用后在聊天里问婚恋 / 事业,回答照样按存下的那一分钟读 D9 / D10 下结论,没有任何提示。 +- 触发条件:资料 `active_birth_provenance.contract = "segment-v1"`,且该次校正结果 `segment_summary` 中目标分盘档位为 `blocked` 或 `indistinct`。 +- 根因:盘型口径只改了校正交付卡;下游聊天只拿一个分钟与采用区间,不读分盘档位(旧版校正同样如此,旧版连卡片都不提示)。 +- 修复:新模块 `rectification-adopted-chart-tiers.ts` 按来源记录读该 Case 的档案(`get_agentic_rectification_case_dossier`,服务账号),解析 `segment_summary`(采用的那次结果;若之后同一 Case 有更新的结果则用更新的,不跨 Case),5 分钟缓存;共用的范围读取函数在有不可判分盘时附带 `unreliableVargas`。聊天把它写进排盘工具输入,工作流调用时从发给引擎的载荷里剔除,写入 `answer_policy.unreliable_vargas` / `deterministic_claims_forbidden_for` 与一句服务端说明(VOICE「采用后判断不了的分盘」)。为不改另一单正在改的 `consult/route.ts`,挂接点放在路由已经注入的范围读取函数里。 +- 验证:`tests/rectification-adopted-chart-tiers.test.ts`(segment-v1 / 旧采用 / 未校正 / 结果缺失 / 摘要损坏五种输入、跨 Case 拒绝、缓存);`tests/rectification-chart-tier-caveats-consult.test.ts`(范围读取 A/B、工具输入 A/B 与旧资料字节快照、引擎载荷不含该字段、模型数据包带策略与说明);旧资料聊天工具输入、引擎请求、工作流上下文、模型数据包与基线 `437dcecb` 逐字节相同(脚本见 PROGRESS);`tests/database-segment-adoption.test.ts` 追加真库读取断言(PostgreSQL 17 本地替身,正式证据待真 Docker)。 +- 防复发:读取失败只记日志不阻断聊天;非 segment-v1 资料不发 RPC;模型侧沿用 `mastra/index.ts` 既有「`deterministic_claims_forbidden_for` 是硬禁令」规则,不新增提示词。 +- 相关记录:BUG-1115~1117、BUG-1131、BUG-1139、BUG-690 +- 复发自:无 +- 修复版本:`codex/rectification-chart-tier-caveats-20261001`(未合入、未部署) + +## BUG-1139 | 校正采用后新报告不标注判断不了的分盘 + +- 状态:resolved(代码 + 回归测试;未部署,真机待部署后复核) +- 首次发现 / 最近更新:2026-10-01 / 2026-10-01 +- 影响面:`frontend/src/lib/personal-report-longform-generate.ts::generatePersonalReportLongform`、新模块 `frontend/src/lib/personal-report-chart-caveats.ts`;报告读取范围同 BUG-1138 的共用函数。 +- 用户现象:宽窗口用户采用后生成的个人报告,D9 / D10 图盘与数值位置表照常呈现,读者不知道这几张盘在出生时间范围里会变。 +- 触发条件:同 BUG-1138,且生成新报告(长报告路径;写作模型路径在生产关闭)。 +- 根因:同 BUG-1138,报告链路不读分盘档位。 +- 修复:长报告取回引擎正文后、计算快照哈希前,在不可判分盘的图盘标题(`D9 …`、`Navamsha`、`D10 …`)与数值位置表标题下各插一行固定提示,中英文正文各用本语言;按标题里的盘代号匹配,不匹配正文;幂等。图盘卡片解析允许标题与图之间恰好一段说明,提示行成为图注,网格不拆。发给引擎的载荷不变,不改 Python;写作模型路径(`demoteThemesMissingRequiredCharts`)生产关闭,本轮不接。 +- 验证:`tests/rectification-chart-tier-caveats-report.test.ts`:旧资料 / 空档位正文逐字节不变;读者版真实输出(虚构出生)D9+D10 命中 5 个标题、只标 D9 时命中 3 个、表格行数不变、幂等;英文版命中英文标题且提示无汉字;密度版真实输出图盘卡片数不变且 3 张卡带提示图注;生成流程 A/B:引擎载荷相同、旧资料落库正文与引擎原文逐字节相同、新资料只多 3 行提示。 +- 防复发:提示只加在新生成报告的快照里,旧报告不回改;匹配基于引擎盘代号,若引擎改标题需同步 `CHART_PATTERNS` 与测试。 +- 相关记录:BUG-1138、BUG-1115~1117、BUG-1016(图盘网格) +- 复发自:无 +- 修复版本:`codex/rectification-chart-tier-caveats-20261001`(未合入、未部署) ## BUG-1140 | staging 镜像打包失败:`frontend/scripts` 下的研究脚本引用了 `frontend/tests` 的夹具 diff --git a/docs/tasks/PROGRESS-rectification-chart-tier-caveats-20261001.md b/docs/tasks/PROGRESS-rectification-chart-tier-caveats-20261001.md new file mode 100644 index 00000000..68239bc1 --- /dev/null +++ b/docs/tasks/PROGRESS-rectification-chart-tier-caveats-20261001.md @@ -0,0 +1,78 @@ +# PROGRESS · 报告与聊天标注判断不了的分盘(2026-10-01) + +任务书:`TASK-rectification-chart-tier-caveats-20261001.md`(BUG-1138 / BUG-1139)。执行:Claude fork 子代理。分支 `codex/rectification-chart-tier-caveats-20261001`,基线 `origin/staging` @ `437dcecb`。只 commit,未 push。 + +## 环境 + +Linux,Node 22.14(`/exec-daemon/node`),Python 3.13(系统 `python3`,本机无 `.venv`)。`frontend/node_modules` 用 `cp -al` 硬链主检出(同一 lockfile;Turbopack 不接受软链),未执行 `npm ci`。基线在独立 worktree `.worktrees/tier-caveats-base`(`437dcecb`)同机同依赖量。无 Docker:真库断言用 PostgreSQL 17.9 本地替身,正式证据待产品真 Docker。 + +## 实现 + +| T | 内容 | 提交 | +| --- | --- | --- | +| T1 | `frontend/src/lib/rectification-adopted-chart-tiers.ts`:仅 `active_birth_provenance.contract === "segment-v1"` 时按 `case_id` 读 `get_agentic_rectification_case_dossier`(服务账号),解析 `latest_result.decision_receipt.inference_state.segment_summary`,`blocked` / `indistinct` → 不可判分盘;同 Case 有更新结果用更新的,跨 Case 拒绝;5 分钟缓存;失败记日志返回 null | `5f279214` | +| T2 | 聊天:共用范围读取 `loadReportCandidateRange` 在 segment-v1 时附带 `unreliableVargas`(经服务账号读资料来源列,`20260927020000` 已授列权);`prepareConsultationRoute` 写入排盘工具输入 `unreliable_vargas`;`runConsultationWorkflow` 从引擎载荷剔除该字段,并经 `applyUnreliableVargasToWorkflowContext` 写 `answer_policy.unreliable_vargas` / `deterministic_claims_forbidden_for` 与一句 `user_facing_limitation`;`projectEvidenceContract` 把两项透传进模型数据包。**未改** `consult/route.ts`、`product-voice.ts`、`consultation-evidence-card.ts`、`consultation-thinking-plan.ts`(挂接点在路由已注入的范围读取函数) | `e68ac9b2` | +| T3 | 报告:`frontend/src/lib/personal-report-chart-caveats.ts` 在不可判分盘的图盘标题与数值位置表标题下插一行提示;`generatePersonalReportLongform` 在计算快照哈希前对中英文正文各自应用;引擎载荷不变,不改 Python | `6372ad8a` | +| 真库 | `tests/database-segment-adoption.test.ts` 追加:采用后服务账号读来源列 + 档案 RPC → `{ source: "segment-v1", resultMatch: "adopted", unreliable: [] }` | `da88c325` | +| T4 | BUG-1138 / 1139、CHANGELOG、VOICE、DESIGN、真机清单、本记录、README | 末提交 | + +## helper 五种输入(T1 测试) + +| 输入 | 输出 | +| --- | --- | +| segment-v1,结果 D9/D10 blocked(虚构 ±60 宽窗) | `{ source: "segment-v1", resultMatch: "adopted", unreliable: ["D9","D10"] }`,1 次 RPC | +| 旧采用(`contract: "candidate-v2"`) | `null`,0 次 RPC | +| 未校正(provenance 为 null) | `null`,0 次 RPC | +| 结果缺失(RPC 报错 / 档案无 latest_result) | `null` + 警告 `P0001` / `invalid_segment_summary` | +| 摘要损坏(档位与占比不一致) | `null` + 警告 `invalid_segment_summary` | + +另:真实引擎扫描(公开 AA,31 分钟)窄窗 → D1 certain、D9/D10 credible,不标注。 + +## 聊天 A/B + +- 工具输入:segment-v1 多 `unreliable_vargas: ["D9","D10"]`,其余字段与旧采用逐字节相同;旧采用工具输入字节快照锁在测试里。 +- 引擎载荷:带 / 不带 `unreliable_vargas` 逐字节相同(字段不出站)。 +- 上下文与模型数据包:segment-v1 多 `answer_policy.unreliable_vargas`、`deterministic_claims_forbidden_for`,`user_facing_limitation` 末尾追加「你的出生时间范围里,婚恋(D9)、事业(D10)的上升会变,这几张盘判断不了;涉及它们的部分只看本命盘和大运,不按它们下结论。」 +- **旧资料逐字节不变(硬红线 1)**:基线 worktree 与本分支各跑同一脚本(`scratchpad/tier/peek2.ts`、`peek3.ts`):旧采用聊天工具输入 `cmp` 相同;真实工作流 golden 下「引擎请求 + 工作流上下文 + 模型数据包」226,949 字节 `cmp` 相同。 + +## 报告 A/B + +- 引擎载荷:旧 / 新资料逐字节相同。 +- 落库正文:旧资料 = 引擎原文逐字节;新资料(D9+D10)多 3 行(密度版真实输出:D9 两处、D10 一处图盘标题),删去这 3 行后与引擎原文相同;图盘数不变。 +- 读者版真实输出(虚构出生)命中标题:`##### Navamsha`、`##### D9 九分盘`、`##### D10 Dasamsa`、`#### D9 九分盘 数值位置表`、`#### D10 Dasamsa 数值位置表`;英文版:`##### Navamsha`、`##### D9 Navamsa`、`#### D9 Navamsa Position Table`。 +- 样例: + +``` +##### D9 九分盘 + +提示:出生时间范围内这张盘的上升会变,这一节仅供参考。 + +(图盘) +``` + +- 图盘网格:卡片解析允许标题与图之间恰好一段,提示行成为图注;密度版卡片数前后相同,3 张卡带该图注。 + +## 门禁(基线 `437dcecb` vs 本分支,同机同依赖) + +| 检查 | 基线 | 本分支 | +| --- | --- | --- | +| tsc | 0 | 0 | +| lint | 0 error / 126 warning | 0 error / 126 warning | +| npm test | 4809 / pass 4744 / fail 24 / cancel 0 / skip 41 | 4823 / pass 4758 / fail 24 / cancel 0 / skip 41;失败清单逐名相同,基线名 0 丢失,新增 14 | +| `/` | Static | Static | +| 首屏 gzip(`/` 预渲染 HTML 引用 JS + CSS,gzip -9) | JS 555,325 / CSS 68,764 | JS 555,325 / CSS 68,764(±0.00%) | +| 快速门 Python | 1036 passed / 1 skipped | 1036 passed / 1 skipped / 0 failed | +| 快速门 npm 步 | 24 环境失败(Docker / PG / 部署) | 同 24 条 | +| 真库(替身)`database-segment-adoption.test.ts` | — | 2/2 | +| 隐私守卫 | — | 通过 | + +## 改动的既有断言 + +无。`tests/database-segment-adoption.test.ts` 只追加断言,未改既有断言。 + +## 缺口 + +- 真 Docker 未跑(替身证据);真机与真实模型输出待部署 staging 后按 `docs/testing/rectification-chart-tier-caveats-20261001.md` 走。 +- 写作模型报告路径(`PERSONAL_REPORT_WRITER_ENABLED = false`)未接 `demoteThemesMissingRequiredCharts`;该路径生产关闭,开启前需补。 +- 只给图盘 / 数值位置表加提示,未给依赖 D9/D10 的主题段落(报告正文为引擎输出,无稳定的主题→分盘映射);若要按主题降级需引擎侧配合,另立单。 +- 已生成的旧报告不回改(任务书 D3)。 diff --git a/docs/tasks/README.md b/docs/tasks/README.md index 40cb7571..e76e775c 100644 --- a/docs/tasks/README.md +++ b/docs/tasks/README.md @@ -261,7 +261,7 @@ | `TASK-rectification-varga-resolution-20260930.md` | — | **「盘型口径」实现单**:交付改为「每张目标盘的上升 + 可信度档位」(≤±10:≥0.6 较可信 / 0.5–0.6 倾向 / <0.5 分不开;≤±30 只有较可信或分不开;>±30 只给 D1);按问题域取盘(婚恋 D1+D9 / 事业 D1+D10 / 综合三张);段扫描端点 + 「盘型一致不用校正」出口;按段选题仅 ≤±30;不得用占比提前停;采用落库头段交集中点。不改引擎 / 常数 / 冻结文件。红线:回放 ±10/±30 真值段保留 76/76、头段命中不低于研究「按段」列;段级汇总与研究 JSON golden 逐格一致 | 已验收(Claude 10-01,经修复单 BUG-1132;分支 codex/rectification-varga-resolution-fix-20261001) | — | | `TASK-rectification-varga-resolution-fix-20261001.md` | — | **盘型口径修复单**:F1 开案 RPC 42501(推荐包装改 security invoker,禁补属主授权)、F2 Docker 真库全量 test:db + 旧会话可打开、F3 用 `--posterior production` 重生成正式回放文件(Claude 同命令已得差 0)、F4 研究 PG harness、F5 记录。部署须先迁移 | 已执行并验收(Claude 10-01 直接执行:开案 42501 修复、history/harness 改 V10 写轮次、迁移改名 20261001*、正式回放替换;真库替身全量与 staging 一致;真 Docker 复跑与真机待产品) | 基于 review/rectification-varga-resolution-20260930 ce9d669c | | `TASK-rectification-message-cleanup-20261001.md` | — | **校正消息清理**:题干两遍(作废旧焦点仍打印题干 + 独立问题块再打印一次)→ 一屏一题干;证据轮正文改为「记下了 N 件事」+ 服务端清单可展开;校正结算后不显示「已完成 N 步」与「1.」泄漏。推翻 BUG-917 作废题留题干、VOICE 逐条复述 | 待领取 | BUG-1135~1137 | -| `TASK-rectification-chart-tier-caveats-20261001.md` | — | **报告与聊天标注判断不了的分盘**:采用后读 `active_birth_provenance`(segment-v1)→ 结果 `segment_summary` 档位,blocked/indistinct 的 D9/D10 在聊天 answer_policy 与一句说明、报告章节顶部提示 + 主题降级;旧资料逐字节不变;不改库、不改 consult/route.ts | 待领取 | BUG-1138~1139 | +| `TASK-rectification-chart-tier-caveats-20261001.md` | `PROGRESS-rectification-chart-tier-caveats-20261001.md` | **报告与聊天标注判断不了的分盘**:采用后读 `active_birth_provenance`(segment-v1)→ 结果 `segment_summary` 档位,blocked/indistinct 的 D9/D10 在聊天 answer_policy 与一句说明、报告章节顶部提示 + 主题降级;旧资料逐字节不变;不改库、不改 consult/route.ts | 已实现待验收(fork 10-01:helper + 聊天 + 报告长报告路径;旧资料聊天 / 报告逐字节不变;npm 失败清单同基线、gzip ±0.00%、快速门 Python 0 失败;真 Docker 与真机待) | BUG-1138~1139 | | `TASK-rectification-typed-event-scoring-research-20260929.md` | `PROGRESS-rectification-typed-event-research-20260929.md` | **打字经历按选择题规则计分(离线研究,不上线)**:计分通道不对称 + 已入账年份挡题;R0 学业质量题措辞 / 年精度显示成 1 月(冻结文件,需重新冻结) | 已验收(Claude 2026-09-29 合并验收:全量前端 4302/24 与基线同 24 条环境失败、tsc 0、lint 0 error、`/` Static、gzip +0.16%、快速门 pytest 1001 passed、两份回放复跑一致),待部署核对 | BUG-1088、1089 | | `TASK-report-reader-polish-20260929.md` | `PROGRESS-report-reader-polish-20260929.md` | **报告页打磨**:生成入口挪进页面主体(删标题栏按钮)、详情页到底部按钮(懒渲染一次到底)、导出按钮带文字、目录一级/二级分层、去掉「字段」与 RL/NL 缩写表头、状态列同义重复去重、报告表格淡底色、分块导出显示真实文件大小 | Claude 直接执行并自验(tsc 0、lint 0 error、全量 fail 与基线同 24 条、`/` Static、gzip +7 B、快速门 Python 1000 passed),已部署 staging `d7772011`,真机欠 | BUG-1092~1094 | | `TASK-report-english-edition-20260929.md` | `PROGRESS-report-english-edition-20260929.md` | **报告中英两版**:同一次引擎计算渲染 zh/en 两遍(不用模型翻译),瑜伽库 477 条补英文、模板与前端表头英文化;中文逐字节不变、英文零汉字、两版数字序列一致;阅读页 `?lang=en` 切换,导出当前语言 + 「问 AI 建议导出英文版」提示;旧报告不补英文 | Claude 直接执行(含两个 fork 子代理)并自验(tsc 0、lint 0 error、全量 fail 与基线同 24 条、`/` Static、gzip +0.06%、Python 定向全绿),已部署 staging `d7772011`,真机欠 | — | diff --git a/docs/testing/rectification-chart-tier-caveats-20261001.md b/docs/testing/rectification-chart-tier-caveats-20261001.md new file mode 100644 index 00000000..63088957 --- /dev/null +++ b/docs/testing/rectification-chart-tier-caveats-20261001.md @@ -0,0 +1,24 @@ +# 真机清单:校正后判断不了的分盘(BUG-1138 / BUG-1139) + +> 部署 staging 后由产品负责人用受控账号走一遍。自动化覆盖了数据与文本,这里核对真实模型与页面。 + +## 准备 + +- 一个受控测试账号,资料填一个**虚构**出生日期,出生时间来源选「大概时间」,前后误差选最宽(约 ±60 分钟)。 + +## 步骤 + +1. 发起生时校正,按提示答题直到出交付卡。卡上应只给 D1,D9 / D10 写「分盘解读需要更准的出生时间」。点「改用这个时间」采用。 +2. 回首页问一个婚恋问题(例如「我的婚姻怎么样?」)。 + - 回答里有一句大白话:出生时间范围里婚恋(D9)的上升会变、判断不了,只看本命盘和大运。 + - 回答不出现「blocked」「档位」「segment」等字样,不拒答。 +3. 再问一个与 D9 无关的问题(例如「这周适合做什么?」)。不应硬塞那句说明。 +4. 生成一份新的个人报告并打开。 + - 「本命与分盘北印度图盘」里 D9 / D10 图下有一行「提示:出生时间范围内这张盘的上升会变,这一节仅供参考。」,图照常显示,图盘网格没有被拆成两块。 + - D9 / D10「数值位置表」标题下同样有这一行,表格完整。 + - 切到 English:同位置是英文提示句。 +5. 对照:另一个**没做过新版校正**的账号生成报告,正文里没有任何这类提示。 + +## 记录 + +每步写「通过 / 不通过 + 截图」,贴回会话。 diff --git a/frontend/DESIGN.md b/frontend/DESIGN.md index ec3e0640..6415464e 100644 --- a/frontend/DESIGN.md +++ b/frontend/DESIGN.md @@ -638,6 +638,7 @@ Action results and errors never take page layout. They are toasts from `src/lib/ - **Opening a report (2026-09-30, BUG-1106):** one waiting screen, `ReportOpening` — the 46px header 「个人报告」 over a centred spinner and 「正在加载报告…」. The route's `loading.tsx` and the reader's first fetch both render it, so nothing swaps or jumps between them. - **Phones (2026-09-30, BUG-1107):** the action bar is one row, about 53px: an arrow-only back link (screen readers still hear 「返回报告中心」), the 中文 / English pill at 36px segments, and 「导出」 at 40px. In the export sheet below 767px the description line is hidden, the count is one line 「已选 n/N 块 · 约 X KB(全篇约 Y KB)」, the presets scroll sideways in a single row, 关闭 is a × icon, and the sheet may take up to 85dvh so the block list gets most of it. - **Switching editions keeps your place (BUG-1108):** the chapter at the top of the reader is remembered; the new edition renders every chapter up to it at once and scrolls back to it. +- **判断不了的分盘提示 (2026-10-01, BUG-1139):** for a segment-v1 adoption whose card left D9/D10 undetermined, the longform body carries one plain paragraph directly under each such chart heading and its 数值位置表 heading — no new component, no blockquote, no colour. Under a chart heading it becomes the chart card's caption (`report-chart-grid-rehype.ts::parseCard` accepts exactly one paragraph between heading and fence), so the chart grid never splits. Added before the snapshot hash; legacy reports are untouched. - **到底部 / 回到顶部:** one floating pill (`.report-edge-jump`, fixed bottom-right, same look as the chat's 跳到最新). It reads 「到底部」 until the reader is within 480px of the end, then 「回到顶部」 — never both. Sections below the fold mount lazily, so the click first mounts every section synchronously (`flushSync`) and then scrolls to `scrollHeight`, landing on the real end in one click. It is not a scroll follower and owns no anchor; it is hidden on paper. - **TOC rail:** a persistent right-hand column built from the outline's own `##`/`###` ids — no second slugger, and nothing that touches the chart-grid rehype pass. It is sticky under the report's own action bar, highlights the section in view via `IntersectionObserver`, and marks it with `aria-current="location"` plus a 2px `--color-action` bar. Placement is explicit (`grid-column: 2`) rather than DOM-ordered, so the narrow-screen drawer can stay first in the source. Below 860px the rail is gone and what remains is the collapsed 「目录」 drawer. - **Paper stays paper:** the rail reads in the app palette because it is chrome. `--report-paper` / `--report-rule` / `--report-accent` are the document's own, deliberately out of step with the app accent, and nothing in this surface puts them on chrome or takes chrome colour onto the page. D11, continuing D3. diff --git a/frontend/docs/VOICE.md b/frontend/docs/VOICE.md index 458d8fdf..df8a3ce8 100644 --- a/frontend/docs/VOICE.md +++ b/frontend/docs/VOICE.md @@ -200,6 +200,14 @@ Jyotisha 的可见文案是产品的一部分。正确性红线(真实性、 普通报告只留下人能读的正文、结论、行动建议和必要限制。不写字段名、状态码、评分、权重或执行账本。说不到日期就写「这次说不到具体哪一天。」依据没补上就写「有些依据还没补上,相关说法不能当成确定预测。」判断没闭合就写「有些判断还没闭合,不能写成确定结论。」不出现 `technique_truth`、`workflow_route` 这类键。 +### 采用后判断不了的分盘(2026-10-01,BUG-1138 / BUG-1139) + +新版校正采用后,卡片上 `blocked` / `indistinct` 的分盘由服务端写一句,不让模型自己编: + +- 聊天:「你的出生时间范围里,婚恋(D9)的上升会变,这张盘判断不了;涉及它的部分只看本命盘和大运,不按它下结论。」两张盘写「婚恋(D9)、事业(D10)……这几张盘判断不了;涉及它们的部分……不按它们下结论」;含 D1 时改「涉及它们的部分不按上升和宫位下结论」。用户问的不靠这张盘时不提。 +- 报告:图盘与数值位置表标题下一行「提示:出生时间范围内这张盘的上升会变,这一节仅供参考。」英文版「Note: this chart's ascendant changes within the birth-time range; treat this section as reference only.」 +- 不说「档位」「blocked」「segment」,不写分钟数;「倾向」档不提示。 + ## 普通咨询的领域名与「多看一眼」 - 领域中文名:父母、子女与原有的事业、关系、财富、身心压力、学习、迁居、家庭、年运、时运、综合并列;「家庭」只用于家里整体(家庭氛围、家里的事),问父母就说父母,问孩子就说子女。