package com.reading.platform.dto.request;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;

import java.util.List;

@Data
@Schema(description = "课程创建请求")
public class CourseCreateRequest {

    @NotBlank(message = "课程名称不能为空")
    @Schema(description = "课程名称", example = "绘本阅读入门")
    private String name;

    @Schema(description = "课程编码", example = "READ001")
    private String code;

    @Schema(description = "描述", example = "适合大班幼儿的绘本阅读课程")
    private String description;

    @Schema(description = "封面URL")
    private String coverUrl;

    @Schema(description = "封面图片路径", example = "/images/course1.png")
    private String coverImagePath;

    @Schema(description = "分类", example = "language")
    private String category;

    @Schema(description = "年龄段", example = "5-6 岁")
    private String ageRange;

    @Schema(description = "难度等级", example = "beginner")
    private String difficultyLevel;

    @Schema(description = "时长（分钟）", example = "30")
    private Integer durationMinutes;

    @Schema(description = "教学目标", example = "培养幼儿阅读兴趣")
    private String objectives;

    // ============================================
    // 课程包重构字段
    // ============================================

    @Schema(description = "核心内容", example = "绘本阅读指导")
    private String coreContent;

    // 课程介绍（8个字段）
    @Schema(description = "课程摘要", example = "本课程通过绘本阅读培养幼儿语言能力")
    private String introSummary;

    @Schema(description = "课程亮点", example = "互动式教学，趣味性强")
    private String introHighlights;

    @Schema(description = "课程目标", example = "提升幼儿阅读理解能力")
    private String introGoals;

    @Schema(description = "内容安排", example = "每周 2 课时，共 16 周")
    private String introSchedule;

    @Schema(description = "重点难点", example = "培养幼儿自主阅读习惯")
    private String introKeyPoints;

    @Schema(description = "教学方法", example = "情景教学、互动游戏")
    private String introMethods;

    @Schema(description = "评估方法", example = "过程性评估与终结性评估结合")
    private String introEvaluation;

    @Schema(description = "注意事项", example = "关注个体差异")
    private String introNotes;

    // 课表参考数据
    @Schema(description = "课表参考数据（JSON）", example = "{}")
    private String scheduleRefData;

    // 环境创设（步骤7）
    @Schema(description = "环境创设内容", example = "阅读角布置")
    private String environmentConstruction;

    // 主题与绘本
    @Schema(description = "主题ID")
    private String themeId;

    @Schema(description = "绘本名称", example = "三只小猪")
    private String pictureBookName;

    // 数字资源
    @Schema(description = "电子书路径（JSON数组）")
    private String ebookPaths;

    @Schema(description = "音频路径（JSON数组）")
    private String audioPaths;

    @Schema(description = "视频路径（JSON数组）")
    private String videoPaths;

    @Schema(description = "其他资源（JSON数组）")
    private String otherResources;

    // 教学材料
    @Schema(description = "PPT文件路径")
    private String pptPath;

    @Schema(description = "PPT文件名")
    private String pptName;

    @Schema(description = "海报路径（JSON数组）")
    private String posterPaths;

    @Schema(description = "教具（JSON数组）")
    private String tools;

    @Schema(description = "学生材料", example = "练习册、画笔")
    private String studentMaterials;

    // 教案、活动、评估
    @Schema(description = "教案数据（JSON）", example = "{}")
    private String lessonPlanData;

    @Schema(description = "活动数据（JSON）", example = "{}")
    private String activitiesData;

    @Schema(description = "评估数据（JSON）", example = "{}")
    private String assessmentData;

    // 标签
    @Schema(description = "年级标签（JSON数组）")
    private String gradeTags;

    @Schema(description = "领域标签（JSON数组）")
    private String domainTags;

    // 集体课
    @Schema(description = "是否有集体课", example = "true")
    private Boolean hasCollectiveLesson;

}
