fix(rectification): restore targeted collect cards from spoken focus (BUG-673)
Keep targeted existence questions as A-D cards. Recover collect-schema stock by question-id prefix, surface the stem when persist fails, and send spoken targeted existence to the repair exit instead of a naked prompt.
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
# 进度 · 定向补事口述焦点复原(2026-09-13)
|
||||
|
||||
## 范围
|
||||
|
||||
- 分支:`codex/rectification-targeted-collect-spoken-focus-20260913`(基于 `origin/staging` @ `9a943cc2`)
|
||||
- 任务单:`docs/tasks/TASK-rectification-targeted-collect-spoken-focus-20260913.md`
|
||||
- BUG-673(复发自 BUG-670);最大号核对时为 672
|
||||
- 不改数据库、迁移、`deploy/**`、workflow、`page.tsx`
|
||||
|
||||
## 完成
|
||||
|
||||
- T1 写入侧:`serverOwnedExpectedAnswerSchema` / `persistServerOwnedFocusCore` 对定向存在题先 `rebuildTargetedCollectExistenceFollowup`;重建失败返回 null / skipped,不得 `collectFocusSchema`。`rectification-set-focus` 同一条件不降级,spokenPrompt 不替换卡片题干。年份阶段 `collect:targeted:<domain>:year` 仍是口述。
|
||||
- T2 复原侧:承接焦点与 GET `choice_card` 按题号前缀识别采集型 schema,用 `schema.prompt` 重建 frame。`projectCurrentQuestion` 同条件投影 `kind: "choice"`。`:next` 后缀同样能复原。
|
||||
- T3 `persistNextInterviewAfterChoice` 尾部显式 `persisted: false`;`keptNextQuestion` 为假时 `next_user_action` 不再引用未落库的题。`persistSkippedCollectFocus` 对定向存在题写点选 schema,resolve 失败重试一次,返回值不得为 `active`。
|
||||
- T4 `interviewChoiceCardUnavailable` 增加 `questionId`:口述形态的定向存在题走 unavailable + repair-exit;普通口述与 year 阶段不误伤。
|
||||
- T5 BUG-673、CHANGELOG、本文件、`docs/testing/rectification-targeted-collect-spoken-focus-20260913.md`。
|
||||
|
||||
## 让步
|
||||
|
||||
- 任务书 T4 写「questionId 以 `collect:targeted:` 开头」一律判不可用。年份追问 `collect:targeted:<domain>:year` 本来就是口述,若按字面会误伤。实现只把存在题(可带 `:next`)当缺卡。
|
||||
|
||||
## 验收
|
||||
|
||||
- `tsc --noEmit`:0 错
|
||||
- ESLint(改动文件):0 error;既有 unused-vars warning 未新增
|
||||
- 新测试 `rectification-targeted-spoken-focus-recovery-20260913.test.ts`:10/10
|
||||
- 相关回归:`rectification-server-focus` / `question-ownership` / `answer-choice` / `spoken-prompt` 69/69;`targeted-card-live` + `surface-state` 通过
|
||||
- 本机 `npm test`:2948 tests,2775 pass / 159 fail / 14 skip。失败项是 Windows CRLF、无 Docker、bash 脚本合同(Caddy `\n` vs `\r\n`、deploy/*.sh、database-*),与本单无关。新增测试只增加通过数。
|
||||
- `next build`:Compile + TypeScript 通过;collect page data 在本机 Windows 因 `EPERM symlink` 与 Skill 10.0.26 SHA 校验失败(未改 `skills/`)。`/` 是否仍 `○ Static` 未在本机核对。
|
||||
- 真机存量会话复验见 `docs/testing/rectification-targeted-collect-spoken-focus-20260913.md`。
|
||||
@@ -184,7 +184,7 @@
|
||||
|
||||
| `TASK-rectification-targeted-card-dead-20260913.md` | `PROGRESS-rectification-targeted-card-dead-20260913.md` | **P0**:定向补事卡在快照投影里拿不到 `choice_card`(承接焦点分支不重建 `choice_frame`),卡片看得见点不动、流程停在采集等待态;模型还会把定向题改写成口述题(BUG-669~671)。先于 tie-break 修复单执行 | 待验收 | `codex/rectification-targeted-card-dead-20260913` |
|
||||
|
||||
| `TASK-rectification-targeted-collect-spoken-focus-20260913.md` | `PROGRESS-rectification-targeted-collect-spoken-focus-20260913.md` | **P0**:定向补事题以采集型 schema 存进焦点,前端只能裸画一行题干(无头像无卡无修复入口),本轮计划的 D9 题被静默吞掉;BUG-670 的识别条件只认 `targeted_collect` 章,复原不了(BUG-673,复发自 BUG-670) | 待执行 | `codex/rectification-targeted-collect-spoken-focus-20260913` |
|
||||
| `TASK-rectification-targeted-collect-spoken-focus-20260913.md` | `PROGRESS-rectification-targeted-collect-spoken-focus-20260913.md` | **P0**:定向补事题以采集型 schema 存进焦点,前端只能裸画一行题干(无头像无卡无修复入口),本轮计划的 D9 题被静默吞掉;BUG-670 的识别条件只认 `targeted_collect` 章,复原不了(BUG-673,复发自 BUG-670) | 待验收 | `codex/rectification-targeted-collect-spoken-focus-20260913` |
|
||||
|
||||
| `TASK-rectification-house-lord-gochara-research-20260913.md` | `PROGRESS-rectification-house-lord-gochara-research-20260913.md` | 研究单:宫主触发与木星/土星过运(合冲本命宫主、罗睺紧密合、年精度、用于 block 选上升)四种放宽,20 例公开 AA 离线量 block 层与 minute 层两组指标;引擎里已有宫主/功能吉凶/受控过运,只量缺的四条 | 待验收(无收益,关闭;不立实现单) | `codex/rectification-house-lord-gochara-research-20260913` |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user