Files
Jyotisha/docs/tasks/TASK-rectification-tie-break-entry-fix-20260913.md
T
Jesse_ChenandClaude Opus 5 0b7d43e622 docs(tasks): tie-break entry fix brief (BUG-666~668) after accepting 530f260f and ab1ade59
Accepted the targeted-collect cards round and the refresh R3/R4 round; the
range-card tie-break entry keeps showing after D9/D10 are answered and errors
on click. Product decision: one click asks both cards, then the entry goes away.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
2026-09-13 12:10:36 +00:00

62 lines
5.7 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` @ `ab1ade59`(已部署,`/api/health` `deployment.gitCommit = ab1ade59`
- 分支:`codex/rectification-tie-break-entry-fix-20260913`,基于 `origin/staging`
- 执行方:coding agent;验收:Claude
- BUG 编号起点:**BUG-666**(开工时核对 `docs/BUG_HISTORY.md` 最大号,应为 665
- 上游单:`TASK-rectification-targeted-collect-cards-20260913.md` T3(BUG-663)已实现并验收,本单只补它的死角
- 不改 `SCORE_DELTA``MIN_ACCEPTANCE_*`、确认门;性格题不得回计分池(BUG-629);`can_adopt` 不得因参考题变化
## 1. 事故实证(代码走查,`ab1ade59`)
1. `divergence-panel.ts` `rangeDeliveryForSnapshot``tieBreakAvailable` 只看 `window_scan.d9_candidates_differ || d10_candidates_differ`(以及原始快照/回执里的同名字段),**不看还有没有没问过的 D9/D10 `varga_style` 对照题**。
2. `rectification-range-delivery.tsx` 只要 `delivery.tie_break_available` 为真就渲染按钮「再答两道参考题微调排序」。
3. 点击走 `POST /api/rectification/cases/[caseId]/tie-break``requestTieBreakPersonality``tieBreakPersonalityFollowup`;该函数跳过 `askedKeys` 里已问过的 `varga.d9*` / `varga.d10*`。两道都答过后返回 `null`,路由回 `409 tie_break_unavailable`,前端 `setError("现在没有可答的参考题")`——用户点到的是红字报错,不是入口消失。
4. 每点一次只落一道卡:答完 D9 后 `buildMethodFollowupPlan` 不带 `tieBreakRequested`,不会自动接 D10,用户必须再点一次入口。文案写的是「再答两道」。
## 2. 决策记录(产品负责人 2026-09-13
**点一次连出两道,问完入口消失。** 具体:
1. 点击入口后出 D9 卡;答完自动接 D10 卡;两道答完回到「目前范围」卡,入口不再出现。
2. 没有可答的 D9/D10 对照题时,入口一开始就不渲染;任何情况下点击不得出现红字报错。
3. 入口文案保持「再答两道参考题微调排序」不变。
4. 参考题仍只调排序:`tie_break`(±1、不淘汰、不改 `can_adopt`),不得回到计分池。
## 3. 硬红线
- 参考题不得在定向补事之前、或未点入口时成为下一问(BUG-663 防复发)。
- 自动接第二道只在「本次入口触发的这一轮」内生效;不得变成答完任意性格题就继续追问。
- `tie_break_available` 必须由「存在未问的 D9/D10 `varga_style` 题」决定,不得只读 `window_scan` 标志位。
- 不得为此把 planner 打进客户端包(BUG-663 实现里已特意避开,沿用服务端投影)。
- 既有测试总数不降;改断言写「原值 / 新值 / 原因」三栏。
## 4. 任务分解
- **T1 入口可用性(BUG-666**`tie_break_available` 改为服务端判定「还有未问的 D9/D10 `varga_style` 对照题且未采用」。GET 快照投影(`case-dossier-response.ts``rangeDeliveryForSnapshot`)与 `tie-break` 路由用同一判定来源,避免两边漂移。验收:两道都答完后卡下不再有入口;contrast packet 里没有 D9/D10 题时入口不出现;点击路径不再产生 `409 tie_break_unavailable` 的用户可见报错。
- **T2 一次两道(BUG-667)**:点入口记一次「参考题轮次」状态(焦点/话题标记即可,不新建表)。答完第一道后自动落第二道 `varga_style` 焦点;两道答完(或第二道无题)结束该轮,回到范围卡。验收:点一次后依次出现 D9、D10 两张卡,中途不需要再点入口;两道答完后 `rounds.kind=tie_break``eliminated_ids` 为空、`can_adopt` 与点击前一致。
- **T3 清理(可让步,BUG-668**
- `collection-question-pool.ts` `isTargetedCollectDeclined``isTargetedCollectYearFollowup``src/` 已无调用,删除或写明保留理由(留着容易被再次误用为「整池已关」,正是 BUG-661 的老根因)。
- `skills/.../SKILL.md` 定向补事写「有 / 没有 / 记不清」三项,实际卡片是四项(卡片合同 `serverOwnedChoiceCopy` 要求四个互不相同的标签,第四项是「这条先跳过」)。把 Skill 口径与卡片对齐。若改 Skill 正文则升 10.0.26 并按 BUG-621 验历史可打开。
- `scripts/rectification/event_probes.py` 里为兼容旧 mock 写的条件传参(`window_kw = {} if threshold == MIN_BOUNDARY_DAYS``include_pratyantar` 两分支各调一次 `_vim_start_dates`)改成统一签名,同步更新 mock。业务代码不为测试替身让步。
## 5. 让步顺序
T1 不可省;T2 次之;T3 可拆下一单。若 T2 当轮做不完,至少让入口在无题时消失(T1),不得留报错死角。
## 6. 开工前置命令
```bash
git fetch origin --prune
git worktree add -b codex/rectification-tie-break-entry-fix-20260913 .worktrees/rectification-tie-break-entry-fix-20260913 origin/staging
grep -o "^## BUG-[0-9]*" docs/BUG_HISTORY.md | sort -t- -k2 -n | tail -1 # 应为 665
cd frontend && npm test -- tests/rectification-targeted-collect-cards-20260913.test.ts tests/rectification-range-delivery-20260907.test.ts tests/agent-voice-copy-contract.test.ts
```
## 7. 验收口径
- `tsc --noEmit` 0 错;`npm run lint` 0 error;相关套件 fail=0;测试总数 ≥ 基线(`ab1ade59` 实测 3139,其中 27 项为无 Docker 的数据库/部署套件,与基线逐条一致)。
- `next build``/``○ Static`;首屏 `rootMainFiles` gzip-9 与 `ab1ade59` 的 130872 B 相差 ±2% 内。
- 真机场景 0d 补两条:两道参考题答完后入口消失;全程不出现红字「现在没有可答的参考题」。
- BUG-666668 入 `docs/BUG_HISTORY.md`;CHANGELOG 只在用户可见行为变化时写。