Files
Jyotisha/docs/tasks/PROGRESS-rectification-targeted-collect-spoken-focus-20260913.md
T
jesse-ux 8221c6121b
Independent Staging Quality Gate / validate (push) Successful in 10m39s
Independent Staging Quality Gate / publish (push) Successful in 2m9s
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.
2026-09-14 01:51:55 +08:00

31 lines
2.6 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.
# 进度 · 定向补事口述焦点复原(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 tests2775 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`