309 lines
19 KiB
SQL
309 lines
19 KiB
SQL
-- =============================
|
||
-- 智能体管理和平台基础设施模块
|
||
-- 支持:智能体广场、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, -- 函数Schema(OpenAI 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 '智能体评价表';
|