diff --git a/docs/todo.md b/docs/todo.md index c23ee45..414f26d 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -48,7 +48,7 @@ **P2** - [ ] AR-8 delta 节流+滚动(后端无 50ms 合批/前端无 rAF,叠加 AR-1 掉帧)— stream_recv.rs + AiChat.vue:625-633 - [x] AR-9 ~~friendlyError 硬编码中文~~ ✅ Wave3 完成(friendlyError 全走 i18n.global.t + zh/en 双语补 4 key;TS2589 用 as any 规避 vue-i18n 深度泛型)(commit 9e2aeff) -- [ ] AR-10「想法→灵感」迁移残留(aiTool.ts/ideas.ts/projectDetail.ts/idea.rs 大量"想法"文案)— 跨前后端 — 详见 [审查第六章](./02-架构设计/aichat-review-2026-06-14.md) +- [x] AR-10 ~~想法→灵感迁移残留~~ ✅ 已统一(13 文件批量:i18n zh-CN + 后端错误 + LLM 描述/提示词 + store toast;en 待定 Ideas/Idea、docs 注释低优先略)(commit 65c475b) - [ ] AR-11 数据变更联动刷新(推荐方案A 后端 emit + store 监听)— 跨层 — 详见 [审查第五章](./02-架构设计/aichat-review-2026-06-14.md) ### 🟡 B-03b 复核后续(独立深度复核,2026-06-14) @@ -57,11 +57,11 @@ - [x] B-03b-R1 ~~Cancelled 转换图双踩~~ ✅ 已修(executor Err 处理加 is_cancelled 检测,已取消节点跳 set_failed,Cancelled→Failed 非法 transition 不再 bail;emit NodeFailed 仍发,状态保 Cancelled;采修法 B 不动 is_legal 转换图) - [x] B-03b-R2 ~~零端到端取消测试~~ ✅ 已补(test_cancelled_node_skips_set_failed:CancelSelfNode 经共享 node_status 自取消→Err→executor 不 bail→状态保 Cancelled;df-workflow 14 test pass) -- [ ] B-03b-R3 — **[P2 低优]** std::sync::Mutex 取舍 — 当前选 std(快速临界区纳秒级),若 async 持锁场景增多评估换 tokio::sync::Mutex -- [ ] B-03b-R4 — **[P2 低优]** set_* 改 &self 后调用方残留 &mut 冗余清理 -- [ ] B-03b-R5 — **[P2 低优]** `lock().expect()` poison panic 漏清理(poison 时直接 panic 无优雅降级) -- [ ] B-03b-R6 — **[P0 阻断]** human_node.rs:41 发 HumanApprovalRequest 缺 `.await`,async fn Future 被丢弃未 poll → Request 未进 channel,审批链最上游断裂(B-260614-03a 重写时引入,7 单测不覆盖 Request 发出故漏)。详见 [审查报告 §0](./02-架构设计/workflow-approval-review-2026-06-14.md) -- [ ] B-03b-R7 — **[P0 修R6后]** 前端契约失配:project.ts:214 type `'HumanApprovalRequest'`→应 `'human_approval_request'`(serde rename snake_case);:215 `payload.event.data` 不存在(event 扁平)→应取 event 本体字段。当前被 R6 遮蔽不可达,修 R6 后必现 +- [x] B-03b-R3 — **[评估维持]** std::sync::Mutex — 快速临界区纳秒级持锁不阻塞 runtime,保持 std 合理 +- [x] B-03b-R4 — **[评估维持]** set_* 改 &self 后调用方 &mut — &self 是放宽,&mut self 上下文调 &self 无害,清理为可选优化不影响正确性 +- [x] B-03b-R5 — **[评估维持]** `lock().expect()` poison panic — poison=持锁 panic 严重错误,fail-fast 合理,非用户态可恢复 +- [x] B-03b-R6 ~~human_node send 缺 await~~ ✅ 已修(human_node.rs:41 加 .await;async fn send 的 Future 不再被 let _ = 丢弃,Request 真进 channel)(commit 0bb96fc) +- [x] B-03b-R7 ~~前端契约失配~~ ✅ 已修(project.ts:214 type→snake_case + :215 取 event 本体扁平字段 + as unknown as 绕过联合类型)(commit 0bb96fc);**遗留**:types.ts event.type 收窄字面量联合(防再写错 type 字符串,报告 §4 第3项)待补 - [ ] B-03b-R8 — **[P0 根因]** 缺 human 节点端到端集成测试(前端无 human DAG 入口,demoDag 仅 script),单测绿但不覆盖 human→弹窗→审批→返回链路,是 R6/R7 存活土壤 - [ ] B-03b-R9 — **[P2]** 其余 8 项对抗裁定(③串扰/④单槽/⑤终态不清/⑥set_cancelled覆盖终态/⑦互斥/⑧approve不校验/⑨⑩Lagged/⑪failed_node空)多数潜伏或零危害,详见 [审查报告 §2](./02-架构设计/workflow-approval-review-2026-06-14.md)