Files
Jyotisha/docs/tasks/TASK-rectification-targeted-collect-cards-20260913.md
T

55 lines
6.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-13
- 基线:`origin/staging` @ `4e93ca15`(代码 `5d54d059`,已部署;含 BUG-646660Skill 10.0.24
- 分支:`codex/rectification-targeted-collect-cards-20260913`,基于 `origin/staging`
- 执行方:coding agent;验收:Claude
- BUG 编号起点:**BUG-661**(开工时核对 `docs/BUG_HISTORY.md` 最大号,应为 660
- 决策来源:`TASK-rectification-after-pool-empty-decision-20260913.md`,产品负责人 2026-09-13 拍板:**做 A + D,顺带 C;B 单独研究单**(`TASK-rectification-probe-supply-research-20260913.md`),不与本单混做。
- 不改引擎计分、不改确认门;Skill 若改用户可见流程升 10.0.25(本单预计要升:定向补事的问法变了)。
## 1. 现状(2026-09-13 真机,5d54d059
六道带年月题答完 → 刷新 `no_new_probes` → 落下定向补事口述题:「还有4条线能把 04:51 和 05:06 分开:哪年结婚或订婚、哪年收入明显变过、哪年搬家、家里哪年添丁。记得哪件说哪件,年月大概就行。」范围 04:48–05:07,5 簇,头名 32%。流程正确但体感死板:一道开放题堆四条线,没有可点的东西;「04:51 和 05:06」是范围两端而不是剩余候选的说明。
## 2. 决策记录(产品负责人 2026-09-13
1. **A**:定向补事拆成一次一条的点选卡。每条线先问「有没有」(有 / 没有 / 记不清),答「有」再口述年月;答「没有」记为该线近年无事(**不计分**,只用于不再问);答「记不清」同「没有」处理但话题状态记 skipped;所有线都问完仍无新事 → 出「目前范围」卡(现有 S3)。
2. **D**:题干与卡下提示说清「现在还剩 04:48–05:07 里 N 个候选,能把它们分开的是这几条线」;不再写「04:51 和 05:06」这类范围端点。
3. **C**:「目前范围」卡下加入口「再答两道参考题微调排序」,点了才出 D9 / D10 性格卡,按 BUG-629 的 `tie_break`(±1、不淘汰、不改 `can_adopt`)。不点不出。
4. 「没有」的信息价值:不计分、不淘汰、不进引擎;只在账本话题里记 `collect:targeted:<domain>` declined,防复问;与 BUG-629「无年月否定不参与打分」一致。
5. 四条线都「没有」后直接出卡:接受(现有行为)。
## 3. 硬红线
- 不改 `SCORE_DELTA``MIN_ACCEPTANCE_*`、收敛门;性格题不得回到计分池(BUG-629 防复发)。
- 每条线只问一次;「有」之后的年月追问只问一次,答不出则该线记 skipped。
- 焦点落库走服务端(`persistServerOwnedFocus`),`target_kind` 走 BUG-656 的映射;不得再出现「决策有题、库里无题」(BUG-652 / 657 不变量测试照跑)。
- 文案禁词照旧(领域、任何领域、做不了、材料不够、还差 N 件、才会变、这次给出、最终)。
- 既有测试总数不降;改断言写原值 / 新值 / 原因;记录只用脱敏领域 + 年月。
## 4. 任务分解
- **T1 逐条点选(BUG-661**`collection-question-pool.ts` `targetedCollectPool` 改为按 `remainingLayers → REMAINING_LAYER_DOMAIN` 逐条产出 `{domain, existence_prompt, year_prompt}`,排除已覆盖 / 已 declined / 已 skipped 的线;`method-followup.ts` `targetedCollectFollowup` 产出带 `choice_frame``collect:targeted:<domain>`(选项 A 有 / B 没有 / C 记不清,`scoring:false`);`answer-choice.ts` 处理:A → 落 `collect:targeted:<domain>:year` 口述焦点(题干「大概哪年几月?」);B → 话题 declined、下一条;C → 话题 skipped、下一条;口述年月 → 走现有 batch 写证据 → 引擎重算 → 回到 S2。验收:§1 序列六题答完后出第一条卡「结过婚或订过婚吗?」;答 B → 下一条卡;答 A → 「大概哪年几月?」;答「2022 年 5 月」→ 账本多一条 relationship 事件、引擎重算、出现新的带年月题或范围句变化;四条都 B → 「目前范围」卡;全程不出现「没有拿到下一个问题」。
- **T2 文案(BUG-662**`rangeNarrowHint` / 定向卡题干 / 时间轴行:「现在还剩 04:48–05:07 里 5 个候选,能把它们分开的是这几条线:…」;卡下提示「还能再收窄:如果记得…」保留。`agent-voice-copy-contract` 加禁词「能把 HH:MM 和 HH:MM 分开」(正则)。验收:文案合同测试。
- **T3 参考题入口(BUG-663**`rectification-range-delivery.tsx` 卡下入口「再答两道参考题微调排序」→ 点击调用 `set-focus` 落 D9 / D10 `varga_style` 卡(复用 BUG-629 `tie_break` 路径);答完刷新卡,`can_adopt` 不变。验收:不点不出;点后出 D9 卡、答后 `rounds.kind=tie_break`、头名可变但无淘汰。
- **T4 Skill 10.0.25 + 记录**SKILL.md 与 `references/conversation-strategy.md` 里「定向补事」改为逐条点选;registry;`case-status.ts`;部署后先验 10.0.24 历史可打开(BUG-621);BUG-661663 入历史;CHANGELOGPROGRESS`docs/testing/rectification-scenarios-20260907.md` 加场景 0d。
## 5. 让步顺序
T3 可拆下一单;T1 + T2 不可省。
## 6. 开工前置命令
```bash
git fetch origin --prune
git worktree add -b codex/rectification-targeted-collect-cards-20260913 .worktrees/rectification-targeted-collect-cards-20260913 origin/staging
grep -o "^## BUG-[0-9]*" docs/BUG_HISTORY.md | sort -t- -k2 -n | tail -1 # 应为 660
cd frontend && npm test -- tests/rectification-collection-question-pool.test.ts tests/rectification-probe-pool-exhausted-20260911.test.ts tests/rectification-replay-20260911.test.ts tests/rectification-yearless-probe-downgrade-20260909.test.ts tests/agent-voice-copy-contract.test.ts
```
## 7. 验收口径
- 前端 `tsc --noEmit` 0 错、`npm run lint` 0 error、相关套件 fail=0、测试总数 ≥ 基线;`next build``/` 仍 Static、首屏 gzip ±2%。
- Skill 升版后 `skill-registry.test.ts` 通过,旧版本哈希不变。
- 部署后真机按 §4 T1 验收序列走一遍。