fix(rectification): ask tie-break questions before the range card (BUG-685/686/687)

Close leads hold delivery until unused D9/D10 style questions are asked. Tie-break POST merges the new turn into the transcript. Range copy no longer lists declined lines.
This commit is contained in:
jesse-ux
2026-09-14 18:23:54 +08:00
parent 1c424bf6d5
commit 7f28bfecbb
22 changed files with 833 additions and 86 deletions
+48
View File
@@ -10661,3 +10661,51 @@
- 复发自:BUG-682`delivered` 终态要求无题,死卡把会话钉在问题态)
- 修复版本:待发布
- 证据缺口:同一会话 GET 的 `current_question``choice_card``question_source`,以及最后一条助手 turn 的 `offer_result_id`。缺这四项之前不得臆断写入路径。
## BUG-685 | 点「再答两道参考题」服务端成功,对话区没有任何变化
- 状态:resolved
- 首次发现:2026-09-14
- 最近更新:2026-09-14
- 影响面:`requestTieBreak``loadCaseSnapshot``applySnapshotTurnsToMessages``rectificationQuestionGapState`
- 用户现象:点「再答两道参考题微调排序」后 POST 返回 `ok: true``choiceReady: true`,界面仍是原来的范围卡,新参考题看不见。
- 触发条件:范围卡在场时点参考题入口;服务端已写入助手 turn 和活动焦点。
- 根因:`requestTieBreak` 调用不带合并回调的 `loadCaseSnapshot()`,新 turn 不进 `messages`。交付卡在场使缺口为 `idle``persisted_question` 也不会兜底画这道题。
- 修复:`requestTieBreak` 用与 `submitChoice` 相同的 `mergeTurnQuestions` / `appendUnseenAssistantTurns`。未答焦点优先于「等读者点卡」的 idle。
- 验证:`frontend/tests/rectification-tiebreak-before-card-20260914.test.ts`
- 防复发:服务端返回 ok 而界面无变化,一律视为缺陷。任何新写 turn 的前端动作必须把 turn 并进对话区。
- 相关记录:BUG-663、BUG-666、BUG-667
- 复发自:BUG-663(入口只写焦点,前端刷新不合并 turn)
- 修复版本:待发布
## BUG-686 | 平局直接出卡,参考题留成卡下可选按钮
- 状态:resolved
- 首次发现:2026-09-14
- 最近更新:2026-09-14
- 影响面:`decideRectification` `heldForTieBreak``persistNextInterviewAfterChoice` / `persistNextInterviewIfIdle`、范围卡按钮
- 用户现象:带年月题和定向补事问完后,前两名 16/16 并列,直接出范围卡让人在 26%/26%/20% 里选;参考题要自己点按钮。
- 触发条件:前两名 posterior 分差 ≤ 1,D9/D10 参考题仍可用且未用过。
- 根因:性格题被设计成出卡后的可选入口,而不是出卡前的必经步骤。
- 修复:产品拍板方案 A(2026-09-14)。分差 ≤ 1 且参考题可用时先连问最多两道 `varga_style`(仍只 ±1、不淘汰),两道用完再出卡。仍平时卡上写「这两分钟按现有信息分不开,参考题已经用过。」用过之后不再显示入口按钮。
- 验证:`frontend/tests/rectification-tiebreak-before-card-20260914.test.ts`16/16 不交付且下一问是 `varga_style`;两道用完才交付且按钮关闭;lead=2 不插参考题。
- 防复发:不得把性格题改成淘汰候选。自动进入参考题时不得再写第二条交付消息。
- 相关记录:BUG-663、BUG-667、BUG-629、BUG-597
- 复发自:BUG-663(入口做成出卡后可选)
- 修复版本:待发布
## BUG-687 | 交付文案把已经拒答的线又列一遍
- 状态:resolved
- 首次发现:2026-09-14
- 最近更新:2026-09-14
- 影响面:`rangeNarrowHint`
- 用户现象:结婚、收入、家人都答过「没有/跳过」,范围卡仍写「能把它们分开的是这几条线:哪年结婚或订婚、哪年收入明显变过、家里哪年添丁」。
- 触发条件:定向补事已拒答或已关闭,随后交付区间。
- 根因:`rangeNarrowHint``targetedCollectPool` 时传入空的 `declinedTopics`,有意忽略拒答。
- 修复:传入真实 `declinedTopics`。一条都不剩时写「能问的都问完了」,不再暗示还有没问的线。
- 验证:`frontend/tests/rectification-tiebreak-before-card-20260914.test.ts`
- 防复发:交付文案不得列出已拒答或已回答的线。
- 相关记录:BUG-661、BUG-662
- 复发自:无
- 修复版本:待发布