# Todo 归档 2026-06-27 > 从 todo.md / docs/todo.md 迁移的已完成项 > 归档日期: 2026-06-27 --- ## 灵感模块功能完善 — P0 数据安全/正确性 - [x] **#1 软删除机制**:ideas 表加 `deleted_at` 列 + 软删除(对标 tasks/projects 的 `delete` + `restore` 全套模板)。当前 `delete_idea` 是硬删除,误删不可恢复。 - [x] **#2 白名单收紧**:`settings.rs` ideas 白名单移除 `id` / `created_at`,防止主键和创建时间被篡改。(对标 B-260616-16 tasks 白名单修复) - [x] **#4 priority 值域校验**:`create_idea` / `update_idea` 加 priority 校验(`parse::() ∈ 0..=3`,非法返 Err)。(对标 B-260615-15 tasks priority 修复) ## 灵感模块功能完善 — P1 架构/一致性 - [x] **#5 有损转换修复**:`record_to_idea()` 不再硬编码 `status=Draft` / `related_ids=空`,从 IdeaRecord 读取真实值,评估时不丢失上下文。 - [x] **#6 评分关键词拆文件**:将 `scoring.rs` 硬编码关键词拆到独立 const 文件(最小改动)。启发式是过渡方案,对抗式评估上线后按需升级为 JSON 配置。**不做 DB 表配置化**(过度工程)。 - [x] **#7 promote 补偿改软删除**:`promote_idea` 回写失败时的补偿删除从 `purge_with_descendants`(不可恢复)改为 `soft_delete`(软删除,可恢复)。 - [x] **#8 关联双向同步**:A 关联 B 时自动在 B 的 `related_ids` 中补入 A,解绑时同步移除,保持关联关系对称。 - [x] **#9 创建表单补 tags 输入**:捕捉灵感表单增加 tags 输入(逗号分隔或 chip 组件),`confirmCapture` 传 tags JSON 字符串给后端。 ## 灵感模块功能完善 — P2 前端/UX - [x] **#10 创建表单补全 priority/source**:捕捉模态框增加 priority 下拉(低/中/高/紧急)和 source 输入框。 - [x] **#14 雷达图正名/替换**:将 i18n key 和 CSS class 中的 "radar" 改为 "score-bar"(或引入真正的雷达图组件如 ECharts radar)。 ## AI 对话目标丢失 - [x] **G3 状态机收敛目标** ✅文档衔接:`conv_state.rs`/`mod.rs` 注释明示 pinned_goals 内容态与 ConvState 生命周期态正交,不进 enum。 - [x] **G5 附 bug** ✅已排查(不改代码):dump DB 确认 seq1(thinking 独白)+seq4(tool_result 内容)均 system+**早期 timestamp**(旧版本遗留脏数据),非当前 compress summary 机制问题(摘要四段式正常)。最新 system(seq0 topic marker)正常。**结论:历史脏数据,数据治理项**(可选清 DB),非当前 bug。anthropic_compat thinking 隔离你在进行中(M)。 - [x] **G1 多目标累积**:`pinned_goal: Option` → `pinned_goals: Vec`,每次发消息/编辑/强制发送提取目标追加到列表(去重),支持换目标且不丢失历史目标。`MAX_GOALS=5` 防无限膨胀。 ## 对抗式评估接入 — 后端 IPC 接入 - [x] **A1 evaluate_idea 命令**:新增 IPC command,按 Provider 配置构造 `AdversarialEngine`(有 Provider → `new(provider)`,无 → `heuristic()`),调 `evaluate(idea)` 返回 `AdversarialEval`。 - [x] **A3 评估结果持久化**:评估结果写回 `ideas` 表(scores + evaluated_by + evaluated_at),避免每次重新评估。 - [x] **A4 类型导出**:`AdversarialEval` / `EvaluatedBy` / `Recommendation` 等类型经 IPC serde 暴露给前端(检查 `df-types` 是否需补充)— 已验证:当前通过 `df_ideas::adversarial::*` 路径直接可用,前端经 `IdeaRecord.ai_analysis` JSON 字符串消费,无需搬运到 `df-types`。 ## 对抗式评估接入 — 前端结果展示 - [x] **B1 灵感详情页评估面板**:展示正方论点 / 反方论点 / 分析师综合评分,`evaluated_by` 标签区分(LLM / 启发式兜底 / 纯启发式)。 - [x] **B2 评估触发按钮**:灵感详情页加「深度评估」按钮,调 `evaluate_idea` IPC,loading 状态 + 错误提示。 - [x] **B3 评分维度可视化**:可行性 / 影响力 / 紧急度三维度展示(复用现有 score-bar 或引入 radar)。 --- ## 🔍 2026-06-21 AI Chat 技术债审查 ### P1 已即时修 - [x] ✅(主代修·chat.rs:458-461 ai_approve exec_result 包 tokio::time::timeout(60s) 对齐 ai_authorize_dir:658·cargo check EXIT 0) **TD-260621-05a** — **[P1🔴]** ai_approve 缺 60s 执行超时(用户"静默吞消息"bug F-260620 同型复发)。ai_authorize_dir 有超时 ai_approve 漏。卡死→generating 永真→前端 130s 看门狗吞消息。 - [x] ✅(主代修·useAiConversations.ts:99 switchConversation activeConversationId 设定后加 `state.streaming = state.generatingConvs.has(id)`·vue-tsc EXIT 0) **TD-260621-06a** — **[P1🔴]** switchConversation 不复位 streaming,真并发切非生成会话残留 stop 按钮→点 stop 发错会话。 ### P1 归路线 - [x] TD-260621-01 [P1·归 F-09 B 路线 per-conv state] ✅(批2-A 落地·useAiStream `_watchdogTimers` Map + `_legacyWatchdog` fallback 双路·onStreamTimeout 携 convId 仅清该 conv·2026-06-21) — **watchdog 单计时器全清误杀并发会话**。 - [x] TD-260621-02 [P1·归 F-09 B 路线 per-conv state] ✅(批2-A 落地·pendingMaxRounds ref 挂起 convId + 守卫比对 activeConversationId·DirAuthDialog visibleDirAuths filter conversationId·2026-06-21) — **pendingDirAuth/pendingMaxRounds 全局单 ref 非 per-conv**。 - [x] TD-260621-03 [P1·patch_file 落地债 F-260615] ✅(读改写整体移入 _patch_guard 锁内串行化防 lost update + 删 entry().or_insert() 内存泄漏 + drop 写序列后释放·2026-06-21) — **patch_file 读改写在 FILE_LOCKS 外,lost update**。 - [x] TD-260621-04 [P1·patch_file 落地债 F-260615] ✅(read_file 三返回点返 file_hash 闭环 + 抽 compute_file_hash helper read_file/patch_file 共用消格式漂移·2026-06-21) — **expected_hash 契约破裂,指纹防并发形同虚设**。 - [x] ✅(2026-06-24·ba811ea chat.rs executed→completed 6处:460幂等读/584 ai_approve写/634判定/668 IPC返回/885 authorize_dir日志/889 authorize_dir写 + df-storage V27 迁移 UPDATE 存量 executed→completed + v27 两测试 unify/idempotent·cargo check EXIT 0 + df-storage 78 passed) **TD-260621-05** [P1·归 SMELL-P1-6] — **审批状态字符串双轨**(已统一)。 ### P2 精选 — 2026-06-24 核验销账 - [x] ✅已修(commit a7dbd50,finalize:35 `let _ =`→match Err tracing::error,对齐 audit_finalize) — audit_tool_call 吞错 - [x] ✅已修(a7dbd50,conversation/chat finalize_pending_placeholders pub(crate)) — switch+delete retain 占位终态化 - [x] ✅已修(TD-260621-03 06-21,_patch_guard 串行化 + 删 entry().or_insert()) — patch_file FILE_LOCKS 永不清理 - [x] ✅已是正确态(mod.rs:772 #[allow(dead_code)]+预留注释) — PerConvState.created_at - [x] ✅已是正确态(阶段3a 下沉 enum ApprovalKind::Risk{diff}) — PendingApproval.diff ## 🔍 2026-06-21 查询能力缺口 + run_workflow 缺陷 - [x] BUG-260621-01 [P1🔴·确定修法] — **run_workflow 空 dag 反序列化失败(missing field nodes),阻塞任务工作流推进** ✅ **2026-06-22 修复** - [x] F-260621-02 [P2] — **任务/项目/灵感列表查询维度补全(下沉后端+关键词搜索+排序分页)** ✅ **2026-06-22 实施** ## 🔴 2026-06-19 BUG-260619-06 L0 clear 致冷启动审批丢失(已修复) - [x] **BUG-260619-06** — L0 clear 致冷启动审批丢失。方案 A 修复:`lib.rs:62` `clear()` → `retain(|_, a| !a.recovered)`。 ## 🔴 2026-06-18 Agentic 最大轮次设置不生效 - [x] ✅(workflow wuirgcxoy) **B-260618-23 [P1]** — **Agentic 最大轮次设置不生效(设 30 仍按 10 截断)**。修复:sync 上提到 App.vue 根 onMounted。 ## 🔧 2026-06-17 走查·tauri 打包目标收窄 + 状态映射 DRY - [x] ✅(主代核验·tauri.conf.json:28 `["nsis"]` 已入库) B-260617-11 [P2] — **tauri.conf.json 打包目标收窄**。 ## 🔧 2026-06-17 走查·DeepSeek reasoning_content 实施审查 - [x] ✅(2026-06-20 核验) B-260617-16 [P3·可选] — **Partial(MidStream 保文)回填半截 reasoning_content 语义待评**。 ## 🔧 2026-06-17 对话标题不更新 - [x] ✅(2026-06-18) **B-260617-17 [P2]** — **对话标题不更新(对话很久/刷新后仍"新对话")**。 ## 💡 2026-06-16 新需求(UX 交互优化) - [x] ✅(F-15 全阶段完成) **F-260616-15** [P1] — **AI Chat 上下文管理增强:会话分段 + 手动压缩 + 智能裁剪**。 ## P1 — 重要缺陷 - [x] ✅(workflow w999qdu86) **BUG-260618-11** — **[P0🔴]** `commands.rs:289` ai_approve 幂等路径 `unwrap_or_default` 吞 DB 错误。 ## 🔴 架构坏味道全面扫描 — P0 必须修复 - [x] ✅(workflow w5siwnipj) **SMELL-P0-1** — **[P0🔴]** `unwrap_or_default` 吞错 **5 高危闭环**。 - [x] ✅(workflow w2xkw4ybh) **SMELL-P0-2** — **[P0🔴]** `tool_registry.rs:363 build_ai_tool_registry` **1091 行单函数**。 - [x] ✅(2026-06-20 核验) **SMELL-P0-3** — **[P0🔴]** `AiChat.vue` **4026 行 God 组件**。 - [x] ✅(workflow wowdnw4ba) **SMELL-P0-4** — **[P0🔴]** `df-execute` crate **零测试**。 ## 🔴 架构坏味道全面扫描 — P1 应该改进 - [x] ✅(workflow w8774xcev) **SMELL-P1-1** — **[P1🟡]** 生产代码 206 处 `unwrap()` 排查。 - [x] ✅(workflow wuirgcxoy no-action) **SMELL-P1-2** — **[P1🟡]** IPC 层 `.map_err(err_str)?` 样板。 - [x] ✅(workflow wuirgcxoy no-action) **SMELL-P1-3** — **[P1🟡]** Vue views try-catch-finally invoke 模式。 - [x] ✅(workflow w8774xcev) **SMELL-P1-4** — **[P1🟡]** df-nodes 聚合点依赖 5 crate。 - [x] ✅(workflow weckqp9mv no-action) **SMELL-P1-5** — **[P1🟡]** IPC 层职责泄漏。 - [x] ✅(workflow weckqp9mv no-action) **SMELL-P1-7** — **[P1🟡]** bool 参数陷阱。 - [x] ✅(workflow wowdnw4ba) **SMELL-P1-8** — **[P1🟡]** 架构文档过时 6 篇更新。 - [x] ✅(agent crud-split 实施) **SMELL-P1-9** — **[P1🟡]** crud.rs 2212 行按表拆分。 ## 🔴 架构坏味道全面扫描 — P2 可选优化 - [x] ✅(workflow wowdnw4ba no-action) **SMELL-P2-1** — run_workflow_inner 282 行+8 参数。 - [x] ✅(workflow wowdnw4ba) **SMELL-P2-2** — 前端全局 ErrorBoundary。 - [x] ✅(workflow w8774xcev) **SMELL-P2-3** — HashMap → 结构体。 - [x] ✅(workflow w5siwnipj) **SMELL-P2-4** — coordinator.rs 空壳标注 roadmap。 - [x] ✅(workflow w5siwnipj) **SMELL-P2-5** — #[allow(dead_code)] **7 处全部标注完成**。 ## 🔴 架构坏味道全面扫描 — sweep 派生登记 - [x] ✅(2026-06-22 核验) **ARC-260618-01-e** — adversarial evaluate_with_llm 一致性。 - [x] ✅(2026-06-20) SW-260618-21 [P2] — **formatRelativeZh 重命名 formatRelative**。 - [x] ✅(2026-06-20 核验) SW-260618-22 [P2] — **useAiSend resolveLang DRY**。 ## P2 — 不阻断缺陷/增强 - [x] ✅(2026-06-20 核验) B-260614-05 — **[P2→降级]** 分离窗口(detached)跨窗口状态。 ## 🔧 2026-06-18 6 域并行走查 sweep-fix — 已修 12 处 - [x] ① context.rs `estimate_message` 累加 parts Text/Image.base64 token - [x] ② anthropic_compat.rs Image 转换 clone→move - [x] ③ scan.rs `is_pure_badge_line` to_lowercase→to_ascii_lowercase - [x] ④ scan.rs `is_monorepo` workspaces null 误判 - [x] ⑤ adversarial.rs MockProvider 补 reasoning_content - [x] ⑥ audit.rs `audit_finalize` 拆 unwrap_or_default 吞错 - [x] ⑦ commands.rs `ai_conversation_delete` 补非活跃对话 pending_approvals retain - [x] ⑧ audit.rs 抽 PENDING_APPROVAL_PLACEHOLDER 常量 - [x] ⑨ ToolCard.vue isToolFailure/commandOutput 下沉 computed - [x] ⑩ AiChat.vue 清 4 处虚拟滚动残留死注释 - [x] ⑪ Projects.vue onUnmounted 清 _toastTimer - [x] ⑫ Knowledge.vue refConvTitle parseContext 两次→一次 ## 🔧 2026-06-18 6 域并行走查 sweep-fix — 新 todo 24 项 ### P1 - [x] ✅(workflow wexu1isx1) SW-260618-01 [P1] — **executor Ok 路径取消节点事件/状态不一致(TOCTOU 残留)**。 - [x] ✅(workflow wexu1isx1 + 主代修) SW-260618-02 [P1] — **审批占位 tool_result 在 stop/clear/create/delete 清 pending_approvals 时未替换终态文本**。 ### P2 - [x] ✅(评估暂缓) SW-260618-03 [P2] — **Anthropic 图片 url 模式静默 400**。 - [x] ✅(workflow wexu1isx1) SW-260618-04 [P2] — **knowledge_events 通用 query 硬编码 ORDER BY created_at 崩溃**。 - [x] ✅(评估暂缓) SW-260618-05 [P2] — **pending 占位靠内容字符串匹配**。 - [x] ✅(主代修·SW-06) SW-260618-06 [P2] — **ToolCard 双 watch(props.tc.status) 合并**。 - [x] ✅(主代修·SW-07) SW-260618-07 [P2] — **AiChat 双 watch(currentText) 合并**。 - [x] ✅(主代修·SW-08) SW-260618-08 [P2] — **AuditLog.vue 全硬编码中文未 i18n**。 - [x] ✅(主代修·SW-09) SW-260618-09 [P2] — **AiNode/AiSelfReviewNode provider 解析+构建 DRY 重复**。 - [x] ✅(主代修·SW-10) SW-260618-10 [P2] — **reqwest Client 构建重复(OpenAI/Anthropic Provider::new)**。 ### P3 - [x] ✅(评估暂缓) SW-260618-11 [P3] — **OpenAI 图片构造防御缺失**。 - [x] ✅(评估确认) SW-260618-12 [P3] — **ai_conversations 白名单 pinned 与 archived 不对称**。 - [x] ✅(评估暂缓) SW-260618-13 [P3] — **find_path_conflict 跨层规范化靠文档约定**。 - [x] ✅(评估不做) SW-260618-14 [P3] — **keyring failcount sidecar 用 current_dir 跨启动不稳**。 - [x] ✅(主代修·SW-16) SW-260618-16 [P3] — **F-05 去重审计 status 固定 completed 不透传 rejected/failed**。 - [x] ✅(评估不做) SW-260618-17 [P3] — **ToolCardList 4 Set 跨会话不重置累积**。 - [x] ✅(主代修·SW-19) SW-260618-19 [P3] — **combineAndTruncateLines 与 cmdOutput 合并逻辑冗余**。 - [x] ✅(主代修·SW-20) SW-260618-20 [P3] — **Ideas 本地 parseTags 与 store 版 DRY 重复**。 - [x] ✅(评估暂缓) SW-260618-22 [P3] — **Knowledge getCategoryCount+parseTags 模板重复求值**。 ## 🔧 2026-06-18 模型能力维度 - [x] ✅(workflow wexu1isx1) **B-260618-03 [P1] 后端路由解耦 cost_tier/intelligence**。 - [x] ✅(workflow wexu1isx1) **B-260618-04 [P2] model_probe 去瞎填 + 预设表机制存废**。 - [x] ✅(主代修·UX-04) **UX-260618-04 [P2] 前端删 cost/intel 标签**。 - [x] ✅(workflow wexu1isx1 + 主代修前端) **B-260618-05 [P3] CostTier::Free 死档 + 枚举清理**。 ## 🔧 2026-06-18 AI Chat markdown 表格布局破坏 - [x] ✅(workflow w5siwnipj) **B-260618-06 [P1]** — **markdown 表格 display:block 破坏布局**。 ## 🔧 2026-06-18 aichat 工具结果渲染核对 - [x] ✅(workflow w2drz3ppo) UX-260618-05 [P0] — **run_workflow 结果丢 execution_id**。 - [x] ✅(workflow w2drz3ppo+主代) UX-260618-06 [P1] — **patch_file 丢 diff**。 - [x] ✅(workflow w2drz3ppo+主代) UX-260618-07 [P1] — **delete_file 软删丢 backup_path**。 - [x] ✅(workflow w2drz3ppo+主代) UX-260618-08 [P1] — **read_file 丢截断提示**。 - [x] ✅(workflow w2drz3ppo+主代) UX-260618-09 [P1] — **advance_task body 裸 JSON**。 - [x] ✅(workflow w2drz3ppo+主代) UX-260618-10 [P1] — **list_trash 缺 header 摘要**。 - [x] ✅(workflow w2drz3ppo+主代) UX-260618-11 [P2] — **list_directory 丢 truncated**。 - [x] ✅(workflow w2drz3ppo+主代) UX-260618-12 [P2] — **list_* body 全裸 JSON + 各工具零散字段丢失**。 ## 🔧 2026-06-18 列表摘要 Markdown 语法字符泄露 - [x] ✅(主代串行) **UX-260618-13** [P2] — **列表摘要 Markdown 语法字符泄露**。 ## 🔧 2026-06-18 用户实测·aichat bug 反馈 - [x] ✅(workflow wwchro468) **UX-260618-14 [P1]** — **advance_task 审批卡/结果渲染缺任务名 + 显 UUID/空白**。 - [x] ✅(agent ux15-batch1 方案A) **UX-260618-15 [P1] 第一批(方案A根治N+1)** — **流式失败重试每轮独立气泡**。 - [x] ✅(主代串行) **UX-260618-16 [P1🔴]** — **`time.ts:44` formatDate 漏 `.value` 致 en locale i18n 失效**。 - [x] ✅(2026-06-20 核验) **UX-260618-17 [P1🟡]** — **ProjectDetail.handleApprovalMulti 漏 submitting 复位(防双击破口)**。 ## 🔧 2026-06-19 文件拆分升级 — P0 - [x] ✅(2026-06-20 核验已拆分) **REFACTOR-260619-01 [P0]** — **commands.rs(ai,1923 行)拆 5 模块**。 - [x] ✅(2026-06-22 核验) **REFACTOR-260619-02** — anthropic_compat.rs 拆模块。 - [x] ✅(2026-06-20 核验已拆分) **REFACTOR-260619-03 [P0]** — **audit.rs(959 行)拆 5 模块**。 ## 🔧 2026-06-19 文件拆分升级 — P1 - [x] ✅(2026-06-20 核验已拆分·agentic.rs 已删除) **REFACTOR-260619-05 [P1]** — **agentic.rs(1231 行)抽 agentic_runtime.rs + agentic_stream.rs**。 - [x] ✅(2026-06-20 核验·已拆) **REFACTOR-260619-06 [P1]** — **ai_node.rs(1107 行)拆 3 模块**。 - [x] ✅(2026-06-20 核验已拆分) **REFACTOR-260619-07 [P1]** — **(已有 SMELL-P0-3)AiChat.vue(4075)拆 ConversationSidebar/ChatHeader/MessageList/ChatInput**。 - [x] ✅(2026-06-22 核验) **REFACTOR-260619-08** — tool_registry.rs 按功能分组注册函数拆。 - [x] ✅(2026-06-22) **REFACTOR-260619-10** — scan.rs 拆 4 模块。 - [x] ✅(2026-06-20 核验) **(已有 SMELL-P1-9)crud.rs(2212)按表拆**。 ## 🔧 2026-06-19 命令行黑窗修复 + GLM 1214 数据调查 - [x] ✅(2026-06-19) **B-260619-01 [P1]** — **执行命令行弹黑色窗口闪烁**。 - [x] ✅(2026-06-22) **B-260619-02** — GLM 1214 tool_result 过大截断。 - [x] ✅(2026-06-20) **CR-260620-04 [P0]** — **1214/400 messages 非法·配对错根因(compress 绕过 sanitize)+ 停用模型路由穿透**。 ## 💡 2026-06-19 新需求(任务关联灵感) - [x] ✅(2026-06-20 核验已落地) **F-260619-01 [P2]** — **任务关联灵感:TaskRecord 新增 idea_id 字段**。 ## 💡 2026-06-19 新需求(MCP Server) - [x] ✅(2026-06-20 核验已落地) **F-260619-02 [P2]** — **DevFlow MCP Server:对外暴露任务/项目/灵感管理能力**。 ## 💡 2026-06-19 新需求(AI 工具文件访问动态权限模型) - [x] **F-260619-03 [P1]** ✅ — **AI 工具文件访问动态权限模型**(Phase A-D 全完成)。 ## 💡 灵感模块升级 - [x] ✅ 批1 可信度+体验 - [x] ✅ 批2 评估历史全栈 - [x] ✅ 批3 IdeasPanel 统计看板 - [x] ✅ 批3a 晋升携带 - [x] ✅ 批3b 关联关系 schema - [x] ✅ 批3c 关联关系前端 - [x] ✅ P1 信号词否定前缀 - [x] ✅ 连带修:`augmentation/resolvers.rs` 缺 `ResolverRegistry` import ## ⚠️ 灵感升级-遗留缺陷 - [x] ✅(2026-06-22 核验) **related_ids 白名单** — 实际已落地。 ## ⚠️ 预存债 — ToolResult 类型缺字段 - [x] ✅(2026-06-22 核验) **TD-260621-07 [P2/预存债]** — **ToolResult 类型缺 output_mode/files/counts/matches/total_files 字段**。 - [x] ✅(workflow wf 批1) **TD-260621-GUARD** — **[P0·用户实测卡死根因]** generating 状态机前端落地。 ## F-260620-01 跨端 AI Chat — Phase3 联调 - [x] ✅(2026-06-22) F-260622-01-阶段1 - [x] ✅(2026-06-22) F-260622-01-阶段2 - [x] ✅(2026-06-22) F-260622-01-阶段3 ## AI Chat 跑题/抓不住重点改进 - [x] ✅ P0-P2 全完成 ## 单对话内并行多轮推理 - [x] ✅ Phase1 已落 ## 🟡 F-09 决策e 前端 newConversation 未跟进 - [x] ✅ 已实施(CR-260620-02 审查 PASS) ## 🟡 MED-1 bind/create/update_project AI 工具路径审批执行后 reload 未兑现 - [x] ✅ 已实施(chat.rs ai_approve) ## ⚪ LOW F-09 stale 注释 + 死 i18n key 清理 - [x] ✅ 已实施 ## 🔍 2026-06-22 miniapp 功能走查 — 已修项 - [x] P1-B-260622 [P1🔴·首屏连不上·✅2026-06-23核验已修] - [x] P1-C-260622 [P1🔴·体验阻断·✅2026-06-23 核验已修] - [x] P1-E-260622 [P1🟡·多轮场景·✅2026-06-23] - [x] P2-B-260622 [P2·quickfix·✅2026-06-23核验已修] - [x] P2-C-260622 [P2·quickfix·✅2026-06-23] - [x] P2-A-260622 [P2·defer·✅2026-06-23] - [x] P3-A-260622 [P3·defer·✅2026-06-23] - [x] P1-F-260622 [P1🟡·✅2026-06-23] - [x] P1-G-260622 [P1🟡·体验·✅2026-06-23] - [x] P2-D-260622 [P2·健壮·✅2026-06-23核验已修] - [x] P2-E-260622 [P2·健壮·✅2026-06-23] - [x] P3-C-260622 [P3·清理·✅2026-06-23 核验已清] - [x] P3-D-260622 [P3·体验·✅2026-06-23] ## ✅ 2026-06-23 miniapp 全功能审查加固 - [x] F1 AiConvStateChanged idle/error 终态漏 clearWatchdog → 补 clearWatchdog - [x] F2 regenerate() 无 generating 守卫 → 加守卫 + toast - [x] F3 flushCurrentText 启发式回填错位 → 引入 currentAssistantMsgId 按 id 精确回填 - [x] F9 stop() 无终态兜底 + chat 页无停止按钮 - [x] F21 连接状态裸枚举字符串 → 中文文案 - [x] switch 加 default warn / ws.ts 二进制帧 warn / scheduleReconnect 加 MAX_RECONNECT_ATTEMPTS=20 - [x] 删 pages/test 死页 ## ✅ 2026-06-23 miniapp 用户需求批 - [x] req1 会话重命名 - [x] req2 断网不丢消息 - [x] req3 审批重连恢复 ## ✅ 2026-06-23 miniapp 收尾批 - [x] P1-E MaxRounds 继续/停止 - [x] P1-F 重发 + 复制 - [x] P3-D token 用量 - [x] P2-C 注释陈旧 - [x] P2-A messages 内存上限 ## ✅ 2026-06-23 miniapp polish 批 - [x] P2-E 审批失败回填 - [x] P1-G Markdown 渲染 - [x] P3-A textarea 多行 ## ✅ 2026-06-24 aichat 可靠性修复 - [x] BUG-260624-01 消息重叠/堆叠根治 - [x] BUG-260624-02 授权弹窗卡死根治 - [x] BUG-260624-03 工具执行心跳误报根治 - [x] BUG-260624-04 搜索工具误授权根治 - [x] BUG-260624-05 压缩后每轮停止根治 - [x] BUG-260625-01 grep 传单文件路径报「目录名称无效」根治 - [x] BUG-260625-02 read_file search 模式显示「0 行」根治 ## ✅ 2026-06-25 generating 状态机双轨收口 + 自动压缩路径残留修复 - [x] ✅(2026-06-25) Task#1 自动压缩成功路径残留 - [x] ✅(2026-06-25) Task#2 双轨状态机收口 ## 🔍 2026-06-26 灵感模块诊断待办(已完成) - [x] **IDEA-FIX-01 [P0🔴]** — ideas 表无软删除 - [x] **IDEA-FIX-02 [P0🔴]** — ideas 白名单含 id/created_at - [x] **IDEA-FIX-03 [P0🔴]** — priority 无值域校验 - [x] **IDEA-FIX-04 [P1🟡]** — record_to_idea 有损转换 - [x] **IDEA-FIX-05 [P1🟡]** — 评分关键词硬编码 - [x] **IDEA-FIX-06 [P1🟡]** — promote 补偿用 purge(不可恢复) - [x] **IDEA-FIX-07 [P1🟡]** — 关联单向 - [x] **IDEA-FIX-08 [P1🟡]** — 创建表单无 tags 输入 - [x] **IDEA-FIX-09 [P2🟠]** — 创建表单缺 priority/source - [x] **IDEA-FIX-11 [P2🟠]** — 假雷达图