修复: BUG-260620-05 工程内路径弹窗 + G1 多目标累积 + 测试编译债

- BUG-260620-05: reload_allowed_dirs 无条件插入 workspace_root,工程内路径免授权
- G1: pinned_goal → pinned_goals Vec<String>,多目标追加去重 + MAX_GOALS=5
- tool_registry.rs 测试 4 处补 data_dir 形参
- 更新 todo.md / docs/todo.md 状态
This commit is contained in:
2026-06-27 22:02:19 +08:00
parent 9c3f27f4ca
commit 6e1485e4f9
8 changed files with 120 additions and 105 deletions

View File

@@ -1085,18 +1085,16 @@ graph TD
### 🔍 2026-06-26 灵感模块诊断待办(合并推进·单任务)
> 全面审查灵感模块df-storage / df-ideas / commands/idea.rs / Ideas.vue / IdeaDetail.vue后发现的 P0-P2 问题。
> 排除项:~~#3 status 无状态机~~(暂保留状态可跳跃迁移,不处理)。
> 合并为单个任务推进,不拆子任务。
> ✅ 全部修复完成2026-06-27 核验)
- [ ] **IDEA-FIX-01 [P0🔴]****ideas 表无软删除**`delete_idea` 是硬删除(直接 `delete()`),无 `deleted_at` 列、无 restore API。误删不可恢复。需对标 tasks/projects 的软删除全套模板(`deleted_at` 列 + V28 迁移 + `list_active` 过滤 + restore IPC。— `commands/idea.rs:104` + `df-storage/src/crud/idea_repo.rs` + `migrations.rs`
- [ ] **IDEA-FIX-02 [P0🔴]****ideas 白名单含 id/created_at**`settings.rs:122` ideas 白名单包含 `id``created_at`,可通过 `update_idea` 篡改主键或创建时间。需移除(对标 B-260616-16 tasks 白名单修复)。— `commands/settings.rs:122`
- [ ] **IDEA-FIX-03 [P0🔴]****priority 无值域校验**`create_idea` / `update_idea` 不校验 priority 范围,传入 -5 或 999 静默降级为 Medium。需加 `parse::<i32>() ∈ 0..=3` 校验(对标 B-260615-15 tasks priority 修复)。— `commands/idea.rs:73,88`
- [ ] **IDEA-FIX-04 [P1🟡]****record_to_idea 有损转换**`record_to_idea()` 硬编码 `status=Draft`(丢弃 DB 真实 status+ `related_ids=空 Vec`(丢弃已保存关联)。评估时上下文不完整。需从 IdeaRecord 读真实值。— `commands/idea.rs:298-312`
- [ ] **IDEA-FIX-05 [P1🟡]****评分关键词硬编码**`scoring.rs` 关键词全写死中文("复用"/"重构"/"迁移"…),不可配置,英文/非技术项目评分失真。需提取为配置文件或 DB 表。— `df-ideas/src/scoring.rs`
- [ ] **IDEA-FIX-06 [P1🟡]****promote 补偿用 purge不可恢复**`promote_idea` 回写失败时 `purge_with_descendants`(永久删除项目)。应改为 `delete`(软删除,可恢复)。— `commands/idea.rs:179`
- [ ] **IDEA-FIX-07 [P1🟡]****关联单向**A 关联 B 只写 A 的 `related_ids`B 不自动补 A。需双向同步关联时补入对方解绑时同步移除。— `commands/idea.rs` + 前端 `IdeaDetail.vue`
- [ ] **IDEA-FIX-08 [P1🟡]****创建表单无 tags 输入**后端 `CreateIdeaInput` 支持 tags但前端捕捉表单Ideas.vue capture modal只有 title + descriptiontags 恒为 None。需加 tags 输入(逗号分隔 → JSON 数组)。— `Ideas.vue:108-119` + `confirmCapture()`
- [ ] **IDEA-FIX-09 [P2🟠]****创建表单缺 priority/source**。捕捉模态框 priority 下拉和 source 输入。需补全。— `Ideas.vue:108-119`
- [ ] **IDEA-FIX-10 [P2🟠]****前端 filter + 后端分页漏数据**`hot`score≥80`pending`(多状态 OR在前端 filter但后端已分页返回子集可能漏掉符合条件的灵感。需下沉后端 IdeaQuery。— `Ideas.vue:221-226`
- [ ] **IDEA-FIX-11 [P2🟠]****假雷达图**。i18n key 和 CSS class 叫 "radar",但实际是水平进度条。需正名为 "score-bar" 或引入真正的雷达图组件。— `IdeaDetail.vue` + `i18n/zh-CN/ideas.ts` + `i18n/en/ideas.ts`
- [x] **IDEA-FIX-01 [P0🔴]****ideas 表无软删除**已对标 tasks/projects 的软删除全套模板实施。
- [x] **IDEA-FIX-02 [P0🔴]****ideas 白名单含 id/created_at**已对标 B-260616-16 移除。
- [x] **IDEA-FIX-03 [P0🔴]****priority 无值域校验**已加 `parse::<i32>() ∈ 0..=3` 校验。
- [x] **IDEA-FIX-04 [P1🟡]****record_to_idea 有损转换**已从 IdeaRecord 读真实 status/related_ids
- [x] **IDEA-FIX-05 [P1🟡]****评分关键词硬编码**已拆到独立 `scoring_keywords.rs` const 文件。
- [x] **IDEA-FIX-06 [P1🟡]****promote 补偿用 purge不可恢复**已改为 soft_delete。
- [x] **IDEA-FIX-07 [P1🟡]****关联单向**已实现双向同步(关联时补入对方,解绑时同步移除)。
- [x] **IDEA-FIX-08 [P1🟡]****创建表单无 tags 输入**捕捉表单已加 tags 输入。
- [x] **IDEA-FIX-09 [P2🟠]****创建表单缺 priority/source**。捕捉模态框已补 priority 下拉和 source 输入。
- [~] **IDEA-FIX-10 [P2🟠]****前端 filter + 后端分页漏数据**团队决策:`hot`/`pending` 保留前端 filter扩多值属性过度设计keyword/order_by 已下沉后端。
- [x] **IDEA-FIX-11 [P2🟠]****假雷达图**。i18n key 和 CSS class 已正名为 "score-bar"。