package com.lesingle.edu.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

/**
 * 课程实体
 */
@Schema(description = "课程实体")
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("lesson")
public class Lesson extends BaseEntity {

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

    @Schema(description = "课程 ID")
    private Long courseId;

    @Schema(description = "班级 ID")
    private Long classId;

    @Schema(description = "教师 ID")
    private Long teacherId;

    @Schema(description = "排课计划 ID")
    private Long schedulePlanId;

    @Schema(description = "课程标题")
    private String title;

    @Schema(description = "上课日期")
    private LocalDate lessonDate;

    @Schema(description = "开始时间")
    private LocalTime startTime;

    @Schema(description = "结束时间")
    private LocalTime endTime;

    @Schema(description = "计划上课时间")
    private LocalDateTime plannedDatetime;

    @Schema(description = "实际上课开始时间")
    private LocalDateTime startDatetime;

    @Schema(description = "实际上课结束时间")
    private LocalDateTime endDatetime;

    @Schema(description = "实际时长 (分钟)")
    private Integer actualDuration;

    @Schema(description = "上课地点")
    private String location;

    @Schema(description = "状态")
    private String status;

    @Schema(description = "整体评价")
    private String overallRating;

    @Schema(description = "参与度评价")
    private String participationRating;

    @Schema(description = "完成说明")
    private String completionNote;

    @Schema(description = "进度数据 (JSON)")
    private String progressData;

    @Schema(description = "当前课程 ID")
    private Integer currentLessonId;

    @Schema(description = "当前步骤 ID")
    private Integer currentStepId;

    @Schema(description = "课程 ID 列表 (JSON)")
    private String lessonIds;

    @Schema(description = "已完成课程 ID 列表 (JSON)")
    private String completedLessonIds;

    @Schema(description = "备注")
    private String notes;

}
