update snail-ai 0.0.6

This commit is contained in:
疯狂的狮子Li
2026-06-22 10:03:15 +08:00
parent 784468369a
commit 88a29c4117
6 changed files with 1060 additions and 197 deletions
+207 -194
View File
@@ -1,105 +1,53 @@
-- ============================================================
-- Snail AI MySQL 全量建表脚本(仅 CREATE,无 ALTER
-- 使用:mysql -u user -p database < snail_ai_schema.sql
-- 使用:mysql -u user -p database < ry_ai.sql
-- ============================================================
-- ============================================================
-- Enterprise RAG Schema for MySQL
-- 一、用户与权限
-- ============================================================
-- Knowledge Base
CREATE TABLE sai_rag
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
description TEXT,
icon VARCHAR(512),
embedding_model_id BIGINT(128) NOT NULL,
dimension_of_vector_model INT NOT NULL COMMENT '向量维度',
rerank_model_id BIGINT(128),
search_engine_instance_id BIGINT(128),
vector_store_instance_id BIGINT(128),
search_engine_enable TINYINT(1) DEFAULT 0,
delimiter VARCHAR(32) DEFAULT '\n\n',
rag_enhancement TEXT,
config TEXT DEFAULT NULL COMMENT 'RAG检索和问答的页面配置参数',
dedup_strategy TINYINT(1) NOT NULL DEFAULT 2 COMMENT '去重策略: 0=NONE 1=BY_NAME 2=BY_CONTENT 3=BY_NAME_OR_CONTENT',
dedup_action TINYINT(1) NOT NULL DEFAULT 0 COMMENT '冲突动作: 0=REJECT 1=SKIP 2=OVERWRITE',
upload_confirm TINYINT(1) NOT NULL DEFAULT 1 COMMENT '上传前二次确认: 0-关 1-开',
create_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
-- RAG Documents
CREATE TABLE sai_rag_document
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
rag_id BIGINT NOT NULL,
name VARCHAR(255),
file_type VARCHAR(32),
source_type VARCHAR(32),
source_path VARCHAR(1024),
storage_path VARCHAR(1024),
storage_type VARCHAR(32) DEFAULT 'LOCAL',
file_size BIGINT DEFAULT 0,
content TEXT,
status TINYINT(1) DEFAULT 0 COMMENT '状态: 0-待处理 1-解析中 2-处理中 3-处理完成 4-处理失败',
error_msg TEXT,
chunk_count INT DEFAULT 0,
content_hash VARCHAR(64) DEFAULT NULL COMMENT '文件内容SHA-256哈希,用于去重',
resource_id BIGINT DEFAULT NULL COMMENT '关联资源库 sai_resource.id',
create_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
CREATE INDEX idx_rag_doc_rag ON sai_rag_document (rag_id);
CREATE INDEX idx_rag_content_hash ON sai_rag_document (rag_id, content_hash);
CREATE INDEX idx_rag_name ON sai_rag_document (rag_id, name);
CREATE INDEX idx_rag_doc_resource ON sai_rag_document (resource_id);
-- RAG Chunks
CREATE TABLE sai_rag_chunk
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
rag_id BIGINT NOT NULL,
document_id BIGINT NOT NULL,
paragraph_index INT,
chunk_index INT,
content TEXT,
token_count INT,
vector_id VARCHAR(128),
content_hash VARCHAR(64) DEFAULT NULL COMMENT 'chunk内容SHA-256,用于向量去重',
create_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
CREATE INDEX idx_rag_chunk_rag ON sai_rag_chunk (rag_id);
CREATE INDEX idx_rag_chunk_document ON sai_rag_chunk (document_id);
CREATE INDEX idx_chunk_rag_hash ON sai_rag_chunk (rag_id, content_hash);
-- 1.1 用户表
CREATE TABLE sai_user
(
id BIGINT AUTO_INCREMENT PRIMARY KEY,
role INT,
totals INT,
username VARCHAR(255),
nickname VARCHAR(128) DEFAULT NULL COMMENT '用户昵称',
email VARCHAR(64),
password VARCHAR(255) NOT NULL,
resource_id BIGINT DEFAULT NULL COMMENT '头像资源ID,关联 sai_resource.id',
create_dt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_dt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_username (username)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4;
-- ============================================
-- 1. AI 模型提供商表
-- ============================================
-- 1.2 OpenAPI 外部用户映射表
CREATE TABLE sai_openapi_user
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
app_id VARCHAR(128) NOT NULL COMMENT '关联 sai_app.app_id',
open_id VARCHAR(64) NOT NULL COMMENT '平台分配的唯一标识(UUID',
platform_user_id BIGINT NOT NULL COMMENT '关联 sai_user.id,注册时自动创建',
external_id VARCHAR(256) DEFAULT NULL COMMENT '外部系统的用户标识(可选,幂等用)',
create_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_app_open (app_id, open_id),
UNIQUE KEY uk_app_external (app_id, external_id),
INDEX idx_open_id (open_id),
INDEX idx_platform_user (platform_user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='OpenAPI 外部用户映射表';
-- ============================================================
-- 二、AI 模型管理
-- ============================================================
-- 2.1 AI 模型提供商表
CREATE TABLE IF NOT EXISTS sai_model_provider
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
@@ -119,9 +67,7 @@ CREATE TABLE IF NOT EXISTS sai_model_provider
CREATE INDEX idx_provider_key ON sai_model_provider (provider_key);
CREATE INDEX idx_is_enabled ON sai_model_provider (is_enabled);
-- ============================================
-- 2. AI模型配置表
-- ============================================
-- 2.2 AI模型配置表
CREATE TABLE IF NOT EXISTS sai_model_config
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
@@ -152,9 +98,7 @@ CREATE INDEX idx_is_default ON sai_model_config (is_default);
CREATE INDEX idx_scope ON sai_model_config (scope);
CREATE INDEX idx_model_key ON sai_model_config (model_key);
-- ============================================
-- 3. 模型使用统计表
-- ============================================
-- 2.3 模型使用统计表
CREATE TABLE IF NOT EXISTS sai_model_usage_stat
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
@@ -179,11 +123,12 @@ CREATE INDEX idx_model_id ON sai_model_usage_stat (model_id);
CREATE INDEX idx_user_id ON sai_model_usage_stat (user_id);
CREATE INDEX idx_last_used_dt ON sai_model_usage_stat (last_used_dt);
-- ============================================
-- 智能体相关表
-- ============================================
-- 智能体主表
-- ============================================================
-- 三、智能体(Agent
-- ============================================================
-- 3.1 智能体主表
CREATE TABLE IF NOT EXISTS sai_agent
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
@@ -217,7 +162,7 @@ CREATE TABLE IF NOT EXISTS sai_agent
CREATE INDEX idx_agent_creator ON sai_agent (creator_id);
CREATE INDEX idx_agent_featured ON sai_agent (is_featured);
-- 智能体对话表
-- 3.2 智能体对话表
CREATE TABLE IF NOT EXISTS sai_agent_conversation
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
@@ -235,7 +180,7 @@ CREATE TABLE IF NOT EXISTS sai_agent_conversation
CREATE INDEX idx_agent_conv_agent ON sai_agent_conversation (agent_id);
CREATE INDEX idx_agent_conv_user ON sai_agent_conversation (user_id);
-- 智能体对话消息记录表
-- 3.3 智能体对话消息记录表
CREATE TABLE IF NOT EXISTS sai_agent_conversation_record
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
@@ -246,7 +191,9 @@ CREATE TABLE IF NOT EXISTS sai_agent_conversation_record
content TEXT COMMENT '消息内容',
thinking TEXT COMMENT '思考过程(仅assistant',
status INT DEFAULT 1 COMMENT '1=成功,2=失败,3=进行中',
token_count INT DEFAULT 0 COMMENT 'Token数',
input_tokens INT DEFAULT 0 COMMENT '输入Token数prompt',
output_tokens INT DEFAULT 0 COMMENT '输出Token数(completion',
cache_tokens INT DEFAULT 0 COMMENT '缓存命中Token数',
create_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
@@ -254,14 +201,12 @@ CREATE TABLE IF NOT EXISTS sai_agent_conversation_record
CREATE INDEX idx_agent_rec_conv ON sai_agent_conversation_record (conversation_id);
-- 智能体使用统计表
-- 3.4 智能体使用统计表
CREATE TABLE IF NOT EXISTS sai_agent_usage_stat
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
agent_id BIGINT NOT NULL COMMENT '智能体ID',
user_id BIGINT NOT NULL COMMENT '用户ID',
user_name VARCHAR(255) COMMENT '用户名',
department VARCHAR(255) DEFAULT '' COMMENT '部门',
message_count INT DEFAULT 0 COMMENT '消息条数',
conversation_count INT DEFAULT 0 COMMENT '对话轮次',
stat_date DATE NOT NULL COMMENT '统计日期',
@@ -275,11 +220,107 @@ CREATE TABLE IF NOT EXISTS sai_agent_usage_stat
CREATE INDEX idx_usage_agent ON sai_agent_usage_stat (agent_id);
CREATE INDEX idx_usage_date ON sai_agent_usage_stat (stat_date);
-- ============================================
-- MCP 服务管理
-- ============================================
-- 3.5 用户订阅的智能体(多对多)
CREATE TABLE IF NOT EXISTS sai_user_agent
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
user_id BIGINT NOT NULL COMMENT '用户ID',
agent_id BIGINT NOT NULL COMMENT '智能体ID',
create_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uk_user_agent (user_id, agent_id)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT = '用户订阅的智能体';
-- MCP 服务配置表
CREATE INDEX idx_user_agent_user ON sai_user_agent (user_id);
-- ============================================================
-- 四、RAG 知识库
-- ============================================================
-- 4.1 知识库主表
CREATE TABLE sai_rag
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
description TEXT,
icon VARCHAR(512),
embedding_model_id BIGINT(128) NOT NULL,
dimension_of_vector_model INT NOT NULL COMMENT '向量维度',
rerank_model_id BIGINT(128),
search_engine_instance_id BIGINT(128),
vector_store_instance_id BIGINT(128),
search_engine_enable TINYINT(1) DEFAULT 0,
delimiter VARCHAR(32) DEFAULT '\n\n',
rag_enhancement TEXT,
config TEXT DEFAULT NULL COMMENT 'RAG检索和问答的页面配置参数',
dedup_strategy TINYINT(1) NOT NULL DEFAULT 2 COMMENT '去重策略: 0=NONE 1=BY_NAME 2=BY_CONTENT 3=BY_NAME_OR_CONTENT',
dedup_action TINYINT(1) NOT NULL DEFAULT 0 COMMENT '冲突动作: 0=REJECT 1=SKIP 2=OVERWRITE',
upload_confirm TINYINT(1) NOT NULL DEFAULT 1 COMMENT '上传前二次确认: 0-关 1-开',
create_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
-- 4.2 RAG 文档表
CREATE TABLE sai_rag_document
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
rag_id BIGINT NOT NULL,
name VARCHAR(255),
file_type VARCHAR(32),
source_type VARCHAR(32),
source_path VARCHAR(1024),
storage_path VARCHAR(1024),
storage_type VARCHAR(32) DEFAULT 'LOCAL',
file_size BIGINT DEFAULT 0,
content TEXT,
status TINYINT(1) DEFAULT 0 COMMENT '状态: 0-待处理 1-解析中 2-处理中 3-处理完成 4-处理失败',
error_msg TEXT,
chunk_count INT DEFAULT 0,
content_hash VARCHAR(64) DEFAULT NULL COMMENT '文件内容SHA-256哈希,用于去重',
resource_id BIGINT DEFAULT NULL COMMENT '关联资源库 sai_resource.id',
create_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
CREATE INDEX idx_rag_doc_rag ON sai_rag_document (rag_id);
CREATE INDEX idx_rag_content_hash ON sai_rag_document (rag_id, content_hash);
CREATE INDEX idx_rag_name ON sai_rag_document (rag_id, name);
CREATE INDEX idx_rag_doc_resource ON sai_rag_document (resource_id);
-- 4.3 RAG 分块表
CREATE TABLE sai_rag_chunk
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
rag_id BIGINT NOT NULL,
document_id BIGINT NOT NULL,
paragraph_index INT,
chunk_index INT,
content TEXT,
token_count INT,
vector_id VARCHAR(128),
content_hash VARCHAR(64) DEFAULT NULL COMMENT 'chunk内容SHA-256,用于向量去重',
create_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
CREATE INDEX idx_rag_chunk_rag ON sai_rag_chunk (rag_id);
CREATE INDEX idx_rag_chunk_document ON sai_rag_chunk (document_id);
CREATE INDEX idx_chunk_rag_hash ON sai_rag_chunk (rag_id, content_hash);
-- ============================================================
-- 五、MCP 服务管理
-- ============================================================
-- 5.1 MCP 服务配置表
CREATE TABLE IF NOT EXISTS sai_mcp_server
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
@@ -307,7 +348,7 @@ CREATE TABLE IF NOT EXISTS sai_mcp_server
CREATE INDEX idx_mcp_server_creator ON sai_mcp_server (creator_id);
CREATE INDEX idx_mcp_server_status ON sai_mcp_server (status);
-- 智能体与MCP服务关联表(多对多)
-- 5.2 智能体与MCP服务关联表多对多
CREATE TABLE IF NOT EXISTS sai_agent_mcp_server
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
@@ -322,25 +363,12 @@ CREATE TABLE IF NOT EXISTS sai_agent_mcp_server
CREATE INDEX idx_agent_mcp_agent ON sai_agent_mcp_server (agent_id);
CREATE INDEX idx_agent_mcp_server ON sai_agent_mcp_server (mcp_server_id);
-- 用户订阅的智能体(多对多)
CREATE TABLE IF NOT EXISTS sai_user_agent
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
user_id BIGINT NOT NULL COMMENT '用户ID',
agent_id BIGINT NOT NULL COMMENT '智能体ID',
create_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uk_user_agent (user_id, agent_id)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT = '用户订阅的智能体';
CREATE INDEX idx_user_agent_user ON sai_user_agent (user_id);
-- ============================================================
-- 六、Skill 技能包管理
-- ============================================================
-- ============================================
-- Skill 技能包管理
-- ============================================
-- Skill 技能包表
-- 6.1 Skill 技能包表
CREATE TABLE IF NOT EXISTS sai_skill
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
@@ -362,7 +390,7 @@ CREATE TABLE IF NOT EXISTS sai_skill
CREATE INDEX idx_skill_creator ON sai_skill (creator_id);
-- Skill 支撑文件内容表
-- 6.2 Skill 支撑文件内容表
CREATE TABLE IF NOT EXISTS sai_skill_file
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
@@ -379,7 +407,7 @@ CREATE TABLE IF NOT EXISTS sai_skill_file
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT = 'Skill支撑文件内容表';
-- 智能体与Skill关联表(多对多)
-- 6.3 智能体与Skill关联表多对多
CREATE TABLE IF NOT EXISTS sai_agent_skill
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
@@ -394,7 +422,55 @@ CREATE TABLE IF NOT EXISTS sai_agent_skill
CREATE INDEX idx_agent_skill_agent ON sai_agent_skill (agent_id);
CREATE INDEX idx_agent_skill_skill ON sai_agent_skill (skill_id);
-- ============================================================
-- 七、客户端应用与节点
-- ============================================================
-- 7.1 客户端应用
CREATE TABLE IF NOT EXISTS sai_app
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
app_id VARCHAR(128) NOT NULL COMMENT '应用唯一标识',
app_name VARCHAR(255) NOT NULL COMMENT '应用名称',
description VARCHAR(512) COMMENT '应用描述',
token VARCHAR(128) NOT NULL COMMENT '通信认证令牌',
route_strategy VARCHAR(32) DEFAULT 'LEAST_LOAD' COMMENT '路由策略',
status TINYINT(1) DEFAULT 1 COMMENT '1=启用, 0=停用',
create_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_app_id (app_id)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT = '客户端应用';
-- 7.2 AI客户端实例节点
CREATE TABLE IF NOT EXISTS sai_client_node
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
app_id VARCHAR(128) NOT NULL COMMENT '所属应用ID',
host_id VARCHAR(128) NOT NULL COMMENT '客户端实例唯一标识',
host_ip VARCHAR(64) NOT NULL COMMENT '客户端IP',
grpc_port INT NOT NULL COMMENT '客户端gRPC端口',
max_concurrent INT DEFAULT 10 COMMENT '最大并发对话数',
active_chats INT DEFAULT 0 COMMENT '当前活跃对话数',
supported_providers TEXT COMMENT '支持的模型提供商(JSON数组)',
labels TEXT COMMENT '路由标签',
expire_dt DATETIME NOT NULL COMMENT '过期时间(心跳更新)',
create_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_client_node (app_id, host_id),
INDEX idx_app_expire (app_id, expire_dt)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT = 'AI客户端实例节点';
-- ============================================================
-- 八、存储与资源
-- ============================================================
-- 8.1 存储实例
CREATE TABLE IF NOT EXISTS sai_store_instance
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
@@ -413,69 +489,7 @@ CREATE TABLE IF NOT EXISTS sai_store_instance
CREATE INDEX idx_store_instance_category ON sai_store_instance (category);
CREATE INDEX idx_store_instance_type ON sai_store_instance (type);
-- 客户端应用
-- ----------------------------
CREATE TABLE IF NOT EXISTS sai_app
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
app_id VARCHAR(128) NOT NULL COMMENT '应用唯一标识',
app_name VARCHAR(255) NOT NULL COMMENT '应用名称',
description VARCHAR(512) COMMENT '应用描述',
token VARCHAR(128) NOT NULL COMMENT '通信认证令牌',
route_strategy VARCHAR(32) DEFAULT 'LEAST_LOAD' COMMENT '路由策略',
status TINYINT(1) DEFAULT 1 COMMENT '1=启用, 0=停用',
create_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_app_id (app_id)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT = '客户端应用';
-- ----------------------------
-- AI客户端实例节点
-- ----------------------------
CREATE TABLE IF NOT EXISTS sai_client_node
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
app_id VARCHAR(128) NOT NULL COMMENT '所属应用ID',
host_id VARCHAR(128) NOT NULL COMMENT '客户端实例唯一标识',
host_ip VARCHAR(64) NOT NULL COMMENT '客户端IP',
grpc_port INT NOT NULL COMMENT '客户端gRPC端口',
max_concurrent INT DEFAULT 10 COMMENT '最大并发对话数',
active_chats INT DEFAULT 0 COMMENT '当前活跃对话数',
supported_providers TEXT COMMENT '支持的模型提供商(JSON数组)',
labels TEXT COMMENT '路由标签',
expire_dt DATETIME NOT NULL COMMENT '过期时间(心跳更新)',
create_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_client_node (app_id, host_id),
INDEX idx_app_expire (app_id, expire_dt)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT = 'AI客户端实例节点';
-- OpenAPI 外部用户映射表
CREATE TABLE sai_openapi_user
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
app_id VARCHAR(128) NOT NULL COMMENT '关联 sai_app.app_id',
open_id VARCHAR(64) NOT NULL COMMENT '平台分配的唯一标识(UUID',
platform_user_id BIGINT NOT NULL COMMENT '关联 sai_user.id,注册时自动创建',
external_id VARCHAR(256) DEFAULT NULL COMMENT '外部系统的用户标识(可选,幂等用)',
nickname VARCHAR(128) DEFAULT NULL COMMENT '外部用户昵称',
create_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_app_open (app_id, open_id),
UNIQUE KEY uk_app_external (app_id, external_id),
INDEX idx_open_id (open_id),
INDEX idx_platform_user (platform_user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='OpenAPI 外部用户映射表';
-- ----------------------------
-- 通用资源存储
-- ----------------------------
-- 8.2 通用资源存储
CREATE TABLE IF NOT EXISTS sai_resource
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
@@ -497,14 +511,13 @@ CREATE TABLE IF NOT EXISTS sai_resource
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT = '通用资源存储';
-- ============================================
-- 初始化数据
-- ============================================
-- ============================================================
-- 九、初始化数据
-- ============================================================
-- 默认管理员:admin / admin123
INSERT INTO sai_user (id, role, username, email, password, create_dt, update_dt)
VALUES (1, 2, 'admin', '', 'pbkdf2$120000$c25haWwtYWktYWRtaW4tMQ==$kakglT/wYKOgv/77Ah1stie58d/JbY2nGgq5DwgUBw4=',
'2026-02-11 13:56:48.210429', '2026-02-11 13:56:48.210429');
INSERT INTO sai_user VALUES (1, 2, NULL, 'admin', 'admin', '', 'pbkdf2$120000$c25haWwtYWktYWRtaW4tMQ==$kakglT/wYKOgv/77Ah1stie58d/JbY2nGgq5DwgUBw4=', NULL, NOW(), NOW());
-- 插入常见的AI提供商
INSERT INTO sai_model_provider (provider_name, provider_key, description, is_enabled)
@@ -516,10 +529,10 @@ VALUES ('OpenAI', 'openai', 'OpenAI官方模型 (GPT-4, GPT-3.5等)', 1),
('DeepSeek', 'deepseek', 'DeepSeek OpenAI 兼容模型', 1),
('智谱AI', 'zhipu', '智谱AI OpenAI 兼容模型 (GLM等)', 1);
INSERT INTO sai_model_config VALUES (1, 5, 'glm-5.1', 'glm-5.1', 'CHAT', 'openai-compatible', '', 'xxx', 'https://dashscope.aliyuncs.com/compatible-mode/v1', '{\"frequencyPenalty\":0.0,\"maxTokens\":20000,\"presencePenalty\":0.0,\"stopSequences\":[],\"stream\":true,\"temperature\":0.7,\"timeoutMs\":300000,\"topK\":1,\"topP\":1.0}', NULL, 'GLOBAL', 1, 1, '2026-06-05 09:34:01', '2026-06-05 09:34:02');
INSERT INTO sai_model_config VALUES (1, 5, 'glm-5.1', 'glm-5.1', 'CHAT', 'openai-compatible', '', 'xxx', 'https://dashscope.aliyuncs.com/compatible-mode/v1', '{\"frequencyPenalty\":0.0,\"maxTokens\":20000,\"presencePenalty\":0.0,\"stopSequences\":[],\"stream\":true,\"temperature\":0.7,\"timeoutMs\":300000,\"topK\":1,\"topP\":1.0}', NULL, 'GLOBAL', 1, 1, NOW(), NOW());
INSERT INTO sai_agent VALUES (1, '智测先锋专家', '智测先锋专家是一款专注于软件测试与质量保障领域的智能助手。它能够高效生成覆盖全面的测试用例,深度分析Bug根因并提供修复建议,支持编写自动化测试脚本,以及解读复杂的测试报告。适用于软件开发周期的各个QA阶段,包括单元测试、接口测试、UI自动化及回归测试规划。其核心特点是逻辑严密、注重边界与异常场景,帮助团队大幅提升测试效率与软件质量。', NULL, '你是一位资深的软件测试与质量保障(QA)专家,名为“智测先锋专家”。\\n\\n【角色定位】你是开发团队的最后一道防线,致力于保障软件产品的卓越质量。\\n\\n【专业领域】精通黑盒与白盒测试、自动化测试框架(如Selenium、Pytest)、接口与性能测试、安全测试及CI/CD持续集成流程。\\n\\n【回答风格】逻辑严密、条理清晰、客观专业。善于使用结构化排版(如Markdown列表、代码块、表格)呈现测试用例和步骤,语言精炼,直击痛点。\\n\\n【行为指南】\\n1. 生成测试用例:必须覆盖正常流、异常流、边界值和兼容性等方面,确保测试的全面性与无遗漏。\\n2. 分析Bug根因:从代码逻辑、数据状态、环境配置等多维度推导,不仅给出修复建议,更要提供预防性的测试策略。\\n3. 编写自动化脚本:确保代码规范、包含必要注释与断言(Assert),并明确说明运行依赖与环境配置。\\n4. 需求澄清:若用户提问模糊,主动追问业务背景、技术栈等关键细节,拒绝给出宽泛且无实操价值的答案。\\n5. 风险预警:始终秉持质量第一理念,在解答中适时提示潜在的测试盲区与质量风险。', '你好!我是智测先锋专家,你的专属软件测试与质量保障顾问。无论是编写用例还是排查Bug,我都能为你提供专业支持!', '[\"如何为一个用户登录接口设计全面的测试用例?\",\"帮我分析这个空指针异常Bug的可能根因及修复建议。\",\"请提供一段Python的Pytest接口自动化测试脚本示例。\",\"怎样制定一个高效的回归测试策略?\"]', 2, 0, 0, 0, 0, 0, NULL, 1, 20, 1, 0, 1, 1, NULL, '1', '2026-06-05 09:34:50', '2026-06-05 09:34:51');
INSERT INTO sai_agent VALUES (1, '智测先锋专家', '智测先锋专家是一款专注于软件测试与质量保障领域的智能助手。它能够高效生成覆盖全面的测试用例,深度分析Bug根因并提供修复建议,支持编写自动化测试脚本,以及解读复杂的测试报告。适用于软件开发周期的各个QA阶段,包括单元测试、接口测试、UI自动化及回归测试规划。其核心特点是逻辑严密、注重边界与异常场景,帮助团队大幅提升测试效率与软件质量。', NULL, '你是一位资深的软件测试与质量保障(QA)专家,名为“智测先锋专家”。\\n\\n【角色定位】你是开发团队的最后一道防线,致力于保障软件产品的卓越质量。\\n\\n【专业领域】精通黑盒与白盒测试、自动化测试框架(如Selenium、Pytest)、接口与性能测试、安全测试及CI/CD持续集成流程。\\n\\n【回答风格】逻辑严密、条理清晰、客观专业。善于使用结构化排版(如Markdown列表、代码块、表格)呈现测试用例和步骤,语言精炼,直击痛点。\\n\\n【行为指南】\\n1. 生成测试用例:必须覆盖正常流、异常流、边界值和兼容性等方面,确保测试的全面性与无遗漏。\\n2. 分析Bug根因:从代码逻辑、数据状态、环境配置等多维度推导,不仅给出修复建议,更要提供预防性的测试策略。\\n3. 编写自动化脚本:确保代码规范、包含必要注释与断言(Assert),并明确说明运行依赖与环境配置。\\n4. 需求澄清:若用户提问模糊,主动追问业务背景、技术栈等关键细节,拒绝给出宽泛且无实操价值的答案。\\n5. 风险预警:始终秉持质量第一理念,在解答中适时提示潜在的测试盲区与质量风险。', '你好!我是智测先锋专家,你的专属软件测试与质量保障顾问。无论是编写用例还是排查Bug,我都能为你提供专业支持!', '[\"如何为一个用户登录接口设计全面的测试用例?\",\"帮我分析这个空指针异常Bug的可能根因及修复建议。\",\"请提供一段Python的Pytest接口自动化测试脚本示例。\",\"怎样制定一个高效的回归测试策略?\"]', 2, 0, 0, 0, 0, 0, NULL, 1, 20, 1, 0, 1, 1, NULL, '1', NOW(), NOW());
INSERT INTO sai_app VALUES (1, '1', '测试', '', 'SAI_566a6bfbc26e4998b4841cc927d50c5d', 'LEAST_LOAD', 1, '2026-06-05 09:32:50', '2026-06-05 09:32:50');
INSERT INTO sai_app VALUES (1, '1', '测试', '', 'SAI_566a6bfbc26e4998b4841cc927d50c5d', 'LEAST_LOAD', 1, NOW(), NOW());
INSERT INTO sai_openapi_user VALUES (1, '1', '46ed53c6a20044c7bbd870848e80f92f', 1, '1', 'test', NOW(), NOW());
INSERT INTO sai_openapi_user VALUES (1, '1', '46ed53c6a20044c7bbd870848e80f92f', 1, '1', NOW(), NOW());