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
62 lines
5.7 KiB
Markdown
62 lines
5.7 KiB
Markdown
# 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-666~668 入 `docs/BUG_HISTORY.md`;CHANGELOG 只在用户可见行为变化时写。
|