package com.lesingle.edu.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 = "课程名称")
    private String name;

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

    @Schema(description = "描述")
    private String description;

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

    @Schema(description = "封面图片路径")
    private String coverImagePath;

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

    @Schema(description = "年龄范围")
    private String ageRange;

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

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

    @Schema(description = "教学目标")
    private String objectives;

    // ============================================
    // 课程套餐重构字段
    // ============================================

    @Schema(description = "核心内容")
    private String coreContent;

    // 课程介绍（8 个字段）
    @Schema(description = "课程摘要")
    private String introSummary;

    @Schema(description = "课程亮点")
    private String introHighlights;

    @Schema(description = "课程目标")
    private String introGoals;

    @Schema(description = "内容安排")
    private String introSchedule;

    @Schema(description = "重点难点")
    private String introKeyPoints;

    @Schema(description = "教学方法")
    private String introMethods;

    @Schema(description = "评估方法")
    private String introEvaluation;

    @Schema(description = "注意事项")
    private String introNotes;

    // 进度安排参考数据
    @Schema(description = "进度安排参考数据（JSON）")
    private String scheduleRefData;

    // 环境创设（第 7 步）
    @Schema(description = "环境创设内容")
    private String environmentConstruction;

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

    @Schema(description = "绘本名称")
    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 = "学生材料")
    private String studentMaterials;

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

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

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

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

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

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

    @Schema(description = "初始状态：DRAFT 草稿、UNSUBMITTED 未提交，默认草稿")
    private String status;

}
