feat(history): 实现三模历史搜索、每日智能协同摘要与时间轴侧栏 (Phase P2)

This commit is contained in:
WeiCHEN
2026-09-13 02:50:20 +00:00
committed by weichen
parent 54f1c88791
commit 487dc072f5
19 changed files with 2396 additions and 29 deletions
+28
View File
@@ -118,6 +118,34 @@ CREATE TABLE IF NOT EXISTS chat_messages (
CREATE INDEX IF NOT EXISTS idx_chat_messages_sid_time ON chat_messages(session_id, created_at ASC);
CREATE INDEX IF NOT EXISTS idx_chat_messages_sid_day_id ON chat_messages(session_id, day_key DESC, id DESC);
CREATE INDEX IF NOT EXISTS idx_chat_messages_sid_category ON chat_messages(session_id, category, id DESC);
CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE INDEX IF NOT EXISTS idx_chat_messages_content_trgm ON chat_messages USING GIN (content gin_trgm_ops);
-- 4.1 每日智能摘要表 (Daily Digests)
CREATE TABLE IF NOT EXISTS chat_daily_digests (
id BIGSERIAL PRIMARY KEY,
session_id TEXT NOT NULL REFERENCES chat_sessions(session_id) ON DELETE CASCADE,
project_id BIGINT REFERENCES projects(id) ON DELETE SET NULL,
day_key DATE NOT NULL,
headline TEXT NOT NULL DEFAULT '',
key_points JSONB NOT NULL DEFAULT '[]'::jsonb,
deliverables JSONB NOT NULL DEFAULT '[]'::jsonb,
decisions JSONB NOT NULL DEFAULT '[]'::jsonb,
open_questions JSONB NOT NULL DEFAULT '[]'::jsonb,
stage_progress TEXT NOT NULL DEFAULT '',
first_message_id BIGINT,
last_message_id BIGINT,
message_count INT NOT NULL DEFAULT 0,
status TEXT NOT NULL DEFAULT 'pending',
source TEXT NOT NULL DEFAULT '',
model TEXT NOT NULL DEFAULT '',
token_usage INT NOT NULL DEFAULT 0,
digest_version INT NOT NULL DEFAULT 1,
generated_at TIMESTAMPTZ,
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
UNIQUE (session_id, day_key)
);
CREATE INDEX IF NOT EXISTS idx_digests_sid_day ON chat_daily_digests(session_id, day_key DESC);
-- -----------------------------------------------------------------------------
-- 5. CAS 物理文件寻址与引用去重表 (Storage Blobs & File References)
@@ -0,0 +1,41 @@
-- ==============================================================================
-- 迁移脚本: pg_trgm 搜索基础设施与 chat_daily_digests 按日智能摘要表
-- 日期: 2026-09-10
-- 描述:
-- 1. 启用 pg_trgm 扩展以支持中文/英文 trigram 快速文本检索与相似度计算
-- 2. 为 chat_messages(content) 创建 GIN Trigram 索引 (idx_chat_messages_content_trgm)
-- 3. 创建 chat_daily_digests 表与 (session_id, day_key DESC) 索引
-- ==============================================================================
-- 1. 扩展与搜索索引
CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE INDEX IF NOT EXISTS idx_chat_messages_content_trgm
ON chat_messages USING GIN (content gin_trgm_ops);
-- 2. 按日智能摘要表
CREATE TABLE IF NOT EXISTS chat_daily_digests (
id BIGSERIAL PRIMARY KEY,
session_id TEXT NOT NULL REFERENCES chat_sessions(session_id) ON DELETE CASCADE,
project_id BIGINT REFERENCES projects(id) ON DELETE SET NULL,
day_key DATE NOT NULL,
headline TEXT NOT NULL DEFAULT '', -- 一句话日总结 (≤40 字)
key_points JSONB NOT NULL DEFAULT '[]'::jsonb, -- 工作要点 (string[])
deliverables JSONB NOT NULL DEFAULT '[]'::jsonb, -- 当日产出 [{doc_id,title,state}]
decisions JSONB NOT NULL DEFAULT '[]'::jsonb, -- 当日拍板决策 (string[])
open_questions JSONB NOT NULL DEFAULT '[]'::jsonb, -- 未决事项 (string[])
stage_progress TEXT NOT NULL DEFAULT '', -- 当日阶段推进 (如 V0.1→V0.5)
first_message_id BIGINT, -- 当日首条消息 (跳转锚点)
last_message_id BIGINT,
message_count INT NOT NULL DEFAULT 0,
status TEXT NOT NULL DEFAULT 'pending', -- pending|generating|ready|fallback|failed
source TEXT NOT NULL DEFAULT '', -- llm | rule
model TEXT NOT NULL DEFAULT '',
token_usage INT NOT NULL DEFAULT 0,
digest_version INT NOT NULL DEFAULT 1, -- 当日增量再生成时 +1
generated_at TIMESTAMPTZ,
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
UNIQUE (session_id, day_key)
);
CREATE INDEX IF NOT EXISTS idx_digests_sid_day ON chat_daily_digests(session_id, day_key DESC);