-- 个微SOP表结构（his_sop 数据库）
-- 对应 @DataSource(DataSourceType.SOP)，请在 SOP 数据源对应的数据库中执行

-- 执行账号表
CREATE TABLE IF NOT EXISTS `wx_sop_user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `type` int(11) DEFAULT NULL COMMENT '类型(0个人1群聊)',
  `sop_id` bigint(20) DEFAULT NULL COMMENT '任务ID',
  `account_id` bigint(20) DEFAULT NULL COMMENT '个微账号ID',
  `start_time` date DEFAULT NULL COMMENT '营期时间',
  `chat_id` varchar(100) DEFAULT NULL COMMENT '群聊ID',
  `status` int(11) DEFAULT NULL COMMENT '状态（0正常1暂停）',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`),
  KEY `idx_sop_id` (`sop_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='个微SOP执行账号表';

-- 个微SOP主表
CREATE TABLE IF NOT EXISTS `wx_sop` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `name` varchar(100) DEFAULT NULL COMMENT '名称',
  `filter_type` int(11) DEFAULT NULL COMMENT '筛选方式(0标签1群聊)',
  `select_tags` varchar(500) DEFAULT NULL COMMENT '选择的标签',
  `exclude_tags` varchar(500) DEFAULT NULL COMMENT '排查的标签',
  `temp_id` varchar(50) DEFAULT NULL COMMENT '模板ID',
  `company_id` bigint(20) DEFAULT NULL COMMENT '公司ID',
  `is_fixed` int(11) DEFAULT NULL COMMENT '是否固定营期(0否1是)',
  `expiry_time` int(11) DEFAULT NULL COMMENT '过期时间(小时)',
  `start_time` date DEFAULT NULL COMMENT '营期开始时间',
  `account_ids` varchar(500) DEFAULT NULL COMMENT '执行账号ID，逗号分隔',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `status` int(11) DEFAULT NULL COMMENT '状态(0停止 1启用 2执行中)',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`),
  KEY `idx_company_id` (`company_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='个微SOP表';

-- 若 wx_sop 表已存在且无 account_ids 字段，可执行：
-- ALTER TABLE wx_sop ADD COLUMN account_ids varchar(500) DEFAULT NULL COMMENT '执行账号ID，逗号分隔' AFTER start_time;

-- 若 wx_sop 表已存在且无 status 字段，可执行：
ALTER TABLE wx_sop ADD COLUMN status int(11) DEFAULT NULL COMMENT '状态(0停止 1启用 2执行中)' AFTER update_by;

-- 个微营期详情表
CREATE TABLE IF NOT EXISTS `wx_sop_user_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `sop_id` bigint(20) DEFAULT NULL COMMENT '任务ID',
  `sop_user_id` bigint(20) DEFAULT NULL COMMENT '营期ID',
  `wx_contact_id` bigint(20) DEFAULT NULL COMMENT '联系人ID',
  `customer_id` bigint(20) DEFAULT NULL COMMENT '客户ID',
  `fs_user_id` bigint(20) DEFAULT NULL COMMENT '小程序ID',
  `is_days_not_study` int(11) DEFAULT NULL COMMENT '是否7天都没有看课 0否 1是',
  `finish_cout` int(11) DEFAULT NULL COMMENT '总完课天数',
  `finish_time` datetime DEFAULT NULL COMMENT '最近完课时间',
  `finish_course_days` int(11) DEFAULT NULL COMMENT '连续完课天数',
  `grade` int(11) DEFAULT NULL COMMENT '客户评级的等级',
  `status` int(11) DEFAULT NULL COMMENT '禁用状态 0 正常 1禁用',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`),
  KEY `idx_sop_id` (`sop_id`),
  KEY `idx_sop_user_id` (`sop_user_id`),
  KEY `idx_wx_contact_id` (`wx_contact_id`),
  KEY `idx_customer_id` (`customer_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='个微营期详情表';

-- 若 wx_sop_user_info 表已存在但没有 customer_id 字段，可执行：
ALTER TABLE wx_sop_user_info ADD COLUMN customer_id bigint(20) DEFAULT NULL COMMENT '客户ID' AFTER wx_contact_id;
ALTER TABLE wx_sop_user_info ADD INDEX idx_customer_id (customer_id);
