Files
xiaoqu_mcp_service/xiaoqu-agent-service/sql/V1__init.sql
T

129 lines
7.6 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =============================================================
-- xiaoqu-agent-service 自有库初始化(dev 环境)
-- 设计文档:doc/agent-mcp-service-design.md §7
-- 执行:mysql -h192.168.1.181 -uroot -p < sql/V1__init.sql
-- =============================================================
CREATE DATABASE IF NOT EXISTS xiaoqu_agent_svc_d DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE xiaoqu_agent_svc_d;
-- token(ak):属于某个人(user_id 逻辑关联 m0.user),只存 SHA-256 哈希
CREATE TABLE IF NOT EXISTS agent_api_key (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
user_id BIGINT NOT NULL COMMENT '所属人(m0.user.id)',
key_prefix VARCHAR(16) NOT NULL COMMENT 'ak 前缀(展示用,如 xqak_abcd1234)',
key_hash CHAR(64) NOT NULL COMMENT 'ak 明文 SHA-256 hex',
memo VARCHAR(255) NULL COMMENT '用途备注(如 Kimi 用 / Claude 用)',
status TINYINT NOT NULL DEFAULT 1 COMMENT '1=正常 0=禁用',
expire_time DATETIME NULL COMMENT '过期时间,NULL=永久有效',
last_used_time DATETIME NULL COMMENT '最后使用时间',
create_id BIGINT NULL COMMENT '创建人',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
modify_id BIGINT NULL COMMENT '修改人',
modify_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
soft_delete TINYINT NOT NULL DEFAULT 0 COMMENT '0=正常 1=删除',
PRIMARY KEY (id),
UNIQUE KEY uk_key_hash (key_hash),
KEY idx_user_id (user_id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='API token(ak)';
-- 作用域(避免使用疑似关键字的 scope 作为表名,定名 agent_scope)
CREATE TABLE IF NOT EXISTS agent_scope (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
name VARCHAR(64) NOT NULL COMMENT '作用域名称(如 运营)',
code VARCHAR(64) NOT NULL COMMENT '作用域编码(如 operation)',
memo VARCHAR(255) NULL COMMENT '备注',
status TINYINT NOT NULL DEFAULT 1 COMMENT '1=启用 0=停用',
create_id BIGINT NULL COMMENT '创建人',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
modify_id BIGINT NULL COMMENT '修改人',
modify_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
soft_delete TINYINT NOT NULL DEFAULT 0 COMMENT '0=正常 1=删除',
PRIMARY KEY (id),
UNIQUE KEY uk_code (code)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='作用域(工具集合)';
-- 工具注册表:启动时由服务端注册自动同步(只插不删)
CREATE TABLE IF NOT EXISTS tool (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
name VARCHAR(128) NOT NULL COMMENT '工具名(如 agent.list.query)',
category VARCHAR(64) NOT NULL COMMENT '分类(代码注册时声明,如 customer/system)',
description VARCHAR(512) NULL COMMENT '工具描述',
kind VARCHAR(8) NOT NULL DEFAULT 'read' COMMENT 'read=读 write=写',
status TINYINT NOT NULL DEFAULT 1 COMMENT '1=启用 0=停用(全局紧急开关)',
create_id BIGINT NULL COMMENT '创建人',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
modify_id BIGINT NULL COMMENT '修改人',
modify_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
soft_delete TINYINT NOT NULL DEFAULT 0 COMMENT '0=正常 1=删除',
PRIMARY KEY (id),
UNIQUE KEY uk_name (name)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='工具注册表';
-- 作用域-工具
CREATE TABLE IF NOT EXISTS scope_tool (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
scope_id BIGINT NOT NULL COMMENT 'agent_scope.id',
tool_id BIGINT NOT NULL COMMENT 'tool.id',
create_id BIGINT NULL COMMENT '创建人',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
modify_id BIGINT NULL COMMENT '修改人',
modify_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
soft_delete TINYINT NOT NULL DEFAULT 0 COMMENT '0=正常 1=删除',
PRIMARY KEY (id),
UNIQUE KEY uk_scope_tool (scope_id, tool_id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='作用域-工具关系';
-- token-作用域
CREATE TABLE IF NOT EXISTS token_scope (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
token_id BIGINT NOT NULL COMMENT 'agent_api_key.id',
scope_id BIGINT NOT NULL COMMENT 'agent_scope.id',
create_id BIGINT NULL COMMENT '创建人',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
modify_id BIGINT NULL COMMENT '修改人',
modify_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
soft_delete TINYINT NOT NULL DEFAULT 0 COMMENT '0=正常 1=删除',
PRIMARY KEY (id),
UNIQUE KEY uk_token_scope (token_id, scope_id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='token-作用域关系';
-- 审计日志
CREATE TABLE IF NOT EXISTS audit_log (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
user_id BIGINT NULL COMMENT '调用人(m0.user.id)',
token_id BIGINT NULL COMMENT 'agent_api_key.id',
tool_name VARCHAR(128) NOT NULL COMMENT '工具名',
params_digest VARCHAR(500) NULL COMMENT '入参 JSON 摘要(截断 500 字,不含 ak)',
result_status VARCHAR(16) NOT NULL COMMENT 'success/denied/error',
result_message VARCHAR(500) NULL COMMENT '结果说明(拒绝原因/异常摘要)',
cost_ms BIGINT NULL COMMENT '耗时毫秒',
client_ip VARCHAR(64) NULL COMMENT '客户端 IP',
client_type VARCHAR(32) NULL COMMENT 'mcp-kimi/mcp-claude/cli/unknown',
create_id BIGINT NULL COMMENT '创建人',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
modify_id BIGINT NULL COMMENT '修改人',
modify_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
soft_delete TINYINT NOT NULL DEFAULT 0 COMMENT '0=正常 1=删除',
PRIMARY KEY (id),
KEY idx_user_tool (user_id, tool_name),
KEY idx_create_time (create_time)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='工具调用审计';
-- 后台管理员(P4 管理后台使用,与 ak 体系分离)
CREATE TABLE IF NOT EXISTS admin_user (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
account VARCHAR(64) NOT NULL COMMENT '登录账号',
password_hash CHAR(64) NOT NULL COMMENT '密码 SHA-256 hex',
name VARCHAR(64) NULL COMMENT '姓名',
status TINYINT NOT NULL DEFAULT 1 COMMENT '1=正常 0=禁用',
create_id BIGINT NULL COMMENT '创建人',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
modify_id BIGINT NULL COMMENT '修改人',
modify_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
soft_delete TINYINT NOT NULL DEFAULT 0 COMMENT '0=正常 1=删除',
PRIMARY KEY (id),
UNIQUE KEY uk_account (account)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='后台管理员';