文档: todo 登记 F-260619-05 任务可关联灵感

tasks 表无 idea 关联字段;projects 已有 idea_id 模式可复用。
设计点(粒度 1对1/1对多 + 存储 列/关联表 + 方向待决策)+
依赖消息级溯源 P0 完成(释放 migrations/models)。
This commit is contained in:
2026-06-19 19:24:02 +08:00
parent f217e39bfe
commit 353b07427f

View File

@@ -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-391id/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