package com.sundot.airport.exam.service;

/**
 * <b>功能名：</b>IDailyTaskGenerationService<br>
 * <b>说明：</b> 每日任务生成Service <br>
 * <b>著作权：</b> Copyright (C) 2025 SUNDOT CORPORATION<br>
 * <b>修改履历：
 *
 * @author Simon Lin
 */
public interface IDailyTaskGenerationService {

    /**
     * 处理考勤打卡事件，生成每日答题任务
     * <p>
     * 业务规则：
     * 1. 判断是否为业务日期内首次打卡（业务日期：7:00-次日6:59）
     * 2. 遍历用户的所有角色，收集所有匹配的有效配置，并选择最新的配置
     * 3. 调用组题算法生成题目
     * 4. 计算每题分值（100分均分，最后一题补齐小数）
     * 5. 创建任务记录和任务明细
     * </p>
     *
     * @param userId 用户ID
     * @param deptId 部门ID
     */
    void handleClockInEvent(Long userId, Long deptId);

    /**
     * 判断用户是否已有当天的答题任务
     *
     * @param userId 用户ID
     * @return true-已有任务，false-无任务
     */
    boolean hasTaskToday(Long userId);
}
