| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- -- =============================================
- -- 龙虾引擎 - 消息触达抽象层 & 闭环学习系统
- -- =============================================
- -- 1. 进化交互日志表
- CREATE TABLE IF NOT EXISTS `lobster_evolution_log` (
- `id` bigint NOT NULL AUTO_INCREMENT,
- `company_id` bigint NOT NULL COMMENT '公司ID',
- `workflow_id` bigint NOT NULL COMMENT '工作流ID',
- `instance_id` bigint DEFAULT NULL COMMENT '实例ID',
- `contact_id` bigint DEFAULT NULL COMMENT '联系人ID',
- `channel_type` varchar(20) DEFAULT 'QW' COMMENT '通道类型: QW/WX/IM',
- `node_code` varchar(100) DEFAULT NULL COMMENT '节点编码',
- `sent_message` text COMMENT '发送的消息',
- `customer_reply` text COMMENT '客户回复',
- `outcome` varchar(50) DEFAULT NULL COMMENT '交互结果: purchase/inquiry/complaint/positive/negative/schedule/other',
- `variables` json DEFAULT NULL COMMENT '变量快照',
- `duration_ms` bigint DEFAULT NULL COMMENT '响应时长(毫秒)',
- `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
- PRIMARY KEY (`id`),
- KEY `idx_company_workflow` (`company_id`, `workflow_id`),
- KEY `idx_instance` (`instance_id`),
- KEY `idx_node_code` (`node_code`),
- KEY `idx_outcome` (`outcome`),
- KEY `idx_create_time` (`create_time`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='龙虾引擎-进化交互日志';
- -- 2. 进化优化建议表
- CREATE TABLE IF NOT EXISTS `lobster_evolution_suggestion` (
- `id` bigint NOT NULL AUTO_INCREMENT,
- `company_id` bigint NOT NULL COMMENT '公司ID',
- `workflow_id` bigint NOT NULL COMMENT '工作流ID',
- `node_code` varchar(100) DEFAULT NULL COMMENT '节点编码',
- `suggestion_type` varchar(50) DEFAULT 'message_optimize' COMMENT '建议类型: message_optimize/timing_adjust/channel_switch',
- `current_content` text COMMENT '当前内容',
- `suggested_content` text COMMENT '建议内容',
- `confidence` double DEFAULT NULL COMMENT '置信度',
- `reason` text COMMENT '优化原因',
- `metrics` json DEFAULT NULL COMMENT '相关指标',
- `status` tinyint DEFAULT 0 COMMENT '0待处理 1已应用 2已忽略',
- `apply_time` datetime DEFAULT NULL COMMENT '应用时间',
- `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
- PRIMARY KEY (`id`),
- KEY `idx_company_workflow` (`company_id`, `workflow_id`),
- KEY `idx_status` (`status`),
- KEY `idx_node_code` (`node_code`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='龙虾引擎-进化优化建议';
- -- 3. 心跳注册表
- CREATE TABLE IF NOT EXISTS `lobster_heartbeat_registry` (
- `id` bigint NOT NULL AUTO_INCREMENT,
- `instance_id` bigint NOT NULL COMMENT '工作流实例ID',
- `company_id` bigint NOT NULL COMMENT '公司ID',
- `workflow_id` bigint NOT NULL COMMENT '工作流ID',
- `contact_id` bigint DEFAULT NULL COMMENT '联系人ID',
- `channel_type` varchar(20) DEFAULT 'QW' COMMENT '通道类型',
- `interval_ms` bigint DEFAULT 300000 COMMENT '心跳间隔(毫秒)',
- `timeout_ms` bigint DEFAULT 86400000 COMMENT '超时时间(毫秒)',
- `max_retries` int DEFAULT 3 COMMENT '最大重试次数',
- `auto_execute` tinyint DEFAULT 1 COMMENT '是否自动执行',
- `status` varchar(20) DEFAULT 'ACTIVE' COMMENT 'ACTIVE/INACTIVE',
- `last_heartbeat` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '最后心跳时间',
- `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
- `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_instance_id` (`instance_id`),
- KEY `idx_company` (`company_id`),
- KEY `idx_status` (`status`),
- KEY `idx_last_heartbeat` (`last_heartbeat`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='龙虾引擎-心跳注册表';
- -- 4. 消息触达日志表
- CREATE TABLE IF NOT EXISTS `lobster_message_delivery_log` (
- `id` bigint NOT NULL AUTO_INCREMENT,
- `company_id` bigint NOT NULL COMMENT '公司ID',
- `instance_id` bigint DEFAULT NULL COMMENT '工作流实例ID',
- `workflow_id` bigint DEFAULT NULL COMMENT '工作流ID',
- `contact_id` bigint DEFAULT NULL COMMENT '联系人ID',
- `channel_type` varchar(20) NOT NULL COMMENT '通道类型: QW/WX/IM',
- `channel_user_id` varchar(200) DEFAULT NULL COMMENT '通道用户ID',
- `content` text COMMENT '消息内容',
- `msg_type` int DEFAULT 1 COMMENT '消息类型: 1文本 2图片 3语音',
- `channel_msg_id` varchar(200) DEFAULT NULL COMMENT '通道消息ID',
- `success` tinyint DEFAULT 0 COMMENT '是否成功: 0否 1是',
- `error_msg` varchar(500) DEFAULT NULL COMMENT '错误信息',
- `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
- PRIMARY KEY (`id`),
- KEY `idx_company` (`company_id`),
- KEY `idx_instance` (`instance_id`),
- KEY `idx_channel_type` (`channel_type`),
- KEY `idx_create_time` (`create_time`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='龙虾引擎-消息触达日志';
- -- 5. 联系人统一视图(便于跨通道查询)
- CREATE TABLE IF NOT EXISTS `lobster_unified_contact` (
- `id` bigint NOT NULL AUTO_INCREMENT,
- `company_id` bigint NOT NULL COMMENT '公司ID',
- `contact_id` bigint NOT NULL COMMENT '原始联系人ID',
- `contact_name` varchar(200) DEFAULT NULL COMMENT '联系人名称',
- `contact_phone` varchar(50) DEFAULT NULL COMMENT '联系人电话',
- `channel_type` varchar(20) NOT NULL COMMENT '通道类型: QW/WX/IM',
- `channel_user_id` varchar(200) DEFAULT NULL COMMENT '通道用户ID',
- `extra` json DEFAULT NULL COMMENT '扩展信息',
- `del_flag` tinyint DEFAULT 0,
- `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
- `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_contact_channel` (`company_id`, `contact_id`, `channel_type`),
- KEY `idx_company` (`company_id`),
- KEY `idx_channel_type` (`channel_type`),
- KEY `idx_channel_user` (`channel_user_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='龙虾引擎-统一联系人';
- -- 6. 工作流实例表增加通道类型字段
- ALTER TABLE `lobster_workflow_instance` ADD COLUMN `channel_type` varchar(20) DEFAULT 'QW' COMMENT '消息通道类型: QW/WX/IM' AFTER `contact_name`;
- -- 7. 工作流节点表增加通道配置
- ALTER TABLE `company_workflow_lobster_node` ADD COLUMN `channel_config` json DEFAULT NULL COMMENT '通道配置(可覆盖工作流默认通道)' AFTER `node_config`;
- -- 8. 为已有表添加索引
- CREATE INDEX IF NOT EXISTS `idx_evolution_company_node` ON `lobster_evolution_log` (`company_id`, `node_code`);
- CREATE INDEX IF NOT EXISTS `idx_heartbeat_active` ON `lobster_heartbeat_registry` (`status`, `last_heartbeat`);
|