-- =====================================================
-- 幼儿园阅读平台数据库扩展脚本
-- 版本: V2
-- 创建时间: 2026-03-14
-- 描述: 添加课程环节、资源、活动等表
-- =====================================================

-- -----------------------------------------------------
-- 表11: 课程环节表 (course_lesson)
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `course_lesson` (
    `id` BIGINT NOT NULL COMMENT '主键ID',
    `course_id` BIGINT NOT NULL COMMENT '课程ID',
    `lesson_type` VARCHAR(50) COMMENT '课程类型:INTRODUCTION、LANGUAGE、SOCIETY、SCIENCE、ART、HEALTH',
    `name` VARCHAR(200) NOT NULL COMMENT '课程名称',
    `description` TEXT COMMENT '课程描述',
    `duration` INT COMMENT '时长(分钟)',
    `video_path` VARCHAR(500) COMMENT '视频路径',
    `video_name` VARCHAR(200) COMMENT '视频名称',
    `ppt_path` VARCHAR(500) COMMENT 'PPT路径',
    `ppt_name` VARCHAR(200) COMMENT 'PPT名称',
    `pdf_path` VARCHAR(500) COMMENT 'PDF路径',
    `pdf_name` VARCHAR(200) COMMENT 'PDF名称',
    `objectives` TEXT COMMENT '教学目标',
    `preparation` TEXT COMMENT '教学准备',
    `extension` TEXT COMMENT '教学延伸',
    `reflection` TEXT COMMENT '教学反思',
    `assessment_data` JSON COMMENT '评测数据(JSON)',
    `use_template` TINYINT DEFAULT 0 COMMENT '是否使用模板',
    `sort_order` INT DEFAULT 0 COMMENT '排序号',
    `create_by` VARCHAR(50) COMMENT '创建人',
    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by` VARCHAR(50) COMMENT '更新人',
    `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` TINYINT DEFAULT 0 COMMENT '删除标识(0-未删除,1-已删除)',
    PRIMARY KEY (`id`),
    KEY `idx_course_id` (`course_id`),
    KEY `idx_lesson_type` (`lesson_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课程环节表';

-- -----------------------------------------------------
-- 表12: 课程资源表 (course_resource)
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `course_resource` (
    `id` BIGINT NOT NULL COMMENT '主键ID',
    `course_id` BIGINT NOT NULL COMMENT '课程ID',
    `title` VARCHAR(200) NOT NULL COMMENT '资源标题',
    `type` VARCHAR(50) COMMENT '资源类型',
    `url` VARCHAR(500) COMMENT '资源URL',
    `file_path` VARCHAR(500) COMMENT '文件路径',
    `file_size` BIGINT COMMENT '文件大小',
    `duration` INT COMMENT '时长',
    `description` TEXT COMMENT '资源描述',
    `sort_order` INT DEFAULT 0 COMMENT '排序号',
    `create_by` VARCHAR(50) COMMENT '创建人',
    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by` VARCHAR(50) COMMENT '更新人',
    `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` TINYINT DEFAULT 0 COMMENT '删除标识(0-未删除,1-已删除)',
    PRIMARY KEY (`id`),
    KEY `idx_course_id` (`course_id`),
    KEY `idx_type` (`type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课程资源表';

-- -----------------------------------------------------
-- 表13: 课程活动表 (course_activity)
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `course_activity` (
    `id` BIGINT NOT NULL COMMENT '主键ID',
    `course_id` BIGINT NOT NULL COMMENT '课程ID',
    `title` VARCHAR(200) NOT NULL COMMENT '活动标题',
    `type` VARCHAR(50) COMMENT '活动类型',
    `content` TEXT COMMENT '活动内容',
    `materials` TEXT COMMENT '活动材料',
    `duration_minutes` INT COMMENT '活动时长(分钟)',
    `sort_order` INT DEFAULT 0 COMMENT '排序号',
    `create_by` VARCHAR(50) COMMENT '创建人',
    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by` VARCHAR(50) COMMENT '更新人',
    `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` TINYINT DEFAULT 0 COMMENT '删除标识(0-未删除,1-已删除)',
    PRIMARY KEY (`id`),
    KEY `idx_course_id` (`course_id`),
    KEY `idx_type` (`type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课程活动表';

-- -----------------------------------------------------
-- 表14: 课程脚本表 (course_script)
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `course_script` (
    `id` BIGINT NOT NULL COMMENT '主键ID',
    `course_id` BIGINT NOT NULL COMMENT '课程ID',
    `title` VARCHAR(200) NOT NULL COMMENT '脚本标题',
    `description` TEXT COMMENT '脚本描述',
    `sort_order` INT DEFAULT 0 COMMENT '排序号',
    `create_by` VARCHAR(50) COMMENT '创建人',
    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by` VARCHAR(50) COMMENT '更新人',
    `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` TINYINT DEFAULT 0 COMMENT '删除标识(0-未删除,1-已删除)',
    PRIMARY KEY (`id`),
    KEY `idx_course_id` (`course_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课程脚本表';

-- -----------------------------------------------------
-- 表15: 课程脚本页面表 (course_script_page)
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `course_script_page` (
    `id` BIGINT NOT NULL COMMENT '主键ID',
    `script_id` BIGINT NOT NULL COMMENT '脚本ID',
    `page_number` INT NOT NULL COMMENT '页码',
    `content` TEXT COMMENT '页面内容',
    `image_url` VARCHAR(500) COMMENT '图片URL',
    `audio_url` VARCHAR(500) COMMENT '音频URL',
    `duration` INT COMMENT '时长',
    `notes` TEXT COMMENT '备注',
    `create_by` VARCHAR(50) COMMENT '创建人',
    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by` VARCHAR(50) COMMENT '更新人',
    `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` TINYINT DEFAULT 0 COMMENT '删除标识(0-未删除,1-已删除)',
    PRIMARY KEY (`id`),
    KEY `idx_script_id` (`script_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课程脚本页面表';

-- -----------------------------------------------------
-- 表16: 课程版本表 (course_version)
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `course_version` (
    `id` BIGINT NOT NULL COMMENT '主键ID',
    `course_id` BIGINT NOT NULL COMMENT '课程ID',
    `version` VARCHAR(20) NOT NULL COMMENT '版本号',
    `description` TEXT COMMENT '版本描述',
    `status` VARCHAR(20) DEFAULT 'DRAFT' COMMENT '状态',
    `create_by` VARCHAR(50) COMMENT '创建人',
    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by` VARCHAR(50) COMMENT '更新人',
    `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` TINYINT DEFAULT 0 COMMENT '删除标识(0-未删除,1-已删除)',
    PRIMARY KEY (`id`),
    KEY `idx_course_id` (`course_id`),
    KEY `idx_version` (`version`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课程版本表';

-- -----------------------------------------------------
-- 表17: 课程表(排课) (lesson)
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `lesson` (
    `id` BIGINT NOT NULL COMMENT '主键ID',
    `tenant_id` BIGINT NOT NULL COMMENT '租户ID',
    `course_id` BIGINT COMMENT '课程ID',
    `class_id` BIGINT COMMENT '班级ID',
    `teacher_id` BIGINT COMMENT '教师ID',
    `title` VARCHAR(200) NOT NULL COMMENT '课程标题',
    `lesson_date` DATE NOT NULL COMMENT '上课日期',
    `start_time` TIME COMMENT '开始时间',
    `end_time` TIME COMMENT '结束时间',
    `location` VARCHAR(100) COMMENT '上课地点',
    `status` VARCHAR(20) DEFAULT 'SCHEDULED' COMMENT '状态',
    `notes` TEXT COMMENT '备注',
    `create_by` VARCHAR(50) COMMENT '创建人',
    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by` VARCHAR(50) COMMENT '更新人',
    `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` TINYINT DEFAULT 0 COMMENT '删除标识(0-未删除,1-已删除)',
    PRIMARY KEY (`id`),
    KEY `idx_tenant_id` (`tenant_id`),
    KEY `idx_course_id` (`course_id`),
    KEY `idx_class_id` (`class_id`),
    KEY `idx_teacher_id` (`teacher_id`),
    KEY `idx_lesson_date` (`lesson_date`),
    KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课程表(排课)';

-- -----------------------------------------------------
-- 表18: 教学环节表 (lesson_step)
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `lesson_step` (
    `id` BIGINT NOT NULL COMMENT '主键ID',
    `lesson_id` BIGINT NOT NULL COMMENT '课程环节ID',
    `name` VARCHAR(200) NOT NULL COMMENT '环节名称',
    `content` TEXT COMMENT '环节内容',
    `duration` INT COMMENT '时长(分钟)',
    `objective` TEXT COMMENT '教学目标',
    `resource_ids` JSON COMMENT '资源ID列表(JSON数组)',
    `sort_order` INT DEFAULT 0 COMMENT '排序号',
    `create_by` VARCHAR(50) COMMENT '创建人',
    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by` VARCHAR(50) COMMENT '更新人',
    `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` TINYINT DEFAULT 0 COMMENT '删除标识(0-未删除,1-已删除)',
    PRIMARY KEY (`id`),
    KEY `idx_lesson_id` (`lesson_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='教学环节表';

-- -----------------------------------------------------
-- 表19: 环节资源关联表 (lesson_step_resource)
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `lesson_step_resource` (
    `id` BIGINT NOT NULL COMMENT '主键ID',
    `step_id` BIGINT NOT NULL COMMENT '环节ID',
    `resource_id` BIGINT NOT NULL COMMENT '资源ID',
    `sort_order` INT DEFAULT 0 COMMENT '排序号',
    `create_by` VARCHAR(50) COMMENT '创建人',
    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by` VARCHAR(50) COMMENT '更新人',
    `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` TINYINT DEFAULT 0 COMMENT '删除标识(0-未删除,1-已删除)',
    PRIMARY KEY (`id`),
    KEY `idx_step_id` (`step_id`),
    KEY `idx_resource_id` (`resource_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='环节资源关联表';

-- -----------------------------------------------------
-- 表20: 课程反馈表 (lesson_feedback)
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `lesson_feedback` (
    `id` BIGINT NOT NULL COMMENT '主键ID',
    `lesson_id` BIGINT NOT NULL COMMENT '课程ID',
    `teacher_id` BIGINT NOT NULL COMMENT '教师ID',
    `content` TEXT NOT NULL COMMENT '反馈内容',
    `rating` INT COMMENT '评分',
    `create_by` VARCHAR(50) COMMENT '创建人',
    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by` VARCHAR(50) COMMENT '更新人',
    `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` TINYINT DEFAULT 0 COMMENT '删除标识(0-未删除,1-已删除)',
    PRIMARY KEY (`id`),
    KEY `idx_lesson_id` (`lesson_id`),
    KEY `idx_teacher_id` (`teacher_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课程反馈表';