产品 2026-09-14 拍板:用户有医院记录而校正区间不含那一分钟时,记录优先、分歧 如实呈现。依据写进任务书:holdout 上六题后头名命中只有 0.80/0.55/0.35,不足以 推翻书面记录;但医院记录也确有抄录误差,所以不能反过来否定校正结果。行为上 「记录优先」已经成立(不点采用就继续用填报时间),本单只做文案与入口:冲突时 校正区间标成证据倾向,采用按钮改成「改用校正结果」,并禁止任何「记录不准」 或「校正无效」的表述。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
83 lines
5.3 KiB
Markdown
83 lines
5.3 KiB
Markdown
# TASK · 记录与校正区间冲突时:记录优先,分歧如实呈现 — 2026-09-14
|
||
|
||
- 基线:`origin/staging` @ `c5fbee56`(BUG-690 已实现,**尚未部署**;staging 当前跑 `cf972f40`)。
|
||
- 分支:`codex/rectification-record-conflict-copy-20260914`,worktree `.worktrees/rectification-record-conflict-copy-20260914`。
|
||
- 关联:BUG-690(来源标签,本单是它的 D4 收口)、上游流程纪律 R2、BUG-587(不得把代表分钟说成已确认分钟)。
|
||
- 串行:只改文案层与采用入口措辞;不改打分、判据、采用逻辑。
|
||
|
||
## 1. 背景与产品拍板
|
||
|
||
BUG-690 把出生时间来源分成三类并分档措辞,但**留了一个问题没定**:用户有医院记录、而校正区间不含那一分钟时,产品态度是什么。当前实现只并列陈述:
|
||
|
||
```
|
||
出生记录时间 04:40。目前范围不含这一分钟,相差 8 分钟
|
||
```
|
||
|
||
**产品负责人 2026-09-14 拍板:记录优先,分歧如实呈现。**
|
||
|
||
拍板依据(两条都写进记录,避免以后被当成随意决定):
|
||
|
||
1. **我们的证据强度撑不起推翻书面记录。** 20 例封存基准上,六题之后头名簇命中率是 0.80 / 0.55 / 0.35(±10 / ±30 / ±60 分钟窗,见 `docs/research/cluster_width_2026_09_14.md`)。宽窗里有一半以上概率排错头名。
|
||
2. **但医院记录确实会错**(事后补记、四舍五入到 5 分钟整、家属转述),所以不能反过来宣布校正结果无效——两者必须并列,只是默认值站在记录这边。
|
||
|
||
## 2. 决策记录
|
||
|
||
| 决策 | 内容 |
|
||
| --- | --- |
|
||
| D1 | **默认仍按出生记录时间排盘。** 这在行为上已经成立:采用(accept)是用户主动动作,不采用就继续用填报时间。本单**不改这条行为**,只把它说清楚。 |
|
||
| D2 | **校正区间在冲突时标成「证据倾向」。** 文案要点:①默认还是按你的出生记录时间排盘;②这些经历指向的是另一段时间,相差 N 分钟;③你可以改用校正结果,也可以继续用记录。 |
|
||
| D3 | **采用入口在冲突时改措辞**:不是「采用」,而是**「改用校正结果」**,并在确认处再说一次"这会把之后的排盘从出生记录时间换成 hh:mm"。用户能一眼看懂自己在换什么。 |
|
||
| D4 | **系统永远不得表述为「你的出生记录错了」/「记录不准」**,也不得反过来说「校正结果无效」。只陈述差值与各自依据。这条进 Skill 与 `frontend/docs/VOICE.md`。 |
|
||
| D5 | 不改打分、判据、置信度与确认门控;不改采用的技术流程;不动数据库。 |
|
||
|
||
## 3. 硬红线
|
||
|
||
1. `tsc --noEmit` 0 错;`npm run lint` 0 error;`npm test` 失败数 = 基线 27 条;`next build` 通过且 `/` 仍 `○ Static`。
|
||
2. 新文案对照 `frontend/docs/VOICE.md`;改 UI 的提交同时更新 `frontend/DESIGN.md`。
|
||
3. 不得新增多余入口(产品偏好:多余入口宁可删除也不修)——「改用校正结果」复用既有采用按钮,只换措辞与确认文案。
|
||
4. 不得把代表分钟说成已确认的出生分钟(BUG-587 红线维持)。
|
||
|
||
## 4. 任务分解
|
||
|
||
### 任务 1 · 冲突文案(P0)
|
||
|
||
- `frontend/src/lib/rectification-agentic/birth-time-provenance.ts` 的 `reportedTimeOffsetCopy` 在 `hospital_record` + 落在范围外时,按 D2 三要点出文案(现在只有前半句)。
|
||
- 验收标准:行为单测——`hospital_record` + 记录在范围外 → 文案含「默认仍按…排盘」与「可以改用校正结果」两层意思,且**不含**「记录不准 / 记录错了 / 以证据为准」这类措辞(正则锁);记录落在范围内时文案不变。
|
||
|
||
### 任务 2 · 采用入口措辞(P0)
|
||
|
||
- 冲突状态下交付卡的采用按钮文案改成「改用校正结果」,确认处补一句"之后的排盘会从出生记录时间 hh:mm 换成 hh:mm"。
|
||
- 非冲突状态(无记录、或记录落在范围内)维持现有「采用」措辞。
|
||
- 验收标准:行为单测覆盖两种状态的按钮与确认文案;`agent-voice-copy-contract.test.ts` 同步补例。
|
||
|
||
### 任务 3 · Skill 与 VOICE(P1)
|
||
|
||
- `skills/jyotish-birth-time-rectification/references/candidate-comparison.md`:在 BUG-690 新增的「出生时间来源标签」一节后面补冲突处置规则(D1–D4)。
|
||
- `frontend/docs/VOICE.md` 增一条禁止措辞。
|
||
- Skill 若 bump,旧 Case 仍绑旧版本,并验历史 Case 能打开(BUG-621 教训)。
|
||
|
||
### 任务 4 · 记录
|
||
|
||
- `docs/BUG_HISTORY.md` 新增 **BUG-691**(`resolved`);防复发条:**记录与校正冲突时默认站在记录一边,但两者必须并列;系统不得宣布任何一方无效。**
|
||
- `CHANGELOG.md` 一行;`PROGRESS-rectification-record-conflict-copy-20260914.md`;`docs/testing/` 清单:造一个有医院记录、校正区间不含该分钟的案子,检查文案与按钮。
|
||
|
||
## 5. 让步顺序
|
||
|
||
1. 任务 1、2 必做。
|
||
2. 任务 3 可只改 references 不 bump,在进度记录里说明。
|
||
|
||
## 6. 开工前置命令
|
||
|
||
```bash
|
||
git fetch origin --prune
|
||
git worktree add -b codex/rectification-record-conflict-copy-20260914 \
|
||
.worktrees/rectification-record-conflict-copy-20260914 origin/staging
|
||
cd .worktrees/rectification-record-conflict-copy-20260914
|
||
ln -s /workspace/Jyotisha/.venv .venv
|
||
cd frontend && npm ci
|
||
```
|
||
|
||
## 7. BUG 编号起点
|
||
|
||
- 起点 **BUG-691**(当前最大号 690)。
|