Files
qihuaiflow/migrations/mig_p4_imbot.sql
T

67 lines
3.3 KiB
SQL

-- Phase 4: IM Bot Integration - Migration SQL
-- Creates: im_bot_routes, im_bot_langbot_config, im_bot_daily_stats
-- Alters: channels.platform ENUM to add personal_wechat, wecom
-- 1. Extend channels platform ENUM to include personal_wechat and wecom
ALTER TABLE channels
MODIFY COLUMN platform ENUM(
'feishu', 'wechat', 'dingtalk', 'whatsapp', 'telegram', 'slack',
'personal_wechat', 'wecom'
) NOT NULL;
-- 2. IM Bot Routing Rules - map channels to agents with filters
CREATE TABLE IF NOT EXISTS im_bot_routes (
id VARCHAR(36) NOT NULL PRIMARY KEY,
channel_id VARCHAR(36) NOT NULL COMMENT 'FK to channels.id',
agent_id VARCHAR(64) DEFAULT NULL COMMENT 'FK to market_apps.id (VARCHAR(36))',
route_name VARCHAR(100) NOT NULL DEFAULT 'default',
match_type ENUM('all', 'keyword', 'regex', 'sender') NOT NULL DEFAULT 'all',
match_pattern TEXT DEFAULT NULL COMMENT 'Keyword list or regex pattern',
priority INT NOT NULL DEFAULT 0 COMMENT 'Higher = matched first',
fallback_agent_id VARCHAR(64) DEFAULT NULL,
is_active TINYINT(1) NOT NULL DEFAULT 1,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_route_channel (channel_id),
INDEX idx_route_agent (agent_id),
INDEX idx_route_active (is_active, priority)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 3. LangBot Gateway Configuration
CREATE TABLE IF NOT EXISTS im_bot_langbot_config (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL DEFAULT 'default',
gateway_url VARCHAR(500) NOT NULL COMMENT 'LangBot API base URL',
api_key VARCHAR(255) DEFAULT NULL COMMENT 'LangBot REST API key',
webhook_secret VARCHAR(255) DEFAULT NULL COMMENT 'HMAC-SHA256 signing secret',
bot_uuid VARCHAR(100) DEFAULT NULL COMMENT 'LangBot HTTP Bot UUID',
callback_url VARCHAR(500) DEFAULT NULL COMMENT 'Our callback URL for LangBot responses',
sync_channels TINYINT(1) NOT NULL DEFAULT 0 COMMENT 'Auto-sync channels to LangBot',
status ENUM('active', 'inactive', 'error') NOT NULL DEFAULT 'inactive',
last_sync_at DATETIME DEFAULT NULL,
last_error TEXT DEFAULT NULL,
config_json JSON DEFAULT NULL COMMENT 'Additional LangBot configuration',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 4. Daily Statistics per Channel
CREATE TABLE IF NOT EXISTS im_bot_daily_stats (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
channel_id VARCHAR(36) NOT NULL,
stat_date DATE NOT NULL,
messages_in INT NOT NULL DEFAULT 0,
messages_out INT NOT NULL DEFAULT 0,
unique_users INT NOT NULL DEFAULT 0,
avg_response_time_ms INT NOT NULL DEFAULT 0,
error_count INT NOT NULL DEFAULT 0,
tokens_used INT NOT NULL DEFAULT 0,
UNIQUE KEY uk_channel_date (channel_id, stat_date),
INDEX idx_stat_date (stat_date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 5. Insert default LangBot config
INSERT INTO im_bot_langbot_config (name, gateway_url, status)
VALUES ('default', 'http://localhost:5300', 'inactive')
ON DUPLICATE KEY UPDATE name = name;