Files
Jyotisha/docs/tasks/TASK-rectification-open-collect-invite-20260914.md
T
Jesse_ChenandClaude Fable 5 558d43c853 docs(tasks): invite one more dated event instead of saying the pool is closed
两轮研究定论:候选并列靠调打分拉不开,唯一有效手段是用户再给带年月的经历。
但七条固定采集线问完后,卡上只说「能问的都问完了」(BUG-687 引入),用户读完
就走——而交付后 case 仍是 candidate_ready,补经历本来就会重算收窄。产品拍板:
交付卡照出,卡上换成不限领域的补充邀请并举七条线之外的例子;不采用「并列时
先不出卡」(接近 BUG-646 禁止的门关不出结果)。补完必须可见生效,有行为测试守。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
2026-09-14 14:24:01 +00:00

83 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TASK · 并列时不说「问完了」,改成请用户补一件带年月的经历 — 2026-09-14
- 基线:`origin/staging` @ `a643452b`(代码最新 `963c147c`staging 已部署该 SHA)。
- 分支:`codex/rectification-open-collect-invite-20260914`worktree `.worktrees/rectification-open-collect-invite-20260914`
- 关联:BUG-687(引入「能问的都问完了」这句收口文案)、BUG-646/651/653(门关不出结果是禁止的、必须有出口)、BUG-590、BUG-688。研究背景见 `docs/research/rectification_minute_resolution_closure_2026_09_14.md`
- 串行:改 `user-copy.ts``collection-question-pool.ts` 文案层与 `rectification-range-delivery.tsx` 卡片一处;与在途分支无重叠。
## 1. 问题
两轮离线研究(定论页见上)证明:候选并列**靠调打分尺度拉不开**,目前唯一被证明有效的信息源是**用户再给一件带年月的经历**。
但产品现在的表现正好相反:
- 定向补事只覆盖固定七条线(结婚 / 收入 / 搬家 / 家人 / 学业 / 健康 / 职业)。用户答「没有发生过」就关闭该线,七条关完后,`rangeNarrowHint``collection-question-pool.ts:845-849`)输出 **「能问的都问完了」**`RECTIFICATION_USER_COPY.rangeDeliveryCollectClosed``user-copy.ts:152`BUG-687 引入)。
- 这句是终局口吻。用户读完就走了,**而他其实完全可能有第八类经历**——换专业、出国、打官司、创业、重病、亲人离世、搬迁工作城市……系统从来没请他说过。
- 真机实证:用户对结婚 / 收入 / 家人三条都答「没有 / 跳过」,只答了搬家,随即出卡 26% / 26% / 20%,然后被告知"问完了"。
**能力其实已经在了**:交付后 case 状态是 `candidate_ready`,属于 `RESUMABLE_CASE_STATUSES``v9/case-status.ts:26`),输入框不禁用;此时用户补一件带年月的经历会进账本、触发重算、候选重新打分、范围可以再收窄。**缺的只是邀请与保证。**
## 2. 决策记录
| 决策 | 内容 |
| --- | --- |
| D1 | **产品拍板(2026-09-14):并列且固定七条线问完时,交付卡照出,但卡上把「能问的都问完了」换成明确邀请。** 文案要点:①说清这两分钟按现有信息分不开;②请用户再说一件**记得年月的事,不限领域**;③给几个七条线之外的例子(换专业、出国、打官司、创业、重病、亲人离世);④说明补完会接着算。措辞对照 `frontend/docs/VOICE.md`。 |
| D2 | **不采用"并列时先不出卡、再要一轮经历"**(评估时的方案 B)。理由:接近 BUG-646 明令禁止的「门关不出结果」;用户真没有可说的时候会多一道无效问答,并可能退回开放式追问的死角。**交付卡必须照出,用户随时可以停。** |
| D3 | **邀请不得退回列举已拒答的线**(BUG-687 的修复保持有效)。邀请语是"不限领域 + 举例",不是把结婚 / 收入 / 家人再问一遍。 |
| D4 | **补完必须可见地生效。** 用户在交付卡之后说出的带年月经历,必须进账本、重算、并在界面上有可见变化(范围卡更新,或给出新一轮题)。补了没反应属于缺陷——本单要有行为测试守住。 |
| D5 | 不改判据、不改打分、不放宽置信度或确认门控;不新增卡片组件;Skill 版本按是否改用户可见话术决定是否 bump(改了就 bump 并在 `CHANGELOG.md` 写明)。 |
## 3. 硬红线
1. `tsc --noEmit` 0 错;`npm run lint` 0 error`npm test` 失败数 = 基线 27 条;`next build` 通过且 `/``○ Static`;首屏 gzip ±2%。
2. 新增断言必须是行为断言。
3. 不得让邀请变成阻塞:交付卡、采用入口、"新建对话按此时间排盘"的出口都要照常可用。
4. 不得把邀请写成承诺(「再说一件就能定到分钟」这类)。实话是"能不能再收窄取决于这件事落在哪段大运边界上"。
## 4. 任务分解
### 任务 1 · 文案(P0
- `user-copy.ts:152``rangeDeliveryCollectClosed` 改成邀请语(按 D1 四要点);保留一个独立常量名以便测试与 VOICE 对照。
- `collection-question-pool.ts:845-849` 两处返回点同步;`现在还剩 XY 里 N 个候选。` 这半句保留。
- 验收标准:行为单测——七条线全部 declined 时,`rangeNarrowHint` 的输出**不含**「问完了」类终局措辞,**包含**"不限领域"的邀请与至少两个七条线之外的例子;且不含结婚 / 收入 / 添丁等已拒答线的字样(BUG-687 回归)。
### 任务 2 · 交付卡把邀请放在看得见的位置(P0)
- `frontend/src/components/rectification-range-delivery.tsx`:并列(前两名相对可能性差 ≤ 3 个百分点)且采集线已关闭时,邀请语要出现在卡片正文区,不能只躺在时间轴那行浅色小字里。
- 不新增组件、不新增第二套卡片路径(§6 红线)。
- 同一提交更新 `frontend/DESIGN.md` 的交付卡条目。
- 验收标准:行为单测/快照——该状态下卡片渲染包含邀请文本;非并列或采集线仍开放时不显示该邀请。
### 任务 3 · 补完必须生效(P0)
- 走查并用行为测试固定:交付卡之后用户输入一件带年月的经历 → 证据入账 → 重算 → 快照的 `credible_range` / 候选分数有变化,或给出新一轮题。
- 验收标准:行为单测(可用既有 fakeAccounting 套路)——交付态 + 新增一件 confirmed dated evidence → `decideFromDossier` 的结果不再是同一份快照(`snapshotCurrent === false` 或候选分数变化),且界面状态不停在 `delivered`
### 任务 4 · 记录
- `docs/BUG_HISTORY.md` 新增 **BUG-689**`resolved`):现象写"七条线问完后只说『能问的都问完了』,用户不知道还能补经历,也不知道补了有用";防复发条写明:**采集线关闭不等于校正结束;交付卡必须给出不限领域的补充邀请,且补充必须可见地生效。**
- `CHANGELOG.md` 一行;`PROGRESS-rectification-open-collect-invite-20260914.md``docs/testing/` 清单:并列出卡后补一件带年月的经历 → 范围或排序应有可见变化。
## 5. 让步顺序
1. 任务 1、任务 3 必做(文案 + 补完真的有用)。
2. 任务 2 若卡片布局改动风险大,可先只改文案位置不改结构,写进进度记录。
## 6. 开工前置命令
```bash
git fetch origin --prune
git worktree add -b codex/rectification-open-collect-invite-20260914 \
.worktrees/rectification-open-collect-invite-20260914 origin/staging
cd .worktrees/rectification-open-collect-invite-20260914
ln -s /workspace/Jyotisha/.venv .venv
cd frontend && npm ci
```
开工前读:`docs/research/rectification_minute_resolution_closure_2026_09_14.md`(为什么"补经历"是唯一有效手段)、`docs/BUG_HISTORY.md` 的 BUG-687、646、651、653、688,以及 `frontend/docs/VOICE.md`
## 7. BUG 编号起点
- 起点 **BUG-689**(当前最大号 688)。