package com.sundot.airport.exam.service;

import com.sundot.airport.exam.domain.WeakModuleAnalysis;

import java.util.List;

/**
 * <b>功能名：</b>IWeakModuleAnalysisService<br>
 * <b>说明：</b> 薄弱模块分析Service <br>
 * <b>著作权：</b> Copyright (C) 2025 SUNDOT CORPORATION<br>
 * <b>修改履历：
 *
 * @author Simon Lin
 */
public interface IWeakModuleAnalysisService {

    /**
     * 更新用户的薄弱模块分析数据
     * <p>
     * 业务规则：
     * 1. 统计每个模块的总答题数、正确数、正确率
     * 2. 统计最近3次该模块的答题数、正确数、正确率
     * 3. 判断是否为薄弱模块（最近3次正确率 < 60%）
     * 4. 更新或插入薄弱模块分析记录
     * </p>
     *
     * @param userId 用户ID
     */
    void updateUserWeakModuleAnalysis(Long userId);

    /**
     * 查询用户的薄弱模块列表
     *
     * @param userId 用户ID
     * @return 薄弱模块列表（按最近3次正确率升序）
     */
    List<WeakModuleAnalysis> getUserWeakModules(Long userId);

    /**
     * 查询用户所有模块的分析数据
     *
     * @param userId 用户ID
     * @return 所有模块分析数据
     */
    List<WeakModuleAnalysis> getAllModuleAnalysis(Long userId);
}
