lobster_engine_evolution.sql 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. -- =============================================
  2. -- 龙虾引擎 - 消息触达抽象层 & 闭环学习系统
  3. -- =============================================
  4. -- 1. 进化交互日志表
  5. CREATE TABLE IF NOT EXISTS `lobster_evolution_log` (
  6. `id` bigint NOT NULL AUTO_INCREMENT,
  7. `company_id` bigint NOT NULL COMMENT '公司ID',
  8. `workflow_id` bigint NOT NULL COMMENT '工作流ID',
  9. `instance_id` bigint DEFAULT NULL COMMENT '实例ID',
  10. `contact_id` bigint DEFAULT NULL COMMENT '联系人ID',
  11. `channel_type` varchar(20) DEFAULT 'QW' COMMENT '通道类型: QW/WX/IM',
  12. `node_code` varchar(100) DEFAULT NULL COMMENT '节点编码',
  13. `sent_message` text COMMENT '发送的消息',
  14. `customer_reply` text COMMENT '客户回复',
  15. `outcome` varchar(50) DEFAULT NULL COMMENT '交互结果: purchase/inquiry/complaint/positive/negative/schedule/other',
  16. `variables` json DEFAULT NULL COMMENT '变量快照',
  17. `duration_ms` bigint DEFAULT NULL COMMENT '响应时长(毫秒)',
  18. `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
  19. PRIMARY KEY (`id`),
  20. KEY `idx_company_workflow` (`company_id`, `workflow_id`),
  21. KEY `idx_instance` (`instance_id`),
  22. KEY `idx_node_code` (`node_code`),
  23. KEY `idx_outcome` (`outcome`),
  24. KEY `idx_create_time` (`create_time`)
  25. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='龙虾引擎-进化交互日志';
  26. -- 2. 进化优化建议表
  27. CREATE TABLE IF NOT EXISTS `lobster_evolution_suggestion` (
  28. `id` bigint NOT NULL AUTO_INCREMENT,
  29. `company_id` bigint NOT NULL COMMENT '公司ID',
  30. `workflow_id` bigint NOT NULL COMMENT '工作流ID',
  31. `node_code` varchar(100) DEFAULT NULL COMMENT '节点编码',
  32. `suggestion_type` varchar(50) DEFAULT 'message_optimize' COMMENT '建议类型: message_optimize/timing_adjust/channel_switch',
  33. `current_content` text COMMENT '当前内容',
  34. `suggested_content` text COMMENT '建议内容',
  35. `confidence` double DEFAULT NULL COMMENT '置信度',
  36. `reason` text COMMENT '优化原因',
  37. `metrics` json DEFAULT NULL COMMENT '相关指标',
  38. `status` tinyint DEFAULT 0 COMMENT '0待处理 1已应用 2已忽略',
  39. `apply_time` datetime DEFAULT NULL COMMENT '应用时间',
  40. `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
  41. PRIMARY KEY (`id`),
  42. KEY `idx_company_workflow` (`company_id`, `workflow_id`),
  43. KEY `idx_status` (`status`),
  44. KEY `idx_node_code` (`node_code`)
  45. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='龙虾引擎-进化优化建议';
  46. -- 3. 心跳注册表
  47. CREATE TABLE IF NOT EXISTS `lobster_heartbeat_registry` (
  48. `id` bigint NOT NULL AUTO_INCREMENT,
  49. `instance_id` bigint NOT NULL COMMENT '工作流实例ID',
  50. `company_id` bigint NOT NULL COMMENT '公司ID',
  51. `workflow_id` bigint NOT NULL COMMENT '工作流ID',
  52. `contact_id` bigint DEFAULT NULL COMMENT '联系人ID',
  53. `channel_type` varchar(20) DEFAULT 'QW' COMMENT '通道类型',
  54. `interval_ms` bigint DEFAULT 300000 COMMENT '心跳间隔(毫秒)',
  55. `timeout_ms` bigint DEFAULT 86400000 COMMENT '超时时间(毫秒)',
  56. `max_retries` int DEFAULT 3 COMMENT '最大重试次数',
  57. `auto_execute` tinyint DEFAULT 1 COMMENT '是否自动执行',
  58. `status` varchar(20) DEFAULT 'ACTIVE' COMMENT 'ACTIVE/INACTIVE',
  59. `last_heartbeat` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '最后心跳时间',
  60. `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
  61. `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  62. PRIMARY KEY (`id`),
  63. UNIQUE KEY `uk_instance_id` (`instance_id`),
  64. KEY `idx_company` (`company_id`),
  65. KEY `idx_status` (`status`),
  66. KEY `idx_last_heartbeat` (`last_heartbeat`)
  67. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='龙虾引擎-心跳注册表';
  68. -- 4. 消息触达日志表
  69. CREATE TABLE IF NOT EXISTS `lobster_message_delivery_log` (
  70. `id` bigint NOT NULL AUTO_INCREMENT,
  71. `company_id` bigint NOT NULL COMMENT '公司ID',
  72. `instance_id` bigint DEFAULT NULL COMMENT '工作流实例ID',
  73. `workflow_id` bigint DEFAULT NULL COMMENT '工作流ID',
  74. `contact_id` bigint DEFAULT NULL COMMENT '联系人ID',
  75. `channel_type` varchar(20) NOT NULL COMMENT '通道类型: QW/WX/IM',
  76. `channel_user_id` varchar(200) DEFAULT NULL COMMENT '通道用户ID',
  77. `content` text COMMENT '消息内容',
  78. `msg_type` int DEFAULT 1 COMMENT '消息类型: 1文本 2图片 3语音',
  79. `channel_msg_id` varchar(200) DEFAULT NULL COMMENT '通道消息ID',
  80. `success` tinyint DEFAULT 0 COMMENT '是否成功: 0否 1是',
  81. `error_msg` varchar(500) DEFAULT NULL COMMENT '错误信息',
  82. `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
  83. PRIMARY KEY (`id`),
  84. KEY `idx_company` (`company_id`),
  85. KEY `idx_instance` (`instance_id`),
  86. KEY `idx_channel_type` (`channel_type`),
  87. KEY `idx_create_time` (`create_time`)
  88. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='龙虾引擎-消息触达日志';
  89. -- 5. 联系人统一视图(便于跨通道查询)
  90. CREATE TABLE IF NOT EXISTS `lobster_unified_contact` (
  91. `id` bigint NOT NULL AUTO_INCREMENT,
  92. `company_id` bigint NOT NULL COMMENT '公司ID',
  93. `contact_id` bigint NOT NULL COMMENT '原始联系人ID',
  94. `contact_name` varchar(200) DEFAULT NULL COMMENT '联系人名称',
  95. `contact_phone` varchar(50) DEFAULT NULL COMMENT '联系人电话',
  96. `channel_type` varchar(20) NOT NULL COMMENT '通道类型: QW/WX/IM',
  97. `channel_user_id` varchar(200) DEFAULT NULL COMMENT '通道用户ID',
  98. `extra` json DEFAULT NULL COMMENT '扩展信息',
  99. `del_flag` tinyint DEFAULT 0,
  100. `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
  101. `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  102. PRIMARY KEY (`id`),
  103. UNIQUE KEY `uk_contact_channel` (`company_id`, `contact_id`, `channel_type`),
  104. KEY `idx_company` (`company_id`),
  105. KEY `idx_channel_type` (`channel_type`),
  106. KEY `idx_channel_user` (`channel_user_id`)
  107. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='龙虾引擎-统一联系人';
  108. -- 6. 工作流实例表增加通道类型字段
  109. ALTER TABLE `lobster_workflow_instance` ADD COLUMN `channel_type` varchar(20) DEFAULT 'QW' COMMENT '消息通道类型: QW/WX/IM' AFTER `contact_name`;
  110. -- 7. 工作流节点表增加通道配置
  111. ALTER TABLE `company_workflow_lobster_node` ADD COLUMN `channel_config` json DEFAULT NULL COMMENT '通道配置(可覆盖工作流默认通道)' AFTER `node_config`;
  112. -- 8. 为已有表添加索引
  113. CREATE INDEX IF NOT EXISTS `idx_evolution_company_node` ON `lobster_evolution_log` (`company_id`, `node_code`);
  114. CREATE INDEX IF NOT EXISTS `idx_heartbeat_active` ON `lobster_heartbeat_registry` (`status`, `last_heartbeat`);