package com.sundot.airport.exam.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sundot.airport.common.dto.CategoryAccuracyItemDto;
import com.sundot.airport.common.dto.ModuleStatisticsDTO;
import com.sundot.airport.exam.domain.DailyTaskDetail;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * <b>功能名：</b>DailyTaskDetailMapper<br>
 * <b>说明：</b> 每日答题任务明细Mapper <br>
 * <b>著作权：</b> Copyright (C) 2025 SUNDOT CORPORATION<br>
 * <b>修改履历：
 *
 * @author Simon Lin
 */
@Mapper
public interface DailyTaskDetailMapper extends BaseMapper<DailyTaskDetail> {

    /**
     * 统计用户在指定时间范围内的错题数（按二级分类）
     *
     * @param userId    用户ID
     * @param startDate 开始日期
     * @param endDate   结束日期
     * @return 错题统计列表
     */
    List<ModuleStatisticsDTO> countWrongAnswersByModule(
            @Param("userId") Long userId,
            @Param("startDate") Date startDate,
            @Param("endDate") Date endDate
    );

    /**
     * 按题目分类统计全站正确率（用于抽问抽答正确率分析）
     *
     * @param startDate 开始日期（yyyy-MM-dd字符串）
     * @param endDate   结束日期（yyyy-MM-dd字符串）
     * @return 各分类正确率列表
     */
    List<CategoryAccuracyItemDto> selectCorrectRateByCategory(
            @Param("startDate") String startDate,
            @Param("endDate") String endDate
    );
}
