package com.sundot.airport.exam.dto;

import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * <b>功能名：</b>UserStatisticsDTO<br>
 * <b>说明：</b> 用户统计数据DTO <br>
 * <b>著作权：</b> Copyright (C) 2025 SUNDOT CORPORATION<br>
 * <b>修改履历：
 *
 * @author Simon Lin
 */
@Data
public class UserStatisticsDTO {

    /**
     * 总任务数
     */
    private Integer totalTasks;

    /**
     * 已完成任务数
     */
    private Integer completedTasks;

    /**
     * 待完成任务数
     */
    private Integer pendingTasks;

    /**
     * 已逾期任务数
     */
    private Integer expiredTasks;

    /**
     * 总答题数
     */
    private Integer totalQuestions;

    /**
     * 正确题数
     */
    private Integer correctQuestions;

    /**
     * 总正确率
     */
    private BigDecimal overallCorrectRate;

    /**
     * 平均得分
     */
    private BigDecimal averageScore;

    /**
     * 最高分
     */
    private BigDecimal highestScore;

    /**
     * 最低分
     */
    private BigDecimal lowestScore;

    /**
     * 薄弱模块列表
     */
    private List<ModuleStatistics> weakModules;

    /**
     * 所有模块统计
     */
    private List<ModuleStatistics> allModules;

    @Data
    public static class ModuleStatistics {

        /**
         * 模块ID
         */
        private String moduleId;

        /**
         * 模块名称
         */
        private String moduleName;

        /**
         * 总答题数
         */
        private Integer totalCount;

        /**
         * 正确数
         */
        private Integer correctCount;

        /**
         * 正确率
         */
        private BigDecimal correctRate;

        /**
         * 最近3次总数
         */
        private Integer last3Total;

        /**
         * 最近3次正确数
         */
        private Integer last3Correct;

        /**
         * 最近3次正确率
         */
        private BigDecimal last3Rate;

        /**
         * 是否为薄弱模块
         */
        private Boolean isWeak;
    }
}
