package com.reading.platform.dto.response;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 课程响应DTO
 */
@Data
@Schema(description = "课程响应")
public class CourseResponse {

    @Schema(description = "课程ID")
    private String id;

    @Schema(description = "租户ID")
    private String tenantId;

    @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 status;

    @Schema(description = "是否系统课程")
    private Integer isSystem;

    // ============================================
    // 课程包字段
    // ============================================

    @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 Integer hasCollectiveLesson;

    // 版本与审核
    @Schema(description = "版本")
    private String version;

    @Schema(description = "父ID")
    private String parentId;

    @Schema(description = "是否最新")
    private Integer isLatest;

    @Schema(description = "提交时间")
    private LocalDateTime submittedAt;

    @Schema(description = "提交人")
    private Long submittedBy;

    @Schema(description = "审核时间")
    private LocalDateTime reviewedAt;

    @Schema(description = "审核人")
    private Long reviewedBy;

    @Schema(description = "审核意见")
    private String reviewComment;

    @Schema(description = "审核清单")
    private String reviewChecklist;

    @Schema(description = "发布时间")
    private LocalDateTime publishedAt;

    // 使用统计
    @Schema(description = "使用次数")
    private Integer usageCount;

    @Schema(description = "教师数")
    private Integer teacherCount;

    @Schema(description = "平均评分")
    private BigDecimal avgRating;

    @Schema(description = "创建人")
    private Long createdBy;

    @Schema(description = "创建时间")
    private LocalDateTime createdAt;

    @Schema(description = "更新时间")
    private LocalDateTime updatedAt;

}
