73 lines
2.6 KiB
SQL
73 lines
2.6 KiB
SQL
-- 各环境专属系统数据库 (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);
|