137 lines
5.4 KiB
SQL
137 lines
5.4 KiB
SQL
-- 1. 创建 agent_user 表
|
|
CREATE TABLE IF NOT EXISTS agent_user (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
username VARCHAR(255) UNIQUE NOT NULL,
|
|
email VARCHAR(255) UNIQUE,
|
|
password_hash VARCHAR(255) NOT NULL,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
last_login TIMESTAMP WITH TIME ZONE,
|
|
is_active BOOLEAN DEFAULT TRUE,
|
|
is_admin BOOLEAN DEFAULT FALSE
|
|
);
|
|
|
|
-- agent_user 索引
|
|
CREATE INDEX IF NOT EXISTS idx_agent_user_username ON agent_user(username);
|
|
CREATE INDEX IF NOT EXISTS idx_agent_user_email ON agent_user(email);
|
|
CREATE INDEX IF NOT EXISTS idx_agent_user_is_active ON agent_user(is_active);
|
|
|
|
-- 2. 创建 agent_bots 表
|
|
CREATE TABLE IF NOT EXISTS agent_bots (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
name VARCHAR(255) NOT NULL,
|
|
bot_id VARCHAR(255) NOT NULL UNIQUE,
|
|
settings JSONB DEFAULT '{"language": "zh", "enable_memori": false, "enable_thinking": false, "tool_response": false}'::jsonb,
|
|
owner_id UUID NOT NULL REFERENCES agent_user(id) ON DELETE RESTRICT,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- agent_bots 索引
|
|
CREATE INDEX IF NOT EXISTS idx_agent_bots_bot_id ON agent_bots(bot_id);
|
|
CREATE INDEX IF NOT EXISTS idx_agent_bots_owner_id ON agent_bots(owner_id);
|
|
|
|
-- 3. 创建 agent_user_tokens 表
|
|
CREATE TABLE IF NOT EXISTS agent_user_tokens (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
user_id UUID NOT NULL REFERENCES agent_user(id) ON DELETE CASCADE,
|
|
token VARCHAR(255) NOT NULL UNIQUE,
|
|
expires_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- agent_user_tokens 索引
|
|
CREATE INDEX IF NOT EXISTS idx_agent_user_tokens_token ON agent_user_tokens(token);
|
|
CREATE INDEX IF NOT EXISTS idx_agent_user_tokens_user_id ON agent_user_tokens(user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_agent_user_tokens_expires ON agent_user_tokens(expires_at);
|
|
|
|
-- 4. 创建 agent_admin_tokens 表
|
|
CREATE TABLE IF NOT EXISTS agent_admin_tokens (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
username VARCHAR(255) NOT NULL,
|
|
token VARCHAR(255) NOT NULL UNIQUE,
|
|
expires_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- agent_admin_tokens 索引
|
|
CREATE INDEX IF NOT EXISTS idx_agent_admin_tokens_token ON agent_admin_tokens(token);
|
|
CREATE INDEX IF NOT EXISTS idx_agent_admin_tokens_expires ON agent_admin_tokens(expires_at);
|
|
|
|
-- 5. 创建 agent_models 表
|
|
CREATE TABLE IF NOT EXISTS agent_models (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
name VARCHAR(255) NOT NULL,
|
|
provider VARCHAR(100) NOT NULL,
|
|
model VARCHAR(255) NOT NULL,
|
|
server VARCHAR(500),
|
|
api_key VARCHAR(500),
|
|
is_default BOOLEAN DEFAULT FALSE,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- agent_models 索引
|
|
CREATE INDEX IF NOT EXISTS idx_agent_models_is_default ON agent_models(is_default);
|
|
|
|
-- 6. 创建 agent_mcp_servers 表
|
|
CREATE TABLE IF NOT EXISTS agent_mcp_servers (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
bot_id UUID REFERENCES agent_bots(id) ON DELETE CASCADE,
|
|
name VARCHAR(255) NOT NULL,
|
|
type VARCHAR(50) NOT NULL,
|
|
config JSONB NOT NULL,
|
|
enabled BOOLEAN DEFAULT TRUE,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- agent_mcp_servers 索引
|
|
CREATE INDEX IF NOT EXISTS idx_agent_mcp_servers_bot_id ON agent_mcp_servers(bot_id);
|
|
CREATE INDEX IF NOT EXISTS idx_agent_mcp_servers_enabled ON agent_mcp_servers(enabled);
|
|
|
|
-- 7. 创建 agent_chat_sessions 表
|
|
CREATE TABLE IF NOT EXISTS agent_chat_sessions (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
bot_id UUID REFERENCES agent_bots(id) ON DELETE CASCADE,
|
|
title VARCHAR(500),
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- agent_chat_sessions 索引
|
|
CREATE INDEX IF NOT EXISTS idx_agent_chat_sessions_bot_id ON agent_chat_sessions(bot_id);
|
|
CREATE INDEX IF NOT EXISTS idx_agent_chat_sessions_created ON agent_chat_sessions(created_at DESC);
|
|
|
|
-- 8. 创建 bot_shares 表
|
|
CREATE TABLE IF NOT EXISTS bot_shares (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
bot_id UUID NOT NULL REFERENCES agent_bots(id) ON DELETE CASCADE,
|
|
user_id UUID NOT NULL REFERENCES agent_user(id) ON DELETE CASCADE,
|
|
shared_by UUID NOT NULL REFERENCES agent_user(id) ON DELETE SET NULL,
|
|
role VARCHAR(50) DEFAULT 'viewer' CHECK (role IN ('viewer', 'editor')),
|
|
shared_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
expires_at TIMESTAMP WITH TIME ZONE,
|
|
UNIQUE(bot_id, user_id)
|
|
);
|
|
|
|
-- bot_shares 索引
|
|
CREATE INDEX IF NOT EXISTS idx_bot_shares_bot_id ON bot_shares(bot_id);
|
|
CREATE INDEX IF NOT EXISTS idx_bot_shares_user_id ON bot_shares(user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_bot_shares_shared_by ON bot_shares(shared_by);
|
|
|
|
-- ===========================
|
|
-- 默认 Admin 账号
|
|
-- 用户名: admin
|
|
-- 密码: admin123
|
|
-- ===========================
|
|
INSERT INTO agent_user (id, username, email, password_hash, is_active, is_admin)
|
|
VALUES (
|
|
'00000000-0000-0000-0000-000000000001',
|
|
'admin',
|
|
'admin@local',
|
|
'240be518fabd2724ddb6f04eeb1da5967448d7e831c08c8fa822809f74c720a9',
|
|
TRUE,
|
|
TRUE
|
|
) ON CONFLICT (username) DO NOTHING;
|