use school_news;
-- 学习计划/任务表
DROP TABLE IF EXISTS `tb_learning_task`;
CREATE TABLE `tb_learning_task` (
  `id` VARCHAR(50) NOT NULL COMMENT '任务ID',
  `task_id` VARCHAR(50) NOT NULL COMMENT '任务唯一标识',
  `name` VARCHAR(255) NOT NULL COMMENT '任务名称',
  `description` TEXT COMMENT '任务描述',
  `start_time` TIMESTAMP NULL DEFAULT NULL COMMENT '开始时间',
  `end_time` TIMESTAMP NULL DEFAULT NULL COMMENT '结束时间',
  `status` INT(4) DEFAULT 1 COMMENT '状态（0草稿 1进行中 2已结束）',
  `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
  `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
  `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
  `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_task_id` (`task_id`),
  KEY `idx_status` (`status`),
  KEY `idx_time` (`start_time`, `end_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='学习任务表';

DROP TABLE IF EXISTS `tb_learning_task_tag`;
CREATE TABLE `tb_learning_task_tag` (
  `id` VARCHAR(50) NOT NULL COMMENT '关联ID',
  `task_id` VARCHAR(50) NOT NULL COMMENT '任务ID',
  `tag_id` VARCHAR(50) NOT NULL COMMENT '标签ID',
  `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
  `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_task_tag` (`task_id`, `tag_id`),
  KEY `idx_task_id` (`task_id`),
  KEY `idx_tag_id` (`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='学习任务标签关联表';



-- 任务项关联表（统一管理资源和课程）
DROP TABLE IF EXISTS `tb_task_item`;
CREATE TABLE `tb_task_item` (
  `id` VARCHAR(50) NOT NULL COMMENT '关联ID',
  `task_id` VARCHAR(50) NOT NULL COMMENT '任务ID',
  `item_type` INT(4) NOT NULL COMMENT '项类型（1资源 2课程）',
  `item_id` VARCHAR(50) NOT NULL COMMENT '项ID（资源ID或课程ID）',
  `required` TINYINT(1) DEFAULT 1 COMMENT '是否必须完成',
  `order_num` INT(4) DEFAULT 0 COMMENT '排序号',
  `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
  `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
  `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
  `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_task_item` (`task_id`, `item_type`, `item_id`),
  KEY `idx_task` (`task_id`),
  KEY `idx_item` (`item_type`, `item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='任务项关联表';

-- 任务接收人员表
DROP TABLE IF EXISTS `tb_task_user`;
CREATE TABLE `tb_task_user` (
  `id` VARCHAR(50) NOT NULL COMMENT '关联ID',
  `task_id` VARCHAR(50) NOT NULL COMMENT '任务ID',
  `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID',
  `dept_id` VARCHAR(50) DEFAULT NULL COMMENT '部门ID',
  `status` INT(4) DEFAULT 0 COMMENT '完成状态（0未完成 1已完成）',
  `progress` DECIMAL(5,2) DEFAULT 0.00 COMMENT '完成进度（0-100）',
  `complete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '完成时间',
  `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
  `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
  `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
  `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_task_user` (`task_id`, `user_id`),
  KEY `idx_task` (`task_id`),
  KEY `idx_user` (`user_id`),
  KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='任务用户表';

-- 学习记录表
DROP TABLE IF EXISTS `tb_learning_record`;
CREATE TABLE `tb_learning_record` (
  `id` VARCHAR(50) NOT NULL COMMENT '记录ID',
  `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID',
  `task_id` VARCHAR(50) DEFAULT NULL COMMENT '任务ID',
  `resource_type` INT(4) NOT NULL COMMENT '资源类型（1资源 2课程 3章节）',
  `resource_id` VARCHAR(50) DEFAULT NULL COMMENT '资源ID',
  `course_id` VARCHAR(50) DEFAULT NULL COMMENT '课程ID',
  `chapter_id` VARCHAR(50) DEFAULT NULL COMMENT '章节ID',
  `node_id` VARCHAR(50) DEFAULT NULL COMMENT '节点ID',
  `duration` INT(11) DEFAULT 0 COMMENT '学习时长（秒）',
  `progress` DECIMAL(5,2) DEFAULT 0.00 COMMENT '学习进度（0-100）',
  `is_complete` TINYINT(1) DEFAULT 0 COMMENT '是否完成',
  `complete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '完成时间',
  `last_learn_time` TIMESTAMP NULL DEFAULT NULL COMMENT '最后学习时间',
  `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
  `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
  `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
  `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
  PRIMARY KEY (`id`),
  KEY `idx_user` (`user_id`),
  KEY `idx_resource` (`resource_type`, `resource_id`),
  KEY `idx_task` (`task_id`),
  KEY `idx_learn_time` (`last_learn_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='学习记录表';

-- 学习统计表（按天统计）
DROP TABLE IF EXISTS `tb_learning_statistics`;
CREATE TABLE `tb_learning_statistics` (
  `id` VARCHAR(50) NOT NULL COMMENT '统计ID',
  `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID',
  `stat_date` DATE NOT NULL COMMENT '统计日期',
  `total_duration` INT(11) DEFAULT 0 COMMENT '总学习时长（秒）',
  `resource_count` INT(11) DEFAULT 0 COMMENT '学习资源数量',
  `course_count` INT(11) DEFAULT 0 COMMENT '学习课程数量',
  `complete_count` INT(11) DEFAULT 0 COMMENT '完成数量',
  `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
  `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
  `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
  `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_user_date` (`user_id`, `stat_date`),
  KEY `idx_user` (`user_id`),
  KEY `idx_date` (`stat_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='学习统计表';

-- 学习观看历史表（记录每次学习行为）
DROP TABLE IF EXISTS `tb_learning_history`;
CREATE TABLE `tb_learning_history` (
  `id` VARCHAR(50) NOT NULL COMMENT 'ID',
  `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID',
  `history_id` VARCHAR(50) DEFAULT NULL COMMENT '学习历史ID',
  
  -- 学习对象
  `resource_type` INT(4) NOT NULL COMMENT '资源类型（1资源/新闻 2课程 3章节 4节点）',
  `resource_id` VARCHAR(50) DEFAULT NULL COMMENT '资源ID',
  `course_id` VARCHAR(50) DEFAULT NULL COMMENT '课程ID',
  `chapter_id` VARCHAR(50) DEFAULT NULL COMMENT '章节ID',
  `node_id` VARCHAR(50) DEFAULT NULL COMMENT '节点ID',
  `task_id` VARCHAR(50) DEFAULT NULL COMMENT '关联任务ID',
  
  -- 学习时间
  `start_time` TIMESTAMP NOT NULL COMMENT '开始学习时间',
  `end_time` TIMESTAMP NULL DEFAULT NULL COMMENT '结束学习时间',
  `duration` INT(11) DEFAULT 0 COMMENT '本次学习时长（秒）',
  
  -- 学习进度
  `start_progress` DECIMAL(5,2) DEFAULT 0.00 COMMENT '开始进度（0-100）',
  `end_progress` DECIMAL(5,2) DEFAULT 0.00 COMMENT '结束进度（0-100）',
  
  -- 设备信息（可选）
  `device_type` VARCHAR(20) DEFAULT NULL COMMENT '设备类型（web/mobile/app）',
  `ip_address` VARCHAR(50) DEFAULT NULL COMMENT 'IP地址',
  
  `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
  `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
  `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
  
  PRIMARY KEY (`id`),
  KEY `idx_user_time` (`user_id`, `start_time`),
  KEY `idx_user_resource` (`user_id`, `resource_type`, `resource_id`),
  KEY `idx_course` (`course_id`),
  KEY `idx_task` (`task_id`),
  KEY `idx_history` (`history_id`),
  KEY `idx_start_time` (`start_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='学习观看历史表';

-- 学习统计明细表（按天按资源统计）
DROP TABLE IF EXISTS `tb_learning_statistics_detail`;
CREATE TABLE `tb_learning_statistics_detail` (
  `id` VARCHAR(50) NOT NULL COMMENT '统计ID',
  `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID',
  `stat_date` DATE NOT NULL COMMENT '统计日期',
  
  -- 学习对象
  `resource_type` INT(4) NOT NULL COMMENT '资源类型（1资源/新闻 2课程 3章节）',
  `resource_id` VARCHAR(50) DEFAULT NULL COMMENT '资源ID',
  `course_id` VARCHAR(50) DEFAULT NULL COMMENT '课程ID',
  `chapter_id` VARCHAR(50) DEFAULT NULL COMMENT '章节ID',
  
  -- 统计数据
  `total_duration` INT(11) DEFAULT 0 COMMENT '学习时长（秒）',
  `learn_count` INT(11) DEFAULT 0 COMMENT '学习次数',
  `is_complete` TINYINT(1) DEFAULT 0 COMMENT '是否完成',
  `complete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '完成时间',
  
  `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
  `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
  `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
  `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
  
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_user_date_resource` (`user_id`, `stat_date`, `resource_type`, `resource_id`, `course_id`, `chapter_id`),
  KEY `idx_user_date` (`user_id`, `stat_date`),
  KEY `idx_date` (`stat_date`),
  KEY `idx_resource` (`resource_type`, `resource_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='学习统计明细表';

