41 lines
2.2 KiB
Markdown
41 lines
2.2 KiB
Markdown
# 会话结束后插入转新对话计划
|
||
|
||
## 目标
|
||
|
||
当 Codex App 的上一轮已经结束、但页面或服务端仍把本轮视为可插入时,表单答案和普通跟进消息都应自动按新一轮对话处理;失败卡片点击“重试”也应真正发送,不能继续被“仅允许插入原 turn”拦截。
|
||
|
||
## 阶段
|
||
|
||
1. [completed] 复现并定位会话结束后的发送与失败重试链路
|
||
2. [completed] 补充结束会话后重试自动新开对话的回归用例
|
||
3. [completed] 修复前端失败项重试与后端旧轮结束竞态
|
||
4. [completed] 运行定向测试、语法检查和完整回归
|
||
5. [completed] 复核差异并清理临时跟踪文件
|
||
|
||
## 验收标准
|
||
|
||
- 会话结束后点击失败卡片的“重试”会启动普通新 turn,答案只进入一次历史。
|
||
- 发送时本地运行态落后于 app-server 时,不再把用户答案永久留在“插入失败”。
|
||
- 仍在运行的 turn 继续走 `turn/steer`,expectedTurnId 不匹配等真实错误不被错误降级。
|
||
- 普通文本和带附件的表单答案均有回归覆盖,且定向测试、语法检查和完整回归通过。
|
||
|
||
## 约束
|
||
|
||
- 保留工作区中其他会话历史改动,不覆盖现有任务目录或 CSV。
|
||
- 代码定位优先使用 `codebase-memory-mcp`;FastCtx 只用于读取、编辑和验证本地文件。
|
||
- 不重启服务,除非重启前确认除当前会话外没有其他 `running` 会话。
|
||
- 新增注释和文档使用简体中文。
|
||
|
||
## 错误记录
|
||
|
||
| 错误 | 尝试 | 处理 |
|
||
|---|---:|---|
|
||
| 表单回归读取到旧轮 done,导致提前检查新输出 | 1 | 等待携带新答案助手消息的 done 后再验收历史 |
|
||
|
||
## 收尾记录
|
||
|
||
- 完整回归 `npm run regression` exit 0;定向回归与三个单测脚本、语法检查全部通过。
|
||
- 独立后端审查新增 `scripts/codexapp-steer-recovery-unit.js`(5 项通过),覆盖 ready 等待期间旧轮结束、completion 先到、保存失败与错误分类。
|
||
- 部署:重启前检查到除当前对话外仍有 running 会话(`826deaa0`、`2f1134fe`),按约束暂缓重启;待其结束后执行 `pm2 restart ccweb --update-env` 生效。
|
||
- 临时跟踪文件:本任务 CSV 已按 todo-list-csv 流程清理。
|