feat(history): 实现三模历史搜索、每日智能协同摘要与时间轴侧栏 (Phase P2)
This commit is contained in:
@@ -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);
|
||||
Reference in New Issue
Block a user