-- 实战业务培训（科技平台与服务）
-- 业务说明见 doc/科技平台与服务/实战业务培训/实战业务培训技术方案.md

CREATE TABLE IF NOT EXISTS `biz_practical_training` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `training_topic` varchar(64) NOT NULL COMMENT '培训主题',
  `training_time` datetime NOT NULL COMMENT '培训时间',
  `training_intro` varchar(500) NOT NULL COMMENT '培训简介',
  `planned_head_count` int(11) NOT NULL COMMENT '计划人数',
  `training_location` varchar(200) NOT NULL COMMENT '培训地点',
  `expected_outcome` text COMMENT '预期成果',
  `registration_start_time` datetime NOT NULL COMMENT '报名开始时间',
  `registration_end_time` datetime NOT NULL COMMENT '报名截止时间',
  `cover_file_url` varchar(512) DEFAULT NULL COMMENT '封面URL',
  `cover_file_path` varchar(512) DEFAULT NULL COMMENT '封面存储路径',
  `actual_enrolled_count` int(11) NOT NULL DEFAULT '0' COMMENT '实际报名人数',
  `training_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '006001' COMMENT '培训状态（006001未开始 006002报名中 006003已报满 006004已截止）',
  `publish_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0未发布 1已发布',
  `publish_time` datetime DEFAULT NULL COMMENT '发布时间',
  `offline_time` datetime DEFAULT NULL COMMENT '下架时间',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '0存在 2删除',
  `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`),
  KEY `idx_training_time` (`training_time`),
  KEY `idx_training_topic` (`training_topic`),
  KEY `idx_publish` (`publish_status`),
  KEY `idx_reg_start` (`registration_start_time`),
  KEY `idx_del_flag` (`del_flag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='实战业务培训';

-- ---------------------------------------------------------------------------
-- 报名成员子表（一场培训下多名报名人；有效报名计入主表 actual_enrolled_count）
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `biz_practical_training_member` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `training_id` bigint(20) NOT NULL COMMENT '培训主表ID，关联 biz_practical_training.id',
  `member_name` varchar(32) NOT NULL COMMENT '成员姓名',
  `sys_user_id` bigint(20) DEFAULT NULL COMMENT '移动端报名用户ID，关联 sys_user.user_id',
  `enroll_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '报名状态：0已报名 1已取消',
  `enroll_time` datetime NOT NULL COMMENT '报名时间',
  `cancel_time` datetime DEFAULT NULL COMMENT '取消报名时间',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '0存在 2删除',
  `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`),
  KEY `idx_training_id` (`training_id`),
  KEY `idx_training_enroll` (`training_id`, `enroll_status`),
  KEY `idx_sys_user_id` (`sys_user_id`),
  UNIQUE KEY `uk_training_user` (`training_id`, `sys_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='实战业务培训报名成员';
