-- ============================================================================
-- 流量池系统 V2 数据库迁移脚本
-- 版本: V2.0
-- 日期: 2026-01-30
-- 说明: 
--   1. 将旧流量池表重命名为 _v1 后缀（保留历史数据）
--   2. 创建全新的流量池表结构
--   3. 标签系统由独立系统维护，本脚本不包含标签相关表
-- ============================================================================

-- ============================================================================
-- 第一部分：旧表重命名（添加 _v1 后缀标识）
-- ============================================================================

-- 重命名前先检查表是否存在，避免报错
-- 旧流量池总表 → ck_traffic_pool_v1
RENAME TABLE `ck_traffic_pool` TO `ck_traffic_pool_v1`;

-- 旧流量来源表 → ck_traffic_source_v1
RENAME TABLE `ck_traffic_source` TO `ck_traffic_source_v1`;

-- 旧流量池包表 → ck_traffic_source_package_v1
RENAME TABLE `ck_traffic_source_package` TO `ck_traffic_source_package_v1`;

-- 旧流量池包成员表 → ck_traffic_source_package_item_v1
RENAME TABLE `ck_traffic_source_package_item` TO `ck_traffic_source_package_item_v1`;

-- 旧流量标签表 → ck_traffic_tag_v1
RENAME TABLE `ck_traffic_tag` TO `ck_traffic_tag_v1`;

-- 旧流量用户信息表 → ck_traffic_profile_v1
RENAME TABLE `ck_traffic_profile` TO `ck_traffic_profile_v1`;

-- 旧流量订单表 → ck_traffic_order_v1
RENAME TABLE `ck_traffic_order` TO `ck_traffic_order_v1`;


-- ============================================================================
-- 第二部分：创建新流量池表
-- ============================================================================

-- ----------------------------
-- 1. 流量池总表 ck_traffic_pool
-- 用途：存储全局唯一的流量标识，不区分公司
-- ----------------------------
DROP TABLE IF EXISTS `ck_traffic_pool`;
CREATE TABLE `ck_traffic_pool` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `identifier` varchar(64) NOT NULL COMMENT '流量唯一标识（微信ID优先）',
  `identifierType` tinyint(2) NOT NULL DEFAULT 1 COMMENT '标识类型：1=微信ID，2=微信号，3=手机号',
  `wechatId` varchar(64) DEFAULT NULL COMMENT '微信ID',
  `wechatAlias` varchar(64) DEFAULT NULL COMMENT '微信号',
  `mobile` varchar(20) DEFAULT NULL COMMENT '手机号',
  `nickname` varchar(100) DEFAULT NULL COMMENT '昵称',
  `avatar` varchar(500) DEFAULT NULL COMMENT '头像URL',
  `gender` tinyint(1) DEFAULT 0 COMMENT '性别：0=未知，1=男，2=女',
  `region` varchar(100) DEFAULT NULL COMMENT '地区',
  `country` varchar(50) DEFAULT NULL COMMENT '国家',
  `province` varchar(50) DEFAULT NULL COMMENT '省份',
  `city` varchar(50) DEFAULT NULL COMMENT '城市',
  `signature` varchar(500) DEFAULT NULL COMMENT '个性签名',
  `firstSeenTime` int(11) DEFAULT NULL COMMENT '首次出现时间',
  `lastSeenTime` int(11) DEFAULT NULL COMMENT '最后活跃时间',
  `createTime` int(11) NOT NULL COMMENT '创建时间',
  `updateTime` int(11) DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_identifier` (`identifier`),
  KEY `idx_wechatId` (`wechatId`),
  KEY `idx_wechatAlias` (`wechatAlias`),
  KEY `idx_mobile` (`mobile`),
  KEY `idx_createTime` (`createTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流量池总表（全局唯一）';


-- ----------------------------
-- 2. 公司流量详情表 ck_traffic_pool_company
-- 用途：存储流量在各公司的详细信息，支持多租户
-- ----------------------------
DROP TABLE IF EXISTS `ck_traffic_pool_company`;
CREATE TABLE `ck_traffic_pool_company` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `poolId` int(11) UNSIGNED NOT NULL COMMENT '流量池总表ID',
  `identifier` varchar(64) NOT NULL COMMENT '流量标识（冗余）',
  `companyId` int(11) UNSIGNED NOT NULL COMMENT '公司ID',
  
  -- 归属信息
  `ownerWechatId` varchar(64) DEFAULT NULL COMMENT '归属客服微信ID',
  `ownerAccountId` int(11) DEFAULT NULL COMMENT '归属客服账号ID（s2_wechat_account.id）',
  `ownerUserId` int(11) DEFAULT NULL COMMENT '归属操盘手ID',
  
  -- 好友关联
  `wechatFriendId` int(11) DEFAULT NULL COMMENT '微信好友ID（s2_wechat_friend.id）',
  `friendStatus` tinyint(2) DEFAULT 0 COMMENT '好友状态：0=未加，1=待通过，2=已通过，3=已删除，4=被删除',
  `friendPassTime` int(11) DEFAULT NULL COMMENT '好友通过时间',
  
  -- 客户属性
  `realName` varchar(50) DEFAULT NULL COMMENT '真实姓名',
  `idCard` varchar(18) DEFAULT NULL COMMENT '身份证号',
  `phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
  `email` varchar(100) DEFAULT NULL COMMENT '邮箱',
  `birthday` date DEFAULT NULL COMMENT '生日',
  `address` varchar(255) DEFAULT NULL COMMENT '地址',
  `company` varchar(100) DEFAULT NULL COMMENT '所在公司',
  `position` varchar(50) DEFAULT NULL COMMENT '职位',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `customFields` json DEFAULT NULL COMMENT '自定义字段',
  
  -- 客户等级
  `level` tinyint(2) DEFAULT 0 COMMENT '客户等级：0=普通，1=重要，2=VIP',
  `intentionLevel` tinyint(2) DEFAULT 0 COMMENT '意向度：0=未知，1=低，2=中，3=高',
  
  -- RFM模型
  `lastInteractTime` int(11) DEFAULT NULL COMMENT '最后互动时间戳（R值动态计算）',
  `rfmF` int(11) DEFAULT 0 COMMENT 'F值-互动频次',
  `rfmM` decimal(12,2) DEFAULT 0.00 COMMENT 'M值-消费金额',
  `rfmScore` int(11) DEFAULT 0 COMMENT 'RFM综合评分',
  `rfmType` varchar(20) DEFAULT NULL COMMENT 'RFM客户类型',
  
  -- 统计信息
  `totalOrderCount` int(11) DEFAULT 0 COMMENT '累计订单数',
  `totalOrderAmount` decimal(12,2) DEFAULT 0.00 COMMENT '累计订单金额',
  `lastOrderTime` int(11) DEFAULT NULL COMMENT '最后下单时间',
  `totalMsgCount` int(11) DEFAULT 0 COMMENT '累计消息数',
  `lastMsgTime` int(11) DEFAULT NULL COMMENT '最后消息时间',
  
  -- 来源追溯
  `firstSourceType` tinyint(2) DEFAULT NULL COMMENT '首次来源类型',
  `firstSourceTime` int(11) DEFAULT NULL COMMENT '首次来源时间',
  
  -- 生命周期
  `lifecycle` tinyint(2) DEFAULT 1 COMMENT '生命周期：1=新流量，2=跟进中，3=已成交，4=沉默，5=流失',
  
  -- 状态管理
  `status` tinyint(2) DEFAULT 1 COMMENT '状态：0=禁用，1=正常，2=黑名单',
  `allocateStatus` tinyint(2) DEFAULT 0 COMMENT '分配状态：0=未分配，1=已分配，2=已回收',
  `allocateTime` int(11) DEFAULT NULL COMMENT '分配时间',
  `expireTime` int(11) DEFAULT NULL COMMENT '到期时间',
  
  -- 时间戳
  `createTime` int(11) NOT NULL COMMENT '创建时间',
  `updateTime` int(11) DEFAULT NULL COMMENT '更新时间',
  `isDel` tinyint(1) DEFAULT 0 COMMENT '是否删除',
  `deleteTime` int(11) DEFAULT NULL COMMENT '删除时间',
  
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_identifier_company` (`identifier`, `companyId`),
  KEY `idx_poolId` (`poolId`),
  KEY `idx_companyId` (`companyId`),
  KEY `idx_ownerWechatId` (`ownerWechatId`),
  KEY `idx_wechatFriendId` (`wechatFriendId`),
  KEY `idx_friendStatus` (`friendStatus`),
  KEY `idx_status` (`status`),
  KEY `idx_level` (`level`),
  KEY `idx_allocateStatus` (`allocateStatus`),
  KEY `idx_lifecycle` (`lifecycle`),
  KEY `idx_lastInteractTime` (`lastInteractTime`),
  KEY `idx_createTime` (`createTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='公司流量详情表（多租户）';


-- ----------------------------
-- 3. 流量池分组表 ck_traffic_pool_group
-- 用途：管理流量池分组（如：高价值客户池、潜在客户池等）
-- ----------------------------
DROP TABLE IF EXISTS `ck_traffic_pool_group`;
CREATE TABLE `ck_traffic_pool_group` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `companyId` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '公司ID（0=系统默认）',
  `groupCode` varchar(50) NOT NULL COMMENT '分组编码（唯一标识）',
  `groupName` varchar(50) NOT NULL COMMENT '分组名称',
  `groupIcon` varchar(255) DEFAULT NULL COMMENT '分组图标',
  `groupColor` varchar(20) DEFAULT NULL COMMENT '分组颜色',
  `description` varchar(255) DEFAULT NULL COMMENT '分组描述',
  `isSystem` tinyint(1) DEFAULT 0 COMMENT '是否系统默认：0=否，1=是',
  `isDefault` tinyint(1) DEFAULT 0 COMMENT '是否默认展示：0=否，1=是',
  `ruleType` tinyint(2) DEFAULT 1 COMMENT '规则类型：1=动态规则，2=手动添加',
  `ruleConfig` json DEFAULT NULL COMMENT '规则配置（JSON）',
  `memberCount` int(11) DEFAULT 0 COMMENT '成员数量（缓存）',
  `sort` int(11) DEFAULT 0 COMMENT '排序（数值越小越靠前）',
  `status` tinyint(1) DEFAULT 1 COMMENT '状态：0=禁用，1=启用',
  `userId` int(11) DEFAULT NULL COMMENT '创建用户ID',
  `createTime` int(11) NOT NULL COMMENT '创建时间',
  `updateTime` int(11) DEFAULT NULL COMMENT '更新时间',
  `isDel` tinyint(1) DEFAULT 0 COMMENT '是否删除',
  `deleteTime` int(11) DEFAULT NULL COMMENT '删除时间',
  
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_company_code` (`companyId`, `groupCode`),
  KEY `idx_companyId` (`companyId`),
  KEY `idx_isSystem` (`isSystem`),
  KEY `idx_status` (`status`),
  KEY `idx_sort` (`sort`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流量池分组表';


-- ----------------------------
-- 4. 流量池分组成员表 ck_traffic_pool_group_member
-- 用途：手动添加到分组的成员（ruleType=2时使用）
-- ----------------------------
DROP TABLE IF EXISTS `ck_traffic_pool_group_member`;
CREATE TABLE `ck_traffic_pool_group_member` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `groupId` int(11) UNSIGNED NOT NULL COMMENT '分组ID',
  `poolCompanyId` int(11) UNSIGNED NOT NULL COMMENT '公司流量详情表ID',
  `identifier` varchar(64) NOT NULL COMMENT '流量标识（冗余）',
  `companyId` int(11) UNSIGNED NOT NULL COMMENT '公司ID',
  `addType` tinyint(2) DEFAULT 1 COMMENT '添加方式：1=手动，2=批量导入',
  `operatorId` int(11) DEFAULT NULL COMMENT '操作人ID',
  `createTime` int(11) NOT NULL COMMENT '创建时间',
  `isDel` tinyint(1) DEFAULT 0 COMMENT '是否删除',
  `deleteTime` int(11) DEFAULT NULL COMMENT '删除时间',
  
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_group_pool` (`groupId`, `poolCompanyId`),
  KEY `idx_companyId` (`companyId`),
  KEY `idx_identifier` (`identifier`),
  KEY `idx_groupId` (`groupId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流量池分组成员表（手动添加）';


-- ----------------------------
-- 5. 流量来源表 ck_traffic_pool_source
-- 用途：记录流量的获取渠道和来源路径
-- ----------------------------
DROP TABLE IF EXISTS `ck_traffic_pool_source`;
CREATE TABLE `ck_traffic_pool_source` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `poolCompanyId` int(11) UNSIGNED NOT NULL COMMENT '公司流量详情表ID',
  `identifier` varchar(64) NOT NULL COMMENT '流量标识（冗余）',
  `companyId` int(11) UNSIGNED NOT NULL COMMENT '公司ID',
  
  -- 来源类型
  `sourceType` tinyint(2) NOT NULL COMMENT '来源类型：1=好友添加，2=群成员，3=海报获客，4=电话获客，5=订单获客，6=API导入，7=手动导入，8=裂变活动',
  `sourceSubType` varchar(50) DEFAULT NULL COMMENT '来源子类型',
  
  -- 来源详情
  `sourceId` varchar(100) DEFAULT NULL COMMENT '来源ID',
  `sourceName` varchar(255) DEFAULT NULL COMMENT '来源名称',
  `sourceWechatId` varchar(64) DEFAULT NULL COMMENT '来源微信ID',
  `sourceChatroomId` varchar(64) DEFAULT NULL COMMENT '来源群ID',
  `sourceSceneId` int(11) DEFAULT NULL COMMENT '来源场景ID',
  `sourceChannelId` int(11) DEFAULT NULL COMMENT '来源渠道ID',
  
  -- 关联任务
  `friendTaskId` int(11) DEFAULT NULL COMMENT '加好友任务ID',
  `taskCustomerId` int(11) DEFAULT NULL COMMENT '获客任务客户ID',
  
  -- 状态
  `isFirstSource` tinyint(1) DEFAULT 0 COMMENT '是否首次来源：0=否，1=是',
  `extra` json DEFAULT NULL COMMENT '额外信息',
  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
  `createTime` int(11) NOT NULL COMMENT '创建时间',
  `updateTime` int(11) DEFAULT NULL COMMENT '更新时间',
  
  PRIMARY KEY (`id`),
  KEY `idx_poolCompanyId` (`poolCompanyId`),
  KEY `idx_identifier_company` (`identifier`, `companyId`),
  KEY `idx_sourceType` (`sourceType`),
  KEY `idx_sourceWechatId` (`sourceWechatId`),
  KEY `idx_sourceChatroomId` (`sourceChatroomId`),
  KEY `idx_createTime` (`createTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流量来源记录表';


-- ----------------------------
-- 6. 流量行为表 ck_traffic_pool_behavior
-- 用途：记录流量的各种行为（包括所有消息互动）
-- ----------------------------
DROP TABLE IF EXISTS `ck_traffic_pool_behavior`;
CREATE TABLE `ck_traffic_pool_behavior` (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `poolCompanyId` int(11) UNSIGNED NOT NULL COMMENT '公司流量详情表ID',
  `identifier` varchar(64) NOT NULL COMMENT '流量标识（冗余）',
  `companyId` int(11) UNSIGNED NOT NULL COMMENT '公司ID',
  
  -- 行为信息
  `behaviorType` tinyint(2) NOT NULL COMMENT '行为类型：1=发送消息，2=接收消息，3=浏览，4=点击，5=咨询，6=下单，7=支付，8=退款，9=点赞朋友圈，10=评论朋友圈',
  `behaviorSubType` varchar(50) DEFAULT NULL COMMENT '行为子类型',
  `behaviorName` varchar(100) DEFAULT NULL COMMENT '行为名称',
  
  -- 行为详情
  `targetType` varchar(50) DEFAULT NULL COMMENT '目标类型',
  `targetId` varchar(100) DEFAULT NULL COMMENT '目标ID',
  `targetName` varchar(255) DEFAULT NULL COMMENT '目标名称',
  `amount` decimal(12,2) DEFAULT 0.00 COMMENT '金额',
  
  -- 关联信息（只记录ID，通过ID关联查询详情）
  `wechatAccountId` int(11) DEFAULT NULL COMMENT '客服微信账号ID',
  `messageId` bigint(20) DEFAULT NULL COMMENT '消息ID（关联s2_wechat_message.id）',
  `momentsId` int(11) DEFAULT NULL COMMENT '朋友圈ID（关联s2_wechat_moments.id）',
  `orderId` varchar(50) DEFAULT NULL COMMENT '订单号',
  `extra` json DEFAULT NULL COMMENT '额外信息',
  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
  `behaviorTime` int(11) NOT NULL COMMENT '行为时间',
  `createTime` int(11) NOT NULL COMMENT '创建时间',
  
  PRIMARY KEY (`id`),
  KEY `idx_poolCompanyId` (`poolCompanyId`),
  KEY `idx_identifier_company` (`identifier`, `companyId`),
  KEY `idx_behaviorType` (`behaviorType`),
  KEY `idx_behaviorTime` (`behaviorTime`),
  KEY `idx_messageId` (`messageId`),
  KEY `idx_createTime` (`createTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流量行为记录表';


-- ----------------------------
-- 7. 流量分配记录表 ck_traffic_pool_allot_record
-- 用途：记录流量的分配历史
-- ----------------------------
DROP TABLE IF EXISTS `ck_traffic_pool_allot_record`;
CREATE TABLE `ck_traffic_pool_allot_record` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `poolCompanyId` int(11) UNSIGNED NOT NULL COMMENT '公司流量详情表ID',
  `identifier` varchar(64) NOT NULL COMMENT '流量标识（冗余）',
  `companyId` int(11) UNSIGNED NOT NULL COMMENT '公司ID',
  
  -- 分配信息
  `allotType` tinyint(2) DEFAULT 1 COMMENT '分配类型：1=首次分配，2=重新分配，3=回收后分配',
  `allotRuleId` int(11) DEFAULT NULL COMMENT '分配规则ID',
  
  -- 分配前
  `fromWechatId` varchar(64) DEFAULT NULL COMMENT '原归属客服微信ID',
  `fromAccountId` int(11) DEFAULT NULL COMMENT '原归属账号ID',
  `fromUserId` int(11) DEFAULT NULL COMMENT '原归属操盘手ID',
  
  -- 分配后
  `toWechatId` varchar(64) NOT NULL COMMENT '新归属客服微信ID',
  `toAccountId` int(11) DEFAULT NULL COMMENT '新归属账号ID',
  `toUserId` int(11) DEFAULT NULL COMMENT '新归属操盘手ID',
  
  -- 有效期
  `expireDays` int(11) DEFAULT 30 COMMENT '有效期（天）',
  `expireTime` int(11) DEFAULT NULL COMMENT '到期时间',
  `status` tinyint(2) DEFAULT 1 COMMENT '状态：1=生效中，2=已过期，3=已回收',
  `operatorId` int(11) DEFAULT NULL COMMENT '操作人ID',
  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
  `createTime` int(11) NOT NULL COMMENT '创建时间',
  `updateTime` int(11) DEFAULT NULL COMMENT '更新时间',
  
  PRIMARY KEY (`id`),
  KEY `idx_poolCompanyId` (`poolCompanyId`),
  KEY `idx_identifier_company` (`identifier`, `companyId`),
  KEY `idx_toWechatId` (`toWechatId`),
  KEY `idx_status` (`status`),
  KEY `idx_expireTime` (`expireTime`),
  KEY `idx_createTime` (`createTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流量分配记录表';


-- ----------------------------
-- 8. 标签类目表 ck_traffic_pool_tag_category
-- 用途：管理标签的类目/分组，支持多级分类
-- ----------------------------
DROP TABLE IF EXISTS `ck_traffic_pool_tag_category`;
CREATE TABLE `ck_traffic_pool_tag_category` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `companyId` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '公司ID（0=系统默认）',
  `parentId` int(11) UNSIGNED DEFAULT 0 COMMENT '父类目ID（0=顶级类目）',
  `tagType` tinyint(2) NOT NULL COMMENT '标签类型：1=微信标签，2=站内标签，3=AI标签',
  `categoryCode` varchar(50) NOT NULL COMMENT '类目编码',
  `categoryName` varchar(50) NOT NULL COMMENT '类目名称',
  `categoryIcon` varchar(255) DEFAULT NULL COMMENT '类目图标',
  `categoryColor` varchar(20) DEFAULT NULL COMMENT '类目颜色',
  `description` varchar(255) DEFAULT NULL COMMENT '类目描述',
  `isSystem` tinyint(1) DEFAULT 0 COMMENT '是否系统默认：0=否，1=是',
  `sort` int(11) DEFAULT 0 COMMENT '排序（数值越小越靠前）',
  `status` tinyint(1) DEFAULT 1 COMMENT '状态：0=禁用，1=启用',
  `userId` int(11) DEFAULT NULL COMMENT '创建用户ID',
  `createTime` int(11) NOT NULL COMMENT '创建时间',
  `updateTime` int(11) DEFAULT NULL COMMENT '更新时间',
  `isDel` tinyint(1) DEFAULT 0 COMMENT '是否删除',
  `deleteTime` int(11) DEFAULT NULL COMMENT '删除时间',
  
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_company_code` (`companyId`, `categoryCode`),
  KEY `idx_companyId` (`companyId`),
  KEY `idx_parentId` (`parentId`),
  KEY `idx_tagType` (`tagType`),
  KEY `idx_status` (`status`),
  KEY `idx_sort` (`sort`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='标签类目表';


-- ----------------------------
-- 9. 标签定义表 ck_traffic_pool_tag_define
-- 用途：定义具体的标签
-- ----------------------------
DROP TABLE IF EXISTS `ck_traffic_pool_tag_define`;
CREATE TABLE `ck_traffic_pool_tag_define` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `companyId` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '公司ID（0=系统默认）',
  `categoryId` int(11) UNSIGNED DEFAULT 0 COMMENT '所属类目ID',
  `tagType` tinyint(2) NOT NULL COMMENT '标签类型：1=微信标签，2=站内标签，3=AI标签',
  `tagCode` varchar(50) NOT NULL COMMENT '标签编码',
  `tagName` varchar(50) NOT NULL COMMENT '标签名称',
  `tagIcon` varchar(255) DEFAULT NULL COMMENT '标签图标',
  `tagColor` varchar(20) DEFAULT NULL COMMENT '标签颜色',
  `description` varchar(255) DEFAULT NULL COMMENT '标签描述',
  `isSystem` tinyint(1) DEFAULT 0 COMMENT '是否系统默认：0=否，1=是',
  `isExclusive` tinyint(1) DEFAULT 0 COMMENT '是否互斥标签：0=否，1=是（同类目下只能选一个）',
  `sort` int(11) DEFAULT 0 COMMENT '排序（数值越小越靠前）',
  `status` tinyint(1) DEFAULT 1 COMMENT '状态：0=禁用，1=启用',
  `useCount` int(11) DEFAULT 0 COMMENT '使用次数（缓存）',
  `syncFromWechat` tinyint(1) DEFAULT 0 COMMENT '是否来自微信同步：0=否，1=是',
  `userId` int(11) DEFAULT NULL COMMENT '创建用户ID',
  `createTime` int(11) NOT NULL COMMENT '创建时间',
  `updateTime` int(11) DEFAULT NULL COMMENT '更新时间',
  `isDel` tinyint(1) DEFAULT 0 COMMENT '是否删除',
  `deleteTime` int(11) DEFAULT NULL COMMENT '删除时间',
  
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_company_code` (`companyId`, `tagCode`),
  KEY `idx_companyId` (`companyId`),
  KEY `idx_categoryId` (`categoryId`),
  KEY `idx_tagType` (`tagType`),
  KEY `idx_tagName` (`tagName`),
  KEY `idx_status` (`status`),
  KEY `idx_sort` (`sort`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='标签定义表';


-- ----------------------------
-- 10. 流量标签关联表 ck_traffic_pool_tag
-- 用途：记录流量与标签的关联关系
-- ----------------------------
DROP TABLE IF EXISTS `ck_traffic_pool_tag`;
CREATE TABLE `ck_traffic_pool_tag` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `poolCompanyId` int(11) UNSIGNED NOT NULL COMMENT '公司流量详情表ID',
  `identifier` varchar(64) NOT NULL COMMENT '流量标识（冗余）',
  `companyId` int(11) UNSIGNED NOT NULL COMMENT '公司ID',
  
  -- 标签信息
  `tagDefineId` int(11) UNSIGNED NOT NULL COMMENT '标签定义ID',
  `tagType` tinyint(2) NOT NULL COMMENT '标签类型：1=微信标签，2=站内标签，3=AI标签',
  `categoryId` int(11) UNSIGNED DEFAULT 0 COMMENT '类目ID（冗余）',
  `tagName` varchar(50) NOT NULL COMMENT '标签名称（冗余，方便查询）',
  `tagValue` varchar(255) DEFAULT NULL COMMENT '标签值（部分标签需要值，如：消费金额=1000）',
  
  -- 来源信息
  `source` tinyint(2) DEFAULT 1 COMMENT '打标来源：1=手动，2=规则自动，3=AI自动，4=微信同步',
  `sourceId` varchar(100) DEFAULT NULL COMMENT '来源ID（规则ID/AI任务ID等）',
  `sourceRemark` varchar(255) DEFAULT NULL COMMENT '来源备注',
  
  -- 操作信息
  `operatorId` int(11) DEFAULT NULL COMMENT '操作人ID',
  `score` decimal(5,2) DEFAULT NULL COMMENT 'AI标签置信度（0-100，仅AI标签使用）',
  `expireTime` int(11) DEFAULT NULL COMMENT '过期时间（部分标签有时效性）',
  `createTime` int(11) NOT NULL COMMENT '创建时间',
  `updateTime` int(11) DEFAULT NULL COMMENT '更新时间',
  `isDel` tinyint(1) DEFAULT 0 COMMENT '是否删除',
  `deleteTime` int(11) DEFAULT NULL COMMENT '删除时间',
  
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_pool_tag` (`poolCompanyId`, `tagDefineId`),
  KEY `idx_identifier_company` (`identifier`, `companyId`),
  KEY `idx_tagDefineId` (`tagDefineId`),
  KEY `idx_tagType` (`tagType`),
  KEY `idx_categoryId` (`categoryId`),
  KEY `idx_tagName` (`tagName`),
  KEY `idx_createTime` (`createTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流量标签关联表';


-- ============================================================================
-- 第三部分：初始化系统默认数据
-- ============================================================================

-- ----------------------------
-- 初始化系统默认流量池分组
-- ----------------------------
INSERT INTO `ck_traffic_pool_group` 
(`companyId`, `groupCode`, `groupName`, `description`, `isSystem`, `isDefault`, `ruleType`, `ruleConfig`, `sort`, `status`, `createTime`) 
VALUES 
-- 全部好友流量池
(0, 'all_friends', '全部好友流量池', '所有已添加的好友', 1, 1, 1, 
 '{"logic":"AND","conditions":[{"type":"field","field":"friendStatus","operator":"=","value":2,"valueType":"number"}]}', 
 1, 1, UNIX_TIMESTAMP()),
 
-- 高价值客户池：已通过好友 AND (消费>=1000 OR 等级=VIP)
(0, 'high_value', '高价值客户池', '消费金额高的客户', 1, 0, 1,
 '{"logic":"AND","conditions":[{"type":"field","field":"friendStatus","operator":"=","value":2,"valueType":"number"},{"type":"group","logic":"OR","conditions":[{"type":"field","field":"rfmM","operator":">=","value":1000,"valueType":"number"},{"type":"field","field":"level","operator":"=","value":2,"valueType":"number"}]}]}',
 2, 1, UNIX_TIMESTAMP()),
 
-- 潜在客户池：已通过好友 AND 意向度>=中 AND 订单数=0
(0, 'potential', '潜在客户池', '有意向但未成交的客户', 1, 0, 1,
 '{"logic":"AND","conditions":[{"type":"field","field":"friendStatus","operator":"=","value":2,"valueType":"number"},{"type":"field","field":"intentionLevel","operator":">=","value":2,"valueType":"number"},{"type":"field","field":"totalOrderCount","operator":"=","value":0,"valueType":"number"}]}',
 3, 1, UNIX_TIMESTAMP()),
 
-- 高互动客户池：已通过好友 AND 消息数>=50
(0, 'high_interact', '高互动客户池', '互动频繁的客户', 1, 0, 1,
 '{"logic":"AND","conditions":[{"type":"field","field":"friendStatus","operator":"=","value":2,"valueType":"number"},{"type":"field","field":"totalMsgCount","operator":">=","value":50,"valueType":"number"}]}',
 4, 1, UNIX_TIMESTAMP());


-- ----------------------------
-- 初始化系统默认标签类目
-- ----------------------------
INSERT INTO `ck_traffic_pool_tag_category` 
(`companyId`, `parentId`, `tagType`, `categoryCode`, `categoryName`, `description`, `isSystem`, `sort`, `status`, `createTime`) 
VALUES 
-- 微信标签类目（tagType=1）
(0, 0, 1, 'wechat_default', '微信默认标签', '从微信同步的标签', 1, 1, 1, UNIX_TIMESTAMP()),

-- 站内标签类目（tagType=2）
(0, 0, 2, 'customer_level', '客户等级', '普通/重要/VIP', 1, 1, 1, UNIX_TIMESTAMP()),
(0, 0, 2, 'customer_intention', '客户意向', '低意向/中意向/高意向', 1, 2, 1, UNIX_TIMESTAMP()),
(0, 0, 2, 'customer_stage', '客户阶段', '新客户/跟进中/已成交/已流失', 1, 3, 1, UNIX_TIMESTAMP()),
(0, 0, 2, 'customer_source', '客户来源', '海报/电话/群聊/好友推荐等', 1, 4, 1, UNIX_TIMESTAMP()),
(0, 0, 2, 'customer_industry', '所属行业', '行业分类标签', 1, 5, 1, UNIX_TIMESTAMP()),
(0, 0, 2, 'customer_preference', '客户偏好', '产品偏好/服务偏好等', 1, 6, 1, UNIX_TIMESTAMP()),

-- AI标签类目（tagType=3）
(0, 0, 3, 'ai_portrait', 'AI画像标签', 'AI分析的用户画像', 1, 1, 1, UNIX_TIMESTAMP()),
(0, 0, 3, 'ai_behavior', 'AI行为标签', 'AI分析的行为特征', 1, 2, 1, UNIX_TIMESTAMP()),
(0, 0, 3, 'ai_prediction', 'AI预测标签', 'AI预测的标签（如：高转化潜力）', 1, 3, 1, UNIX_TIMESTAMP());


-- ----------------------------
-- 初始化系统默认标签定义
-- ----------------------------
INSERT INTO `ck_traffic_pool_tag_define` 
(`companyId`, `categoryId`, `tagType`, `tagCode`, `tagName`, `description`, `isSystem`, `isExclusive`, `sort`, `status`, `createTime`) 
VALUES 
-- 客户等级标签（categoryId 需要根据实际插入后的ID调整，这里假设为2）
(0, 2, 2, 'level_normal', '普通客户', '普通等级客户', 1, 1, 1, 1, UNIX_TIMESTAMP()),
(0, 2, 2, 'level_important', '重要客户', '重要等级客户', 1, 1, 2, 1, UNIX_TIMESTAMP()),
(0, 2, 2, 'level_vip', 'VIP客户', 'VIP等级客户', 1, 1, 3, 1, UNIX_TIMESTAMP()),

-- 客户意向标签（categoryId=3）
(0, 3, 2, 'intention_low', '低意向', '购买意向较低', 1, 1, 1, 1, UNIX_TIMESTAMP()),
(0, 3, 2, 'intention_medium', '中意向', '购买意向一般', 1, 1, 2, 1, UNIX_TIMESTAMP()),
(0, 3, 2, 'intention_high', '高意向', '购买意向较高', 1, 1, 3, 1, UNIX_TIMESTAMP()),

-- 客户阶段标签（categoryId=4）
(0, 4, 2, 'stage_new', '新客户', '新进入的客户', 1, 1, 1, 1, UNIX_TIMESTAMP()),
(0, 4, 2, 'stage_following', '跟进中', '正在跟进的客户', 1, 1, 2, 1, UNIX_TIMESTAMP()),
(0, 4, 2, 'stage_converted', '已成交', '已经成交的客户', 1, 1, 3, 1, UNIX_TIMESTAMP()),
(0, 4, 2, 'stage_lost', '已流失', '已流失的客户', 1, 1, 4, 1, UNIX_TIMESTAMP()),

-- 客户来源标签（categoryId=5）
(0, 5, 2, 'source_poster', '海报获客', '通过海报获取的客户', 1, 0, 1, 1, UNIX_TIMESTAMP()),
(0, 5, 2, 'source_phone', '电话获客', '通过电话获取的客户', 1, 0, 2, 1, UNIX_TIMESTAMP()),
(0, 5, 2, 'source_group', '群聊获客', '通过群聊获取的客户', 1, 0, 3, 1, UNIX_TIMESTAMP()),
(0, 5, 2, 'source_referral', '好友推荐', '通过好友推荐的客户', 1, 0, 4, 1, UNIX_TIMESTAMP()),
(0, 5, 2, 'source_api', 'API导入', '通过API导入的客户', 1, 0, 5, 1, UNIX_TIMESTAMP()),

-- AI预测标签（categoryId=10）
(0, 10, 3, 'ai_high_potential', '高转化潜力', 'AI预测的高转化潜力客户', 1, 0, 1, 1, UNIX_TIMESTAMP()),
(0, 10, 3, 'ai_churn_risk', '流失风险', 'AI预测的有流失风险客户', 1, 0, 2, 1, UNIX_TIMESTAMP()),
(0, 10, 3, 'ai_active', '活跃用户', 'AI分析的活跃用户', 1, 0, 3, 1, UNIX_TIMESTAMP());


-- ============================================================================
-- 第四部分：修改工作台配置表中流量池相关字段的注释（可选）
-- ============================================================================

-- 如果需要更新工作台配置表的字段注释，可以执行以下语句
-- ALTER TABLE `ck_workbench_traffic_config` 
--   MODIFY COLUMN `pools` json DEFAULT NULL COMMENT '流量池分组ID数组（关联ck_traffic_pool_group.id）';

-- ALTER TABLE `ck_workbench_import_contact` 
--   MODIFY COLUMN `pools` json DEFAULT NULL COMMENT '流量池分组ID数组（关联ck_traffic_pool_group.id）';

-- ALTER TABLE `ck_workbench_group_create` 
--   MODIFY COLUMN `poolGroups` json DEFAULT NULL COMMENT '流量池分组ID数组（关联ck_traffic_pool_group.id）';


-- ============================================================================
-- 完成提示
-- ============================================================================
-- 执行完成后，旧表已重命名为 xxx_v1 后缀，新表已创建完成
-- 
-- 旧表（已重命名）:
--   - ck_traffic_pool_v1
--   - ck_traffic_source_v1
--   - ck_traffic_source_package_v1
--   - ck_traffic_source_package_item_v1
--   - ck_traffic_tag_v1
--   - ck_traffic_profile_v1
--   - ck_traffic_order_v1
--
-- 新表（共10张）:
--   - ck_traffic_pool (流量池总表)
--   - ck_traffic_pool_company (公司流量详情表)
--   - ck_traffic_pool_group (流量池分组表)
--   - ck_traffic_pool_group_member (流量池分组成员表)
--   - ck_traffic_pool_source (流量来源记录表)
--   - ck_traffic_pool_behavior (流量行为记录表)
--   - ck_traffic_pool_allot_record (流量分配记录表)
--   - ck_traffic_pool_tag_category (标签类目表)
--   - ck_traffic_pool_tag_define (标签定义表)
--   - ck_traffic_pool_tag (流量标签关联表)
--
-- 初始化数据:
--   - 4条系统默认流量池分组
--   - 10条系统默认标签类目（微信1条、站内6条、AI3条）
--   - 18条系统默认标签定义
-- ============================================================================
