package com.fs.statis.dto;

import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;

import java.io.Serializable; // DTOs 通常建议实现 Serializable

/**
 * 课程统计数据传输对象 (DTO).
 * <p>
 * 用于封装课程相关的用户统计数据，如观看人数、完成人数等，以及课程的基本信息。
 * </p>
 *
 * @author xdd
 * @since 2025-02-27 // 通常使用 @since 标记版本或首次添加日期
 * @version 1.0
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CourseStatsDTO implements Serializable {

    private static final long serialVersionUID = 1L; // Serializable 建议添加 serialVersionUID

    /**
     * 观看用户数
     * <p>统计有多少不同的用户观看了该课程（或其部分内容）。</p>
     */
    private Integer watchUserCount;

    /**
     * 完成用户数
     * <p>统计有多少不同的用户完成了该课程的学习要求。</p>
     */
    private Integer completedUserCount;

    /**
     * 答题用户数
     * <p>统计有多少不同的用户参与了该课程相关的答题活动。</p>
     */
    private Integer answerUserCount;

    /**
     * 答对用户数
     * <p>统计有多少不同的用户在答题活动中至少答对了一定数量或比例的题目（具体定义取决于业务逻辑）。</p>
     * <p><b>注意：</b>也可能指完全答对所有题目的用户数，需根据实际业务场景确认。</p>
     */
    private Integer correctUserCount;

    /**
     * 课程ID
     * <p>课程的唯一标识符。</p>
     */
    private Long courseId; // 假设课程ID是长整型，如果可能是其他类型（如String），请修改

    /**
     * 课程名称
     * <p>课程的标题或名称。</p>
     */
    private String courseName;

}
