fix(rectification): 记录与校正区间冲突时记录优先、分歧并列(BUG-691)
Independent Staging Quality Gate / validate (push) Canceled after 3m23s
Independent Staging Quality Gate / publish (push) Canceled after 0s

医院记录那一分钟落在校正区间外时,交付卡以前只说一句「相差 N 分钟」:
没说默认按哪个时间排盘,采用按钮也仍写中性的「更像这个」,用户看不出
点下去会把之后的排盘换成另一分钟。

产品负责人 2026-09-14 拍板「记录优先,分歧如实呈现」:

- 冲突文案补满三层——默认仍按出生记录时间排盘、经历指向另一段时间相差
  N 分钟、两条路都可以走。
- 冲突态采用按钮改「改用校正结果」,按钮下按列写明
  「选它之后,排盘会从出生记录时间 hh:mm 换成 hh:mm」。
- 新增 FORBIDDEN_RECORD_VERDICT_PHRASE 锁住 D4:不得宣布记录不准,
  也不得宣布校正结果无效。

只改文案层与采用入口措辞。打分、判据、采用 RPC、置信度与确认门控、
数据库一律未动;不新增入口、不加确认弹窗;记录落在范围内或来源是
「大概时间 / 时间段」时卡片与今天完全一致。Skill 未 bump,只补
references §6.1。

验收:tsc 0 错;lint 0 error;npm test 3335 项 fail 31,失败清单与基线
37e6c519 逐条一致(全部是无 Docker / 无外网的既有环境缺口);next build
通过且 / 仍 ○ Static;首屏 chunks gzip +269 B(+0.019%)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JUei7K13cYxLHE3Axe4A45
This commit is contained in:
Jesse_Chen
2026-09-16 02:02:03 +00:00
co-authored by Claude Opus 5
parent 63c419f375
commit 6df40c322c
16 changed files with 505 additions and 6 deletions
+16
View File
@@ -10758,6 +10758,22 @@
- 复发自:无
- 修复版本:待发布
## BUG-691 | 医院记录与校正区间冲突时只并列差值,不说默认按哪个排盘,用户不知道点「更像这个」会换掉什么
- 状态:resolved
- 首次发现:2026-09-14
- 最近更新:2026-09-16
- 影响面:`frontend/src/lib/rectification-agentic/birth-time-provenance.ts``v9/divergence-panel.ts``components/rectification-range-delivery.tsx``frontend/docs/VOICE.md``frontend/DESIGN.md`、Skill `references/candidate-comparison.md`
- 用户现象:录入选了「医院记录」且记录那一分钟落在目前范围外时,交付卡只有一句「出生记录时间 04:40。目前范围不含这一分钟,相差 8 分钟」。没说默认按哪个时间排盘,也没说还能继续用记录;采用按钮仍写中性的「更像这个」,点下去实际上把之后的排盘从出生记录时间换成了另一分钟,用户看不出自己在换什么。
- 触发条件:`birth_time_source = hospital_record`,且 `reported_birth_time` 落在 `credible_range` 之外,进入区间交付卡。
- 根因:BUG-690 定了三档来源标签,但把「记录与范围冲突时站哪边」显式挂给产品负责人未决,所以冲突文案只实现了并列差值的前半句;采用入口本就是为非冲突态设计的「更像这个」,没有随来源分档。
- 修复:产品负责人 2026-09-14 拍板「记录优先,分歧如实呈现」(依据:`docs/research/cluster_width_2026_09_14.md`,封存 20 例六题后头名簇命中率 0.80 / 0.55 / 0.35 对 ±10 / ±30 / ±60 分钟窗,证据强度撑不起推翻书面记录;但医院记录确实会因事后补记、五分钟整数舍入、家属转述而错,故不得反过来宣布校正结果无效)。`reportedTimeOffsetCopy` 的冲突分支补满三层:默认仍按记录排盘 / 经历指向另一段时间差 N 分钟 / 两条路都可以走。新增 `recordRangeConflict` 作为唯一的冲突判据,经 `RangeDeliveryProjection.record_conflict` 投给交付卡:冲突态按钮写「改用校正结果」,按钮下补一行「选它之后,排盘会从出生记录时间 hh:mm 换成 hh:mm」。只改文案与措辞,不改打分、判据、采用 RPC、置信度与确认门控,不动数据库,不新增入口。
- 验证:`frontend/tests/rectification-record-conflict-copy-20260916.test.ts`(冲突判据只认落在范围外的医院记录;冲突文案含三层且不触 `FORBIDDEN_RECORD_VERDICT_PHRASE`;记录落在范围内的文案逐字不变;冲突态按钮与逐列确认句;`approximate` / `period_only` / 记录在范围内三态仍是「更像这个」且无确认句;投影往返后候选与代表分钟不变)。`rectification-birth-time-provenance-20260914.test.ts` 一条断言按「原值 / 新值 / 原因」三栏改写(该用例的 05:12 对 04:48–05:07 本就是冲突态)。`tsc --noEmit` 0 错,`npm run lint` 0 error`npm test` 失败数与基线同为 31 条且逐条同名(全部是无 Docker / 无外网的既有环境缺口)。
- 防复发:记录与校正冲突时默认站在记录一边,但两者必须并列;系统不得宣布任何一方无效——不得写「记录不准 / 记录错了 / 以证据为准」,也不得写「校正结果无效 / 不作数」。该禁令由 `FORBIDDEN_RECORD_VERDICT_PHRASE` 在文案层锁住,并写进 `frontend/docs/VOICE.md` 与 Skill `references/candidate-comparison.md` §6.1。冲突态改的只能是措辞,采用仍是校正采用时间,不是已确认的唯一出生分钟(BUG-587 红线维持)。
- 相关记录:BUG-690、BUG-587、BUG-621
- 复发自:无
- 修复版本:待发布
## BUG-692 | 交付邀请语写「这两分钟」却与同段「4 个候选」矛盾;5 条契约断言未跟上
- 状态:resolved