107 lines
4.3 KiB
PL/PgSQL
107 lines
4.3 KiB
PL/PgSQL
-- AgentCoord 数据库表结构
|
|
-- 基于 DATABASE_DESIGN.md 设计
|
|
-- 执行方式: psql -U postgres -d agentcoord -f schema.sql
|
|
|
|
-- =============================================================================
|
|
-- 表1: multi_agent_tasks (多智能体任务记录)
|
|
-- 状态枚举: pending/planning/generating/executing/completed/failed
|
|
-- =============================================================================
|
|
CREATE TABLE IF NOT EXISTS multi_agent_tasks (
|
|
task_id VARCHAR(64) PRIMARY KEY,
|
|
user_id VARCHAR(64) NOT NULL,
|
|
query TEXT NOT NULL,
|
|
agents_info JSONB NOT NULL,
|
|
task_outline JSONB,
|
|
assigned_agents JSONB,
|
|
agent_scores JSONB,
|
|
result JSONB,
|
|
status VARCHAR(20) DEFAULT 'pending',
|
|
execution_count INTEGER DEFAULT 0,
|
|
generation_id VARCHAR(64),
|
|
execution_id VARCHAR(64),
|
|
rehearsal_log JSONB,
|
|
branches JSONB, -- 任务大纲探索分支数据
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- 索引
|
|
CREATE INDEX IF NOT EXISTS idx_multi_agent_tasks_user_id ON multi_agent_tasks(user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_multi_agent_tasks_created_at ON multi_agent_tasks(created_at DESC);
|
|
CREATE INDEX IF NOT EXISTS idx_multi_agent_tasks_status ON multi_agent_tasks(status);
|
|
CREATE INDEX IF NOT EXISTS idx_multi_agent_tasks_generation_id ON multi_agent_tasks(generation_id);
|
|
CREATE INDEX IF NOT EXISTS idx_multi_agent_tasks_execution_id ON multi_agent_tasks(execution_id);
|
|
|
|
-- =============================================================================
|
|
-- 表2: user_agents (用户保存的智能体配置) - 可选表
|
|
-- =============================================================================
|
|
CREATE TABLE IF NOT EXISTS user_agents (
|
|
id VARCHAR(64) PRIMARY KEY,
|
|
user_id VARCHAR(64) NOT NULL,
|
|
agent_name VARCHAR(100) NOT NULL,
|
|
agent_config JSONB NOT NULL,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_user_agents_user_id ON user_agents(user_id);
|
|
|
|
-- =============================================================================
|
|
-- 更新时间触发器函数
|
|
-- =============================================================================
|
|
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
NEW.updated_at = CURRENT_TIMESTAMP;
|
|
RETURN NEW;
|
|
END;
|
|
$$ language 'plpgsql';
|
|
|
|
-- 为 multi_agent_tasks 表创建触发器
|
|
CREATE TRIGGER update_multi_agent_tasks_updated_at
|
|
BEFORE UPDATE ON multi_agent_tasks
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION update_updated_at_column();
|
|
|
|
-- =============================================================================
|
|
-- 表3: export_records (导出记录)
|
|
-- =============================================================================
|
|
CREATE TABLE IF NOT EXISTS export_records (
|
|
id SERIAL PRIMARY KEY,
|
|
task_id VARCHAR(64) NOT NULL,
|
|
user_id VARCHAR(64) NOT NULL,
|
|
export_type VARCHAR(32) NOT NULL,
|
|
file_name VARCHAR(256) NOT NULL,
|
|
file_path VARCHAR(512) NOT NULL,
|
|
file_url VARCHAR(512),
|
|
file_size INTEGER DEFAULT 0,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_export_records_task_user ON export_records(task_id, user_id);
|
|
|
|
-- =============================================================================
|
|
-- 表4: plan_shares (任务分享记录)
|
|
-- =============================================================================
|
|
CREATE TABLE IF NOT EXISTS plan_shares (
|
|
id SERIAL PRIMARY KEY,
|
|
share_token VARCHAR(64) NOT NULL UNIQUE,
|
|
extraction_code VARCHAR(8),
|
|
task_id VARCHAR(64) NOT NULL,
|
|
task_data JSONB NOT NULL,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
|
expires_at TIMESTAMP WITH TIME ZONE,
|
|
view_count INTEGER DEFAULT 0
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_plan_shares_token ON plan_shares(share_token);
|
|
CREATE INDEX IF NOT EXISTS idx_plan_shares_task_id ON plan_shares(task_id);
|
|
|
|
DO $$
|
|
BEGIN
|
|
RAISE NOTICE '✅ PostgreSQL 数据库表结构创建完成!';
|
|
RAISE NOTICE '表: multi_agent_tasks (多智能体任务记录)';
|
|
RAISE NOTICE '表: user_agents (用户智能体配置)';
|
|
RAISE NOTICE '表: export_records (导出记录)';
|
|
RAISE NOTICE '表: plan_shares (任务分享记录)';
|
|
END $$;
|