From 353b07427f188bc70f5fb13f405e0af6e7d8bbd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=9D=E5=B0=98?= <237809796@qq.com> Date: Fri, 19 Jun 2026 19:24:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3:=20todo=20=E7=99=BB=E8=AE=B0?= =?UTF-8?q?=20F-260619-05=20=E4=BB=BB=E5=8A=A1=E5=8F=AF=E5=85=B3=E8=81=94?= =?UTF-8?q?=E7=81=B5=E6=84=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit tasks 表无 idea 关联字段;projects 已有 idea_id 模式可复用。 设计点(粒度 1对1/1对多 + 存储 列/关联表 + 方向待决策)+ 依赖消息级溯源 P0 完成(释放 migrations/models)。 --- docs/todo.md | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/docs/todo.md b/docs/todo.md index 0b3e400..e2a6eae 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -583,3 +583,41 @@ — `src-tauri/src/state.rs` + `src-tauri/src/commands/ai/{mod.rs,tool_registry.rs,agentic.rs}` + `src-tauri/src/commands/settings.rs` + 前端 Settings 页 + AiChat 弹窗组件 +--- + +### F-260619-05 任务可关联灵感(tasks ↔ ideas 关联) + +**背景**:当前 tasks 表无 idea 关联字段,任务与灵感(来源/启发)无结构化关联。projects 表已有 `idea_id REFERENCES ideas(id)`(项目关联灵感),任务侧缺失。 + +**现状**(核对 `df-storage/src/migrations.rs`): +- tasks 表(:378-391):id/project_id/title/description/status/priority/branch_name/assignee — **无 idea 关联** +- projects 表(:373):`idea_id REFERENCES ideas(id)` — 项目关联灵感(**可复用模式**) +- ideas 表(:354-365):`source TEXT`(自由文本来源) +- releases 表(:399):`task_ids JSON`(发布关联多任务,1对多 JSON 数组先例) + +**设计点(待决策)**: +1. **关联粒度**:一对一(`source_idea_id`,任务来源单个灵感)vs 一对多(`related_idea_ids` JSON 数组,借鉴 releases.task_ids) +2. **存储**:tasks 加 `idea_id` 列(迁移,复用 projects.idea_id 外键模式)vs 关联表 `task_idea_links`(多对多,灵活但复杂) +3. **方向**:单向(任务→灵感)vs 双向(灵感侧反向显示关联任务列表) +4. **AI 工具**:`update_task` 支持 idea_id(白名单加列)vs 新工具 `link_task_idea` +5. **前端**:任务卡片/详情显示关联灵感 + 选择关联(mention 复用 ChatInput @灵感) + +**推荐**:tasks 加 `idea_id TEXT REFERENCES ideas(id)`(复用 projects 模式,1对1 起步,后续按需扩展 1对多),灵感侧反向查询 `list_tasks_by_idea`。 + +**依赖**:改 `df-storage/migrations.rs` + `models.rs`(TaskRecord 加 idea_id)— 与消息级溯源 P0 改同文件冲突,**待 P0 完成后实施**。 + +**改动点**: +- `crates/df-storage/src/migrations.rs`:tasks 加 idea_id 列(新迁移 V) +- `crates/df-storage/src/models.rs`:TaskRecord 加 idea_id 字段 + from_row + insert/update SQL +- `crates/df-storage/src/crud/task_repo.rs`:白名单 + idea_id 读写 +- `src-tauri/src/commands/ai/tool_registry.rs`:update_task 支持 idea_id(或新工具) +- 前端:任务卡片/详情关联灵感展示(友好 title 非裸 id)+ 选择 + +**验收**: +1. 任务可关联灵感(创建/更新时指定 idea_id) +2. 任务卡片显示关联灵感(title 友好展示) +3. 灵感详情可查关联任务列表(若双向) +4. `cargo check --workspace EXIT 0` + `vue-tsc EXIT 0` + +**状态**:📋 待设计决策(粒度/存储/方向)+ 待消息级溯源 P0 完成(释放 migrations/models) +