package com.sundot.airport.exam.service;

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

import java.util.List;

/**
 * <b>功能名：</b>IQuestionSelectionService<br>
 * <b>说明：</b> 组题算法Service <br>
 * <b>著作权：</b> Copyright (C) 2025 SUNDOT CORPORATION<br>
 * <b>修改履历：
 *
 * @author Simon Lin
 */
public interface IQuestionSelectionService {

    /**
     * 为用户生成一套题目（当前使用简单随机算法）
     *
     * @param userId 用户ID
     * @param questionCount 题目数量
     * @return 题目列表
     */
    List<Ques> generateQuestions(Long userId, int questionCount);

    /**
     * 简单随机抽题算法：从所有题目中随机抽取
     *
     * @param questionCount 题目数量
     * @return 题目列表
     */
    List<Ques> generateQuestionsRandomly(int questionCount);

    /**
     * 无历史成绩场景：跨模块随机选题
     *
     * @param questionCount 题目数量
     * @return 题目列表
     */
    List<Ques> generateQuestionsWithoutHistory(int questionCount);

    /**
     * 有历史成绩场景：按薄弱模块60%+非薄弱模块40%组题
     *
     * @param userId 用户ID
     * @param questionCount 题目数量
     * @return 题目列表
     */
    List<Ques> generateQuestionsWithHistory(Long userId, int questionCount);

    /**
     * 判断用户是否有足够的历史答题记录（至少3次）
     *
     * @param userId 用户ID
     * @return true-有历史记录，false-无历史记录
     */
    boolean hasEnoughHistory(Long userId);
}
