修复: DOC-01 ARCHITECTURE 数据模型重写(删 9 虚构表+补 7 遗漏+字段对齐)
第六章数据模型段重写(其余 9 段未动)——删 9 虚构表(workflow_defs/runs/artifacts/connections/features/test_cases/test_runs/annotations/decisions)+补 7 遗漏(branches/node_executions/ai_conversations/ai_tool_executions/knowledges/knowledge_events/app_settings)+workflow 合并修正为单表 workflow_executions(dag_json 序列化)+字段对齐 models.rs/migrations.rs V1-V13(时间戳 INTEGER→TEXT 毫秒串,projects.idea_id 补外键)。主代理核查:虚构表零命中/CREATE TABLE 13 与 migrations.rs 一致/表名清单吻合。批2,另一会话文档核对 §1
This commit is contained in:
338
ARCHITECTURE.md
338
ARCHITECTURE.md
@@ -263,214 +263,194 @@ pub struct Decision {
|
|||||||
|
|
||||||
### SQLite 表结构
|
### SQLite 表结构
|
||||||
|
|
||||||
|
> 真相源:`crates/df-storage/src/migrations.rs`(V1-V13,幂等迁移)。下表对齐真实 schema,字段/类型/默认值/外键与迁移文件一致。Rust 结构体见 `crates/df-storage/src/models.rs`。
|
||||||
|
|
||||||
|
共 **13 张业务表**(另含内部表 `schema_version` 记录迁移版本)。
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
-- 想法池
|
-- 想法池 (V1 建表 / V2 补 promoted_to + ai_analysis + scores)
|
||||||
CREATE TABLE ideas (
|
CREATE TABLE ideas (
|
||||||
id TEXT PRIMARY KEY,
|
id TEXT PRIMARY KEY,
|
||||||
title TEXT NOT NULL,
|
title TEXT NOT NULL,
|
||||||
description TEXT,
|
description TEXT NOT NULL DEFAULT '',
|
||||||
tags TEXT, -- JSON array
|
status TEXT NOT NULL DEFAULT 'draft', -- draft/pending_review/approved/rejected/promoted/archived
|
||||||
source TEXT NOT NULL, -- Manual/Clipboard/AI
|
priority INTEGER NOT NULL DEFAULT 1,
|
||||||
status TEXT NOT NULL, -- Draft/PendingReview/Approved/Rejected/Promoted/Archived
|
score REAL,
|
||||||
scores TEXT, -- JSON: {market_potential, competition, feasibility, roi, overall}
|
tags TEXT, -- JSON 数组
|
||||||
ai_analysis TEXT,
|
source TEXT,
|
||||||
related_ideas TEXT, -- JSON array of idea ids
|
promoted_to TEXT, -- 晋升后的 project_id (V2)
|
||||||
promoted_to TEXT, -- project id
|
ai_analysis TEXT, -- AI 分析结果 JSON (V2)
|
||||||
created_at INTEGER NOT NULL,
|
scores TEXT, -- 多维评分 JSON: feasibility/impact/urgency/overall (V2)
|
||||||
updated_at INTEGER NOT NULL
|
created_at TEXT NOT NULL,
|
||||||
|
updated_at TEXT NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
-- 项目
|
-- 项目 (V1 建表 / V11 补 deleted_at / V12 补 path + stack)
|
||||||
CREATE TABLE projects (
|
CREATE TABLE projects (
|
||||||
id TEXT PRIMARY KEY,
|
id TEXT PRIMARY KEY,
|
||||||
name TEXT NOT NULL,
|
name TEXT NOT NULL,
|
||||||
description TEXT,
|
description TEXT NOT NULL DEFAULT '',
|
||||||
idea_id TEXT, -- 来源想法
|
status TEXT NOT NULL DEFAULT 'planning',
|
||||||
repo_path TEXT, -- 仓库路径
|
idea_id TEXT REFERENCES ideas(id),
|
||||||
tech_stack TEXT, -- JSON array
|
path TEXT, -- 绑定的本地代码目录绝对路径 (V12,可空=未绑定)
|
||||||
status TEXT NOT NULL, -- Planning/InProgress/Testing/Releasing/Completed/Paused/Cancelled
|
stack TEXT, -- 技术栈 JSON 数组字符串 (V12,探测填充)
|
||||||
priority INTEGER NOT NULL DEFAULT 1, -- 0=Low, 1=Medium, 2=High, 3=Critical
|
deleted_at TEXT, -- 软删回收站: NULL=正常, 非空=已进回收站 (V11)
|
||||||
current_stage TEXT, -- Idea/Requirement/Coding/Testing/Release
|
created_at TEXT NOT NULL,
|
||||||
config TEXT, -- JSON: 项目级配置
|
updated_at TEXT NOT NULL
|
||||||
created_at INTEGER NOT NULL,
|
|
||||||
updated_at INTEGER NOT NULL
|
|
||||||
);
|
);
|
||||||
|
|
||||||
-- 工作流定义
|
-- 任务 (V1 建表 / V2 补 workflow_def_id + base_branch)
|
||||||
CREATE TABLE workflow_defs (
|
|
||||||
id TEXT PRIMARY KEY,
|
|
||||||
project_id TEXT NOT NULL,
|
|
||||||
task_id TEXT, -- 关联的任务 (可为空,如项目级工作流)
|
|
||||||
name TEXT NOT NULL,
|
|
||||||
description TEXT,
|
|
||||||
dag TEXT NOT NULL, -- JSON: DAG 结构
|
|
||||||
template_id TEXT, -- 来源模板
|
|
||||||
version INTEGER NOT NULL DEFAULT 1,
|
|
||||||
created_at INTEGER NOT NULL,
|
|
||||||
updated_at INTEGER NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
-- 任务 (项目内的并行工作单元)
|
|
||||||
CREATE TABLE tasks (
|
CREATE TABLE tasks (
|
||||||
id TEXT PRIMARY KEY,
|
id TEXT PRIMARY KEY,
|
||||||
project_id TEXT NOT NULL,
|
project_id TEXT NOT NULL REFERENCES projects(id),
|
||||||
title TEXT NOT NULL,
|
title TEXT NOT NULL,
|
||||||
description TEXT,
|
description TEXT NOT NULL DEFAULT '',
|
||||||
status TEXT NOT NULL, -- Todo/InProgress/InReview/Testing/Done/Blocked/Cancelled
|
status TEXT NOT NULL DEFAULT 'todo', -- todo/in_progress/in_review/testing/done/blocked/cancelled
|
||||||
priority INTEGER NOT NULL DEFAULT 1, -- 0=Low, 1=Medium, 2=High, 3=Critical
|
priority INTEGER NOT NULL DEFAULT 1,
|
||||||
branch_name TEXT, -- Git 分支名
|
branch_name TEXT,
|
||||||
base_branch TEXT DEFAULT 'main', -- 基于哪个分支创建
|
assignee TEXT,
|
||||||
workflow_def_id TEXT, -- 关联的工作流定义
|
workflow_def_id TEXT, -- 关联的工作流定义 ID (V2)
|
||||||
assignee TEXT, -- AI agent 或人工
|
base_branch TEXT, -- 基础分支 (V2)
|
||||||
merge_conflict TEXT, -- JSON: 冲突信息
|
created_at TEXT NOT NULL,
|
||||||
merged_at INTEGER,
|
updated_at TEXT NOT NULL
|
||||||
created_at INTEGER NOT NULL,
|
|
||||||
updated_at INTEGER NOT NULL
|
|
||||||
);
|
);
|
||||||
|
|
||||||
-- 发布计划 (合并多个 Task → 发布)
|
-- 分支 (V2 建表) — 任务与 Git 分支绑定
|
||||||
|
CREATE TABLE branches (
|
||||||
|
id TEXT PRIMARY KEY,
|
||||||
|
project_id TEXT NOT NULL REFERENCES projects(id),
|
||||||
|
task_id TEXT REFERENCES tasks(id),
|
||||||
|
name TEXT NOT NULL,
|
||||||
|
base TEXT NOT NULL DEFAULT 'main',
|
||||||
|
status TEXT NOT NULL DEFAULT 'active',
|
||||||
|
created_at TEXT NOT NULL,
|
||||||
|
updated_at TEXT NOT NULL,
|
||||||
|
merged_at TEXT
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 发布计划 (V1 建表)
|
||||||
CREATE TABLE releases (
|
CREATE TABLE releases (
|
||||||
id TEXT PRIMARY KEY,
|
id TEXT PRIMARY KEY,
|
||||||
project_id TEXT NOT NULL,
|
project_id TEXT NOT NULL REFERENCES projects(id),
|
||||||
version TEXT NOT NULL, -- e.g. v2.3.0
|
version TEXT NOT NULL,
|
||||||
branch_name TEXT, -- release 分支
|
status TEXT NOT NULL DEFAULT 'planned',
|
||||||
task_ids TEXT NOT NULL, -- JSON array: 包含的 Task ID 列表
|
task_ids TEXT NOT NULL DEFAULT '[]', -- JSON 数组: 包含的 Task ID 列表
|
||||||
status TEXT NOT NULL, -- Planning/Integrating/Testing/Ready/Published
|
changelog TEXT,
|
||||||
workflow_def_id TEXT, -- 发布工作流
|
created_at TEXT NOT NULL,
|
||||||
changelog TEXT,
|
released_at TEXT
|
||||||
published_at INTEGER,
|
|
||||||
created_at INTEGER NOT NULL,
|
|
||||||
updated_at INTEGER NOT NULL
|
|
||||||
);
|
);
|
||||||
|
|
||||||
-- 工作流执行
|
-- 工作流执行 (V1 建表 / V2 补 project_id + task_id)
|
||||||
CREATE TABLE workflow_runs (
|
-- 注: 不区分 def/run, DAG 直接序列化进 dag_json, 一次执行一行
|
||||||
id TEXT PRIMARY KEY,
|
CREATE TABLE workflow_executions (
|
||||||
workflow_def_id TEXT NOT NULL,
|
id TEXT PRIMARY KEY,
|
||||||
project_id TEXT NOT NULL,
|
name TEXT NOT NULL,
|
||||||
task_id TEXT, -- 关联的任务 (可为空)
|
dag_json TEXT NOT NULL, -- DAG 的 JSON 序列化
|
||||||
release_id TEXT, -- 关联的发布 (可为空)
|
status TEXT NOT NULL DEFAULT 'pending', -- pending/running/paused/completed/failed/cancelled
|
||||||
status TEXT NOT NULL DEFAULT 'pending', -- Pending/Running/Paused/Completed/Failed/Cancelled
|
triggered_by TEXT,
|
||||||
node_states TEXT, -- JSON: {node_id: {status(Pending/Running/Completed/Failed/Skipped/Waiting), output, started_at, finished_at}}
|
project_id TEXT, -- 关联项目 ID (V2)
|
||||||
current_layer INTEGER,
|
task_id TEXT, -- 关联任务 ID (V2)
|
||||||
started_at INTEGER,
|
created_at TEXT NOT NULL,
|
||||||
finished_at INTEGER,
|
completed_at TEXT
|
||||||
error TEXT
|
|
||||||
);
|
);
|
||||||
|
|
||||||
-- 产出物
|
-- 节点执行 (V1 建表) — 工作流执行过程中每个节点的运行快照
|
||||||
CREATE TABLE artifacts (
|
CREATE TABLE node_executions (
|
||||||
id TEXT PRIMARY KEY,
|
id TEXT PRIMARY KEY,
|
||||||
project_id TEXT NOT NULL,
|
workflow_id TEXT NOT NULL REFERENCES workflow_executions(id),
|
||||||
workflow_run_id TEXT,
|
node_id TEXT NOT NULL,
|
||||||
node_id TEXT,
|
node_type TEXT NOT NULL,
|
||||||
kind TEXT NOT NULL, -- PRD/CodeChange/TestReport/ReleaseNote/Image
|
status TEXT NOT NULL DEFAULT 'pending',
|
||||||
title TEXT,
|
input_json TEXT,
|
||||||
content TEXT,
|
output_json TEXT,
|
||||||
file_path TEXT,
|
error_message TEXT,
|
||||||
metadata TEXT, -- JSON
|
started_at TEXT,
|
||||||
created_at INTEGER NOT NULL
|
completed_at TEXT
|
||||||
);
|
);
|
||||||
|
|
||||||
-- 连接配置
|
-- AI 提供商配置 (V9 建表) — 多 Provider 统一抽象
|
||||||
CREATE TABLE connections (
|
|
||||||
id TEXT PRIMARY KEY,
|
|
||||||
name TEXT NOT NULL,
|
|
||||||
kind TEXT NOT NULL, -- MySQL/SSH/MongoDB/Redis/HTTP
|
|
||||||
config TEXT NOT NULL, -- JSON (加密存储)
|
|
||||||
created_at INTEGER NOT NULL,
|
|
||||||
updated_at INTEGER NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
-- AI 模型配置
|
|
||||||
CREATE TABLE ai_providers (
|
CREATE TABLE ai_providers (
|
||||||
id TEXT PRIMARY KEY,
|
id TEXT PRIMARY KEY,
|
||||||
provider TEXT NOT NULL, -- Claude/GLM/DeepSeek/OpenAI
|
name TEXT NOT NULL,
|
||||||
api_key TEXT, -- 加密存储
|
provider_type TEXT NOT NULL DEFAULT 'openai_compat',
|
||||||
base_url TEXT,
|
api_key TEXT NOT NULL,
|
||||||
models TEXT, -- JSON: 可用模型列表
|
base_url TEXT NOT NULL,
|
||||||
is_default INTEGER DEFAULT 0,
|
default_model TEXT NOT NULL,
|
||||||
config TEXT -- JSON: 额外配置
|
models TEXT, -- JSON array of model names
|
||||||
|
is_default INTEGER NOT NULL DEFAULT 0,
|
||||||
|
config TEXT, -- JSON extra config
|
||||||
|
created_at TEXT NOT NULL,
|
||||||
|
updated_at TEXT NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
-- 需求功能清单
|
-- AI 对话 (V3 建表 / V4 补 archived / V5 补 prompt_tokens + completion_tokens / V6 补 models)
|
||||||
CREATE TABLE features (
|
CREATE TABLE ai_conversations (
|
||||||
id TEXT PRIMARY KEY,
|
id TEXT PRIMARY KEY,
|
||||||
project_id TEXT NOT NULL,
|
title TEXT,
|
||||||
task_id TEXT, -- 关联任务
|
messages TEXT NOT NULL DEFAULT '[]', -- JSON array of ChatMessage
|
||||||
requirement_id TEXT, -- 来源需求
|
provider_id TEXT,
|
||||||
title TEXT NOT NULL,
|
model TEXT,
|
||||||
description TEXT,
|
models TEXT, -- 用过的所有 model JSON 数组字符串 (去重, V6)
|
||||||
status TEXT NOT NULL DEFAULT 'selected', -- Selected/Deferred/Rejected/Completed
|
archived INTEGER NOT NULL DEFAULT 0, -- 是否归档(侧栏折叠展示, V4)
|
||||||
priority INTEGER NOT NULL DEFAULT 1, -- 0=Low, 1=Medium, 2=High, 3=Critical
|
prompt_tokens INTEGER, -- 输入 token 累计 (流式 usage 落库, V5)
|
||||||
rejection_reason TEXT, -- 不做的原因(自动进入决策留痕)
|
completion_tokens INTEGER, -- 输出 token 累计 (流式 usage 落库, V5)
|
||||||
test_case_count INTEGER DEFAULT 0,
|
created_at TEXT NOT NULL,
|
||||||
order_index INTEGER NOT NULL, -- 排序
|
updated_at TEXT NOT NULL
|
||||||
metadata TEXT, -- JSON: 额外属性
|
|
||||||
created_at INTEGER NOT NULL,
|
|
||||||
updated_at INTEGER NOT NULL
|
|
||||||
);
|
);
|
||||||
|
|
||||||
-- 测试用例
|
-- AI 工具执行审计 (V9 建表) — Agent 工具调用的审批/执行留痕
|
||||||
CREATE TABLE test_cases (
|
CREATE TABLE ai_tool_executions (
|
||||||
id TEXT PRIMARY KEY,
|
id TEXT PRIMARY KEY,
|
||||||
project_id TEXT NOT NULL,
|
conversation_id TEXT,
|
||||||
feature_id TEXT NOT NULL, -- 关联功能
|
tool_call_id TEXT NOT NULL,
|
||||||
title TEXT NOT NULL,
|
tool_name TEXT NOT NULL,
|
||||||
description TEXT,
|
arguments TEXT NOT NULL,
|
||||||
preconditions TEXT, -- 前置条件
|
result TEXT,
|
||||||
steps TEXT NOT NULL, -- JSON: 测试步骤 [{step, expected}]
|
status TEXT NOT NULL DEFAULT 'pending', -- pending/approved/rejected/executing/completed/failed
|
||||||
kind TEXT NOT NULL DEFAULT 'Manual', -- Manual/Auto/AI-Generated
|
risk_level TEXT NOT NULL DEFAULT 'medium', -- low/medium/high
|
||||||
priority INTEGER NOT NULL DEFAULT 1, -- 0=Low, 1=Medium, 2=High, 3=Critical
|
requested_at TEXT NOT NULL,
|
||||||
|
executed_at TEXT,
|
||||||
|
decided_by TEXT -- human/auto
|
||||||
);
|
);
|
||||||
|
|
||||||
-- 测试执行记录
|
-- 知识条目 (V7 建表 / V8 补 embedding / V10 补 reasoning) — 经验沉淀基本单元, 共享记忆层
|
||||||
CREATE TABLE test_runs (
|
-- 状态机: candidate → pending_review → published → archived
|
||||||
id TEXT PRIMARY KEY,
|
CREATE TABLE knowledges (
|
||||||
project_id TEXT NOT NULL,
|
id TEXT PRIMARY KEY,
|
||||||
task_id TEXT, -- 关联任务
|
kind TEXT NOT NULL DEFAULT 'pitfall', -- 7 种: review_rule/prompt_template/pitfall/architecture_pattern/diagnosis/deployment_note/workflow_optimization
|
||||||
feature_id TEXT, -- 关联功能
|
title TEXT NOT NULL,
|
||||||
test_case_id TEXT NOT NULL,
|
content TEXT NOT NULL DEFAULT '',
|
||||||
status TEXT NOT NULL, -- Passed/Failed/Skipped/Blocked
|
tags TEXT, -- JSON 数组字符串
|
||||||
actual_result TEXT,
|
status TEXT NOT NULL DEFAULT 'candidate', -- candidate|pending_review|published|archived
|
||||||
error_detail TEXT, -- 失败详情
|
confidence TEXT, -- high|medium|low (AI 提炼自评)
|
||||||
executed_by TEXT, -- AI/Human
|
reuse_count INTEGER NOT NULL DEFAULT 0, -- 唯一客观排序信号
|
||||||
duration_ms INTEGER,
|
verified INTEGER NOT NULL DEFAULT 0, -- 发布审核时一次性人工标
|
||||||
executed_at INTEGER NOT NULL
|
source_project TEXT, -- 来源项目(仅溯源不过滤)
|
||||||
|
source_ref TEXT, -- 来源实体引用(如 conv:{id})
|
||||||
|
reasoning TEXT, -- AI 提炼判断依据("为何值得沉淀"), 手动录入为 NULL (V10)
|
||||||
|
embedding BLOB, -- Vec<f32> 小端字节序列化, NULL=未嵌入走 LIKE 降级 (V8)
|
||||||
|
created_at TEXT NOT NULL,
|
||||||
|
updated_at TEXT NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
-- 标注 (贯穿所有内容)
|
-- 知识生命线事件 (V10 建表) — 追加型审计: 产生/审核/引用/归档
|
||||||
CREATE TABLE annotations (
|
CREATE TABLE knowledge_events (
|
||||||
id TEXT PRIMARY KEY,
|
id TEXT PRIMARY KEY,
|
||||||
project_id TEXT NOT NULL,
|
knowledge_id TEXT NOT NULL,
|
||||||
entity_type TEXT NOT NULL, -- Requirement/Feature/Code/TestCase/TestReport/DesignDoc
|
event_type TEXT NOT NULL, -- created | extracted | status_changed | referenced | archived
|
||||||
entity_id TEXT NOT NULL, -- 关联实体 ID
|
source_ref TEXT, -- 触发来源: conv:{id} / manual / system
|
||||||
marker TEXT NOT NULL, -- FIXME/TODO/QUESTION/RISK/DECISION/OPTIMIZE
|
context_json TEXT, -- JSON: 因 event_type 而异
|
||||||
content TEXT NOT NULL, -- 标注内容
|
timestamp TEXT NOT NULL
|
||||||
location TEXT, -- 文件路径+行号 / 文档段落
|
|
||||||
status TEXT NOT NULL DEFAULT 'Open', -- Open/AI-Processing/Resolved/WontFix
|
|
||||||
resolved_by TEXT, -- AI/Human
|
|
||||||
resolution TEXT, -- 处理结果
|
|
||||||
created_at INTEGER NOT NULL,
|
|
||||||
resolved_at INTEGER
|
|
||||||
);
|
);
|
||||||
|
|
||||||
-- 决策留痕
|
-- 通用应用设置 (V13 建表) — 前端 localStorage 迁移目标 KV 表
|
||||||
CREATE TABLE decisions (
|
CREATE TABLE app_settings (
|
||||||
id TEXT PRIMARY KEY,
|
key TEXT PRIMARY KEY,
|
||||||
project_id TEXT NOT NULL,
|
value TEXT NOT NULL, -- JSON 字符串
|
||||||
context TEXT NOT NULL, -- 决策背景
|
updated_at TEXT NOT NULL
|
||||||
question TEXT NOT NULL, -- 需要决定的问题
|
|
||||||
alternatives TEXT, -- JSON array: 考虑过的方案
|
|
||||||
decision TEXT NOT NULL, -- 最终决定
|
|
||||||
reason TEXT NOT NULL, -- 决策原因
|
|
||||||
decided_by TEXT NOT NULL, -- AI/Human
|
|
||||||
entity_type TEXT, -- 关联实体类型
|
|
||||||
entity_id TEXT, -- 关联实体 ID
|
|
||||||
impact TEXT, -- 影响范围
|
|
||||||
stage TEXT, -- Idea/Requirement/Coding/Testing/Release
|
|
||||||
created_at INTEGER NOT NULL
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
-- 内部表: schema_version (version INTEGER PRIMARY KEY) — 迁移版本记录
|
||||||
```
|
```
|
||||||
|
|
||||||
## 七、阶段模板
|
## 七、阶段模板
|
||||||
|
|||||||
Reference in New Issue
Block a user