新增: 消息级溯源 P0 地基(ChatMessage.id + ai_messages 拆表 + 迁移 + Repo)

依据消息拆分存储设计 + 消息级溯源设计 P0(地基,P1 溯源/P2 切读待后续):
- df-ai-core ChatMessage 加 id 字段(Option<String> serde 向前兼容)+ new_message_id(AtomicU64+ts 并发安全)
- 6 构造器生成 id,老 JSON 无 id → None 兼容
- df-storage V21 一次原子迁移:建 ai_messages 表 + ai_tool_executions.message_id 列 + 全量数据迁移(分批+坏数据容错+COUNT 幂等)
- AiMessageRecord + AiMessageRepo(insert_batch/list_by_conversation/delete_range/update_status/update_content_by_tool_call_id)
- audit message_id 列补建(conversation_repo/settings 白名单)
- src-tauri title.rs/finalize.rs 字面量占位(P1 接真值)

自验: df-storage 45 passed + df-ai-core 28 passed + workspace EXIT 0
This commit is contained in:
lxy
2026-06-19 19:24:02 +08:00
parent 44d1c6a00c
commit e981c1492a
10 changed files with 953 additions and 16 deletions
+2 -2
View File
@@ -172,8 +172,8 @@ pub fn allowed_columns_for(table: &str) -> Option<&'static [&'static str]> {
"prompt_tokens", "completion_tokens", "created_at", "updated_at",
],
"ai_tool_executions" => &[
"id", "conversation_id", "tool_call_id", "tool_name", "arguments", "result",
"status", "risk_level", "requested_at", "executed_at", "decided_by",
"id", "conversation_id", "message_id", "tool_call_id", "tool_name", "arguments",
"result", "status", "risk_level", "requested_at", "executed_at", "decided_by",
],
"knowledges" => &[
"id", "kind", "title", "content", "tags", "status", "confidence", "reuse_count",