- 更新数据库表结构,添加dm_policy字段(pairing/allowlist/open/disabled) - 添加allow_from字段用于白名单配置 - 添加openclaw_gateway_url和openclaw_gateway_token字段 - 更新Java实体类WeComBot,支持新的配对策略 - 更新测试数据,包含四种配对策略的示例 - 删除旧的pairing_mode字段,使用标准的OpenClaw dmPolicy
132 lines
7.0 KiB
SQL
132 lines
7.0 KiB
SQL
-- WeCom Middleware 数据库初始化脚本
|
||
-- 专注于核心需求:企业微信Bot配置和OpenClaw配对
|
||
|
||
-- 创建数据库
|
||
CREATE DATABASE IF NOT EXISTS wecom_middleware CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||
USE wecom_middleware;
|
||
|
||
-- 企业微信Bot配置表
|
||
CREATE TABLE IF NOT EXISTS wecom_bots (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
name VARCHAR(100) NOT NULL COMMENT 'Bot名称',
|
||
bot_id VARCHAR(100) NOT NULL UNIQUE COMMENT '企业微信Bot ID',
|
||
secret VARCHAR(255) NOT NULL COMMENT '企业微信Bot Secret',
|
||
dm_policy VARCHAR(50) NOT NULL DEFAULT 'pairing' COMMENT '配对策略: pairing/allowlist/open/disabled',
|
||
allow_from TEXT COMMENT '允许列表(JSON数组),dm_policy=allowlist时使用',
|
||
status VARCHAR(20) NOT NULL DEFAULT 'inactive' COMMENT '状态: active/inactive/error',
|
||
webhook_url VARCHAR(500) COMMENT 'Webhook地址',
|
||
openclaw_gateway_url VARCHAR(500) DEFAULT 'ws://localhost:18789' COMMENT 'OpenClaw网关地址',
|
||
openclaw_gateway_token VARCHAR(500) COMMENT 'OpenClaw网关令牌',
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
INDEX idx_status (status),
|
||
INDEX idx_dm_policy (dm_policy)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='企业微信Bot配置';
|
||
|
||
-- OpenClaw配对请求表
|
||
CREATE TABLE IF NOT EXISTS openclaw_pairing_requests (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
request_id VARCHAR(100) NOT NULL UNIQUE COMMENT '请求ID',
|
||
node_id VARCHAR(100) NOT NULL COMMENT '节点ID',
|
||
node_name VARCHAR(100) COMMENT '节点名称',
|
||
node_type VARCHAR(50) COMMENT '节点类型',
|
||
node_ip VARCHAR(50) COMMENT '节点IP',
|
||
node_version VARCHAR(50) COMMENT '节点版本',
|
||
bot_id VARCHAR(100) COMMENT '关联的Bot ID',
|
||
status VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '状态: pending/approved/rejected',
|
||
pairing_mode VARCHAR(50) COMMENT '使用的配对方式',
|
||
request_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '请求时间',
|
||
resolve_time TIMESTAMP NULL COMMENT '处理时间',
|
||
resolver VARCHAR(100) COMMENT '处理人',
|
||
remark TEXT COMMENT '备注',
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
INDEX idx_status (status),
|
||
INDEX idx_node_id (node_id),
|
||
INDEX idx_bot_id (bot_id),
|
||
INDEX idx_request_time (request_time),
|
||
FOREIGN KEY (bot_id) REFERENCES wecom_bots(bot_id) ON DELETE SET NULL
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='OpenClaw配对请求';
|
||
|
||
-- 消息记录表
|
||
CREATE TABLE IF NOT EXISTS message_records (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
message_id VARCHAR(100) NOT NULL UNIQUE COMMENT '消息ID',
|
||
bot_id VARCHAR(100) NOT NULL COMMENT 'Bot ID',
|
||
direction VARCHAR(20) NOT NULL COMMENT '方向: inbound/outbound',
|
||
message_type VARCHAR(50) NOT NULL COMMENT '消息类型: text/image/file/voice',
|
||
content TEXT COMMENT '消息内容',
|
||
sender VARCHAR(200) COMMENT '发送方',
|
||
receiver VARCHAR(200) COMMENT '接收方',
|
||
status VARCHAR(20) NOT NULL DEFAULT 'sent' COMMENT '状态: sent/delivered/read/failed',
|
||
error_message TEXT COMMENT '错误信息',
|
||
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
INDEX idx_bot_id (bot_id),
|
||
INDEX idx_direction (direction),
|
||
INDEX idx_timestamp (timestamp),
|
||
INDEX idx_status (status),
|
||
FOREIGN KEY (bot_id) REFERENCES wecom_bots(bot_id) ON DELETE CASCADE
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='消息记录';
|
||
|
||
-- 系统配置表
|
||
CREATE TABLE IF NOT EXISTS system_config (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
config_key VARCHAR(100) NOT NULL UNIQUE COMMENT '配置键',
|
||
config_value TEXT COMMENT '配置值',
|
||
config_type VARCHAR(50) DEFAULT 'string' COMMENT '配置类型: string/number/boolean/json',
|
||
description VARCHAR(200) COMMENT '描述',
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
INDEX idx_config_key (config_key)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置';
|
||
|
||
-- 操作日志表
|
||
CREATE TABLE IF NOT EXISTS operation_logs (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
operator VARCHAR(100) COMMENT '操作人',
|
||
module VARCHAR(50) NOT NULL COMMENT '模块: wecom/openclaw/system',
|
||
action VARCHAR(100) NOT NULL COMMENT '操作',
|
||
description TEXT COMMENT '描述',
|
||
ip_address VARCHAR(50) COMMENT 'IP地址',
|
||
user_agent TEXT COMMENT '用户代理',
|
||
request_params TEXT COMMENT '请求参数',
|
||
response_result TEXT COMMENT '响应结果',
|
||
error_message TEXT COMMENT '错误信息',
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
INDEX idx_operator (operator),
|
||
INDEX idx_module (module),
|
||
INDEX idx_created_at (created_at)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作日志';
|
||
|
||
-- 插入默认配置
|
||
INSERT INTO system_config (config_key, config_value, config_type, description) VALUES
|
||
('system.name', 'WeCom Middleware', 'string', '系统名称'),
|
||
('system.version', '1.0.0', 'string', '系统版本'),
|
||
('log.level', 'info', 'string', '日志级别'),
|
||
('openclaw.gateway.url', 'ws://localhost:18789', 'string', 'OpenClaw网关地址'),
|
||
('openclaw.pairing.timeout', '300', 'number', '配对请求超时时间(秒)'),
|
||
('wecom.message.retry.count', '3', 'number', '消息重试次数'),
|
||
('wecom.message.timeout', '30', 'number', '消息发送超时时间(秒)');
|
||
|
||
-- 插入测试Bot数据
|
||
INSERT INTO wecom_bots (name, bot_id, secret, dm_policy, allow_from, status) VALUES
|
||
('默认配对Bot', 'default_bot_001', 'secret_001', 'pairing', NULL, 'inactive'),
|
||
('白名单Bot', 'allowlist_bot_002', 'secret_002', 'allowlist', '["user1", "user2", "admin"]', 'inactive'),
|
||
('开放Bot', 'open_bot_003', 'secret_003', 'open', NULL, 'inactive'),
|
||
('禁用Bot', 'disabled_bot_004', 'secret_004', 'disabled', NULL, 'inactive');
|
||
|
||
-- 插入测试配对请求
|
||
INSERT INTO openclaw_pairing_requests (request_id, node_id, node_name, node_type, node_ip, node_version, bot_id, status) VALUES
|
||
('req_001', 'node_001', '开发节点', 'development', '192.168.1.100', 'v1.0.0', 'test_bot_001', 'pending'),
|
||
('req_002', 'node_002', '测试节点', 'testing', '192.168.1.101', 'v1.0.0', 'auto_bot_002', 'approved');
|
||
|
||
-- 插入测试消息记录
|
||
INSERT INTO message_records (message_id, bot_id, direction, message_type, content, sender, receiver, status) VALUES
|
||
('msg_001', 'test_bot_001', 'inbound', 'text', '你好,测试消息', 'user_001', 'test_bot_001', 'delivered'),
|
||
('msg_002', 'test_bot_001', 'outbound', 'text', '收到,这是回复', 'test_bot_001', 'user_001', 'sent');
|
||
|
||
-- 插入测试操作日志
|
||
INSERT INTO operation_logs (operator, module, action, description, ip_address) VALUES
|
||
('admin', 'system', '系统启动', 'WeCom Middleware系统启动完成', '127.0.0.1'),
|
||
('admin', 'wecom', '添加Bot', '添加测试Bot: test_bot_001', '127.0.0.1'); |