feat(db): 增加共享知识库与隔离系统数据库初始化脚本
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
committed by
weichen
co-authored by
Cursor
parent
ee18e5436e
commit
203297056d
@@ -0,0 +1,72 @@
|
||||
-- 各环境专属系统数据库 (System App DB) 初始化脚本
|
||||
-- 注意:对话记录、系统用户、执行任务状态等在各环境之间严格物理/逻辑隔离
|
||||
|
||||
CREATE TABLE IF NOT EXISTS schema_migrations (
|
||||
version INTEGER PRIMARY KEY,
|
||||
applied_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- 系统租户/项目
|
||||
CREATE TABLE IF NOT EXISTS projects (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
code TEXT NOT NULL UNIQUE,
|
||||
environment TEXT NOT NULL DEFAULT 'dev',
|
||||
status TEXT NOT NULL DEFAULT 'active',
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- 用户表 (隔离)
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
account_id TEXT NOT NULL UNIQUE,
|
||||
name TEXT NOT NULL DEFAULT '',
|
||||
role TEXT NOT NULL DEFAULT 'user',
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- 对话会话表 (隔离:各环境不得共享)
|
||||
CREATE TABLE IF NOT EXISTS chat_sessions (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
session_id TEXT NOT NULL UNIQUE,
|
||||
project_id BIGINT REFERENCES projects(id) ON DELETE CASCADE,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
title TEXT NOT NULL DEFAULT '新对话',
|
||||
model TEXT NOT NULL DEFAULT '',
|
||||
status TEXT NOT NULL DEFAULT 'active',
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_chat_sessions_uid ON chat_sessions(user_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_chat_sessions_pid ON chat_sessions(project_id);
|
||||
|
||||
-- 对话消息与历史流 (隔离:各环境不得共享)
|
||||
CREATE TABLE IF NOT EXISTS chat_messages (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
session_id TEXT NOT NULL REFERENCES chat_sessions(session_id) ON DELETE CASCADE,
|
||||
role TEXT NOT NULL, -- user / assistant / system / tool
|
||||
content TEXT NOT NULL,
|
||||
tool_calls JSONB,
|
||||
tokens INT NOT NULL DEFAULT 0,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_chat_messages_sid ON chat_messages(session_id);
|
||||
|
||||
-- 智能体异步执行任务与审计日志 (隔离)
|
||||
CREATE TABLE IF NOT EXISTS agent_tasks (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
task_id TEXT NOT NULL UNIQUE,
|
||||
session_id TEXT REFERENCES chat_sessions(session_id),
|
||||
status TEXT NOT NULL DEFAULT 'pending', -- pending, running, completed, failed
|
||||
plan_steps JSONB NOT NULL DEFAULT '[]'::jsonb,
|
||||
result_summary TEXT NOT NULL DEFAULT '',
|
||||
error_message TEXT NOT NULL DEFAULT '',
|
||||
started_at TIMESTAMPTZ,
|
||||
finished_at TIMESTAMPTZ,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_agent_tasks_status ON agent_tasks(status);
|
||||
Reference in New Issue
Block a user