This commit is contained in:
2025-12-02 13:21:18 +08:00
parent fab8c13cb3
commit ee6dd64f98
192 changed files with 25783 additions and 0 deletions

View File

@@ -0,0 +1,308 @@
-- =============================
-- 智能体管理和平台基础设施模块
-- 支持智能体广场、API集成管理、智能体运维监控
-- =============================
CREATE SCHEMA IF NOT EXISTS agent;
-- 智能体定义表
DROP TABLE IF EXISTS agent.tb_agent CASCADE;
CREATE TABLE agent.tb_agent (
optsn VARCHAR(50) NOT NULL, -- 流水号
agent_id VARCHAR(50) NOT NULL, -- 智能体ID
agent_code VARCHAR(100) NOT NULL, -- 智能体编码(唯一标识)
agent_name VARCHAR(255) NOT NULL, -- 智能体名称
agent_type VARCHAR(50) NOT NULL, -- 智能体类型bidding-招投标/customer_service-客服/knowledge_assistant-知识助手/custom-自定义
display_name VARCHAR(255) NOT NULL, -- 展示名称
description TEXT, -- 智能体描述
icon VARCHAR(500), -- 图标URL
banner VARCHAR(500), -- Banner图URL
version VARCHAR(20) DEFAULT '1.0.0', -- 版本号
model_provider VARCHAR(50), -- 模型提供商openai/anthropic/baidu/aliyun/custom
model_name VARCHAR(100), -- 模型名称
model_config JSONB, -- 模型配置温度、最大tokens等
prompt_template TEXT, -- 提示词模板
system_prompt TEXT, -- 系统提示词
kb_ids VARCHAR(50)[], -- 关联知识库ID数组
tool_ids VARCHAR(50)[], -- 关联工具ID数组
capabilities TEXT[], -- 能力列表
access_level VARCHAR(20) DEFAULT 'private', -- 访问级别public-公开/private-私有/internal-内部
is_published BOOLEAN DEFAULT false, -- 是否发布到智能体广场
usage_count INTEGER DEFAULT 0, -- 使用次数
rating DECIMAL(3,2) DEFAULT 0, -- 评分0-5
rating_count INTEGER DEFAULT 0, -- 评分人数
tags TEXT[], -- 标签数组
category VARCHAR(100), -- 分类
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
owner_user_id VARCHAR(50), -- 所有者用户ID
status VARCHAR(20) DEFAULT 'active', -- 状态active-激活/inactive-停用/under_maintenance-维护中
creator VARCHAR(50) DEFAULT NULL, -- 创建者
updater VARCHAR(50) DEFAULT NULL, -- 更新者
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
update_time timestamptz DEFAULT NULL, -- 更新时间
delete_time timestamptz DEFAULT NULL, -- 删除时间
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
PRIMARY KEY (agent_id),
UNIQUE (optsn),
UNIQUE (agent_code)
);
CREATE INDEX idx_agent_type ON agent.tb_agent(agent_type) WHERE deleted = false;
CREATE INDEX idx_agent_published ON agent.tb_agent(is_published) WHERE deleted = false AND is_published = true;
CREATE INDEX idx_agent_category ON agent.tb_agent(category) WHERE deleted = false;
COMMENT ON TABLE agent.tb_agent IS '智能体定义表';
COMMENT ON COLUMN agent.tb_agent.agent_type IS '智能体类型bidding/customer_service/knowledge_assistant/custom';
-- 智能体会话表
DROP TABLE IF EXISTS agent.tb_agent_session CASCADE;
CREATE TABLE agent.tb_agent_session (
optsn VARCHAR(50) NOT NULL, -- 流水号
session_id VARCHAR(50) NOT NULL, -- 会话ID
agent_id VARCHAR(50) NOT NULL, -- 智能体ID
user_id VARCHAR(50) NOT NULL, -- 用户ID
session_type VARCHAR(30) DEFAULT 'chat', -- 会话类型chat-对话/task-任务/workflow-工作流
session_name VARCHAR(255), -- 会话名称
context JSONB, -- 会话上下文
session_status VARCHAR(20) DEFAULT 'active', -- 会话状态active-活跃/paused-暂停/ended-结束
start_time timestamptz DEFAULT now(), -- 开始时间
end_time timestamptz, -- 结束时间
message_count INTEGER DEFAULT 0, -- 消息数量
token_usage INTEGER DEFAULT 0, -- Token使用量
cost DECIMAL(10,4) DEFAULT 0, -- 成本
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
creator VARCHAR(50) DEFAULT NULL, -- 创建者
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
update_time timestamptz DEFAULT NULL, -- 更新时间
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
PRIMARY KEY (session_id),
UNIQUE (optsn),
FOREIGN KEY (agent_id) REFERENCES agent.tb_agent(agent_id)
);
CREATE INDEX idx_session_agent ON agent.tb_agent_session(agent_id) WHERE deleted = false;
CREATE INDEX idx_session_user ON agent.tb_agent_session(user_id) WHERE deleted = false;
COMMENT ON TABLE agent.tb_agent_session IS '智能体会话表';
-- 智能体消息表
DROP TABLE IF EXISTS agent.tb_agent_message CASCADE;
CREATE TABLE agent.tb_agent_message (
optsn VARCHAR(50) NOT NULL, -- 流水号
message_id VARCHAR(50) NOT NULL, -- 消息ID
session_id VARCHAR(50) NOT NULL, -- 会话ID
agent_id VARCHAR(50) NOT NULL, -- 智能体ID
role VARCHAR(20) NOT NULL, -- 角色user-用户/assistant-助手/system-系统/function-函数
content TEXT, -- 消息内容
content_type VARCHAR(30) DEFAULT 'text', -- 内容类型text-文本/image-图片/file-文件/structured-结构化数据
function_call JSONB, -- 函数调用JSON格式
function_response JSONB, -- 函数响应
token_count INTEGER, -- Token数量
model_name VARCHAR(100), -- 使用的模型
kb_references JSONB, -- 知识库引用JSON数组
metadata JSONB, -- 消息元数据
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
PRIMARY KEY (message_id),
UNIQUE (optsn),
FOREIGN KEY (session_id) REFERENCES agent.tb_agent_session(session_id),
FOREIGN KEY (agent_id) REFERENCES agent.tb_agent(agent_id)
);
CREATE INDEX idx_msg_session ON agent.tb_agent_message(session_id, create_time) WHERE deleted = false;
CREATE INDEX idx_msg_agent ON agent.tb_agent_message(agent_id) WHERE deleted = false;
COMMENT ON TABLE agent.tb_agent_message IS '智能体消息表';
-- 智能体工具表
DROP TABLE IF EXISTS agent.tb_agent_tool CASCADE;
CREATE TABLE agent.tb_agent_tool (
optsn VARCHAR(50) NOT NULL, -- 流水号
tool_id VARCHAR(50) NOT NULL, -- 工具ID
tool_code VARCHAR(100) NOT NULL, -- 工具编码
tool_name VARCHAR(255) NOT NULL, -- 工具名称
tool_type VARCHAR(50) NOT NULL, -- 工具类型api-API调用/function-函数/plugin-插件/integration-集成
description TEXT, -- 工具描述
function_schema JSONB, -- 函数SchemaOpenAI function calling格式
api_endpoint VARCHAR(500), -- API端点
api_method VARCHAR(10), -- API方法GET/POST/PUT/DELETE
api_headers JSONB, -- API请求头
auth_type VARCHAR(30), -- 认证类型none/api_key/oauth2/bearer
auth_config JSONB, -- 认证配置(加密存储)
request_template TEXT, -- 请求模板
response_template TEXT, -- 响应模板
timeout_seconds INTEGER DEFAULT 30, -- 超时时间(秒)
retry_count INTEGER DEFAULT 3, -- 重试次数
is_enabled BOOLEAN DEFAULT true, -- 是否启用
usage_count INTEGER DEFAULT 0, -- 使用次数
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
creator VARCHAR(50) DEFAULT NULL, -- 创建者
updater VARCHAR(50) DEFAULT NULL, -- 更新者
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
update_time timestamptz DEFAULT NULL, -- 更新时间
delete_time timestamptz DEFAULT NULL, -- 删除时间
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
PRIMARY KEY (tool_id),
UNIQUE (optsn),
UNIQUE (tool_code)
);
CREATE INDEX idx_tool_type ON agent.tb_agent_tool(tool_type) WHERE deleted = false;
COMMENT ON TABLE agent.tb_agent_tool IS '智能体工具表';
-- API集成注册表
DROP TABLE IF EXISTS agent.tb_api_integration CASCADE;
CREATE TABLE agent.tb_api_integration (
optsn VARCHAR(50) NOT NULL, -- 流水号
integration_id VARCHAR(50) NOT NULL, -- 集成ID
integration_name VARCHAR(255) NOT NULL, -- 集成名称
integration_type VARCHAR(50) NOT NULL, -- 集成类型rest_api/soap/graphql/webhook/mq
provider VARCHAR(100), -- 提供商
base_url VARCHAR(500), -- 基础URL
version VARCHAR(20), -- API版本
auth_type VARCHAR(30) DEFAULT 'none', -- 认证类型
auth_config JSONB, -- 认证配置(加密存储)
endpoints JSONB, -- 端点列表JSON数组
rate_limit INTEGER, -- 速率限制(请求/秒)
timeout_seconds INTEGER DEFAULT 30, -- 超时时间
retry_config JSONB, -- 重试配置
health_check_url VARCHAR(500), -- 健康检查URL
health_status VARCHAR(20) DEFAULT 'unknown', -- 健康状态healthy-健康/unhealthy-不健康/unknown-未知
last_health_check timestamptz, -- 最后健康检查时间
documentation_url VARCHAR(500), -- 文档URL
is_enabled BOOLEAN DEFAULT true, -- 是否启用
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
creator VARCHAR(50) DEFAULT NULL, -- 创建者
updater VARCHAR(50) DEFAULT NULL, -- 更新者
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
update_time timestamptz DEFAULT NULL, -- 更新时间
delete_time timestamptz DEFAULT NULL, -- 删除时间
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
PRIMARY KEY (integration_id),
UNIQUE (optsn)
);
CREATE INDEX idx_integration_type ON agent.tb_api_integration(integration_type) WHERE deleted = false;
CREATE INDEX idx_integration_health ON agent.tb_api_integration(health_status) WHERE deleted = false;
COMMENT ON TABLE agent.tb_api_integration IS 'API集成注册表';
-- API调用日志表
DROP TABLE IF EXISTS agent.tb_api_call_log CASCADE;
CREATE TABLE agent.tb_api_call_log (
optsn VARCHAR(50) NOT NULL, -- 流水号
log_id VARCHAR(50) NOT NULL, -- 日志ID
integration_id VARCHAR(50), -- 集成ID
tool_id VARCHAR(50), -- 工具ID
agent_id VARCHAR(50), -- 智能体ID
session_id VARCHAR(50), -- 会话ID
user_id VARCHAR(50), -- 用户ID
endpoint VARCHAR(500) NOT NULL, -- 请求端点
method VARCHAR(10) NOT NULL, -- 请求方法
request_headers JSONB, -- 请求头
request_body TEXT, -- 请求体
response_status INTEGER, -- 响应状态码
response_headers JSONB, -- 响应头
response_body TEXT, -- 响应体
duration_ms INTEGER, -- 请求耗时(毫秒)
is_success BOOLEAN, -- 是否成功
error_message TEXT, -- 错误信息
retry_count INTEGER DEFAULT 0, -- 重试次数
ip_address VARCHAR(45), -- IP地址
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
PRIMARY KEY (log_id),
UNIQUE (optsn)
);
CREATE INDEX idx_api_log_integration ON agent.tb_api_call_log(integration_id, create_time DESC);
CREATE INDEX idx_api_log_agent ON agent.tb_api_call_log(agent_id, create_time DESC);
CREATE INDEX idx_api_log_status ON agent.tb_api_call_log(is_success, create_time DESC);
COMMENT ON TABLE agent.tb_api_call_log IS 'API调用日志表';
-- 智能体监控指标表
DROP TABLE IF EXISTS agent.tb_agent_metrics CASCADE;
CREATE TABLE agent.tb_agent_metrics (
optsn VARCHAR(50) NOT NULL, -- 流水号
metric_id VARCHAR(50) NOT NULL, -- 指标ID
agent_id VARCHAR(50) NOT NULL, -- 智能体ID
metric_date DATE NOT NULL, -- 指标日期
metric_hour INTEGER, -- 指标小时0-23
total_sessions INTEGER DEFAULT 0, -- 总会话数
active_sessions INTEGER DEFAULT 0, -- 活跃会话数
total_messages INTEGER DEFAULT 0, -- 总消息数
total_tokens BIGINT DEFAULT 0, -- 总Token数
total_cost DECIMAL(10,4) DEFAULT 0, -- 总成本
avg_response_time INTEGER, -- 平均响应时间(毫秒)
success_rate DECIMAL(5,4), -- 成功率
error_count INTEGER DEFAULT 0, -- 错误次数
api_call_count INTEGER DEFAULT 0, -- API调用次数
avg_rating DECIMAL(3,2), -- 平均评分
rating_count INTEGER DEFAULT 0, -- 评分数量
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
update_time timestamptz DEFAULT NULL, -- 更新时间
PRIMARY KEY (metric_id),
UNIQUE (optsn),
UNIQUE (agent_id, metric_date, metric_hour),
FOREIGN KEY (agent_id) REFERENCES agent.tb_agent(agent_id)
);
CREATE INDEX idx_metrics_agent_date ON agent.tb_agent_metrics(agent_id, metric_date DESC);
COMMENT ON TABLE agent.tb_agent_metrics IS '智能体监控指标表';
-- 智能体异常日志表
DROP TABLE IF EXISTS agent.tb_agent_error_log CASCADE;
CREATE TABLE agent.tb_agent_error_log (
optsn VARCHAR(50) NOT NULL, -- 流水号
log_id VARCHAR(50) NOT NULL, -- 日志ID
agent_id VARCHAR(50) NOT NULL, -- 智能体ID
session_id VARCHAR(50), -- 会话ID
error_type VARCHAR(50) NOT NULL, -- 错误类型model_error-模型错误/api_error-API错误/timeout-超时/rate_limit-限流/other-其他
error_code VARCHAR(50), -- 错误代码
error_message TEXT NOT NULL, -- 错误信息
stack_trace TEXT, -- 堆栈跟踪
request_context JSONB, -- 请求上下文
severity VARCHAR(20) DEFAULT 'error', -- 严重级别critical-致命/error-错误/warning-警告
is_resolved BOOLEAN DEFAULT false, -- 是否已解决
resolution_notes TEXT, -- 解决方案备注
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
resolve_time timestamptz, -- 解决时间
PRIMARY KEY (log_id),
UNIQUE (optsn),
FOREIGN KEY (agent_id) REFERENCES agent.tb_agent(agent_id)
);
CREATE INDEX idx_error_agent ON agent.tb_agent_error_log(agent_id, create_time DESC);
CREATE INDEX idx_error_severity ON agent.tb_agent_error_log(severity) WHERE is_resolved = false;
COMMENT ON TABLE agent.tb_agent_error_log IS '智能体异常日志表';
-- 智能体评价表
DROP TABLE IF EXISTS agent.tb_agent_rating CASCADE;
CREATE TABLE agent.tb_agent_rating (
optsn VARCHAR(50) NOT NULL, -- 流水号
rating_id VARCHAR(50) NOT NULL, -- 评价ID
agent_id VARCHAR(50) NOT NULL, -- 智能体ID
session_id VARCHAR(50), -- 会话ID
user_id VARCHAR(50) NOT NULL, -- 用户ID
rating INTEGER NOT NULL, -- 评分1-5星
dimensions JSONB, -- 分维度评分(准确性、速度、友好度等)
feedback TEXT, -- 评价反馈
tags TEXT[], -- 标签
is_anonymous BOOLEAN DEFAULT false, -- 是否匿名
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
PRIMARY KEY (rating_id),
UNIQUE (optsn),
FOREIGN KEY (agent_id) REFERENCES agent.tb_agent(agent_id)
);
CREATE INDEX idx_rating_agent ON agent.tb_agent_rating(agent_id) WHERE deleted = false;
COMMENT ON TABLE agent.tb_agent_rating IS '智能体评价表';