package com.sundot.airport.exam.service;

import com.sundot.airport.exam.dto.NotifyTaskDTO;

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

    /**
     * 处理逾期任务
     * <p>
     * 业务规则：
     * 1. 查询所有待答题和答题中的任务
     * 2. 判断业务日期是否已经结束（当前时间 >= 业务日期后第5天7:00）
     * 3. 将逾期任务状态更新为"已逾期"
     * 4. 设置实际得分为0
     * </p>
     *
     * @return 处理的逾期任务数量
     */
    int processExpiredTasks();

    /**
     * 通知用户完成逾期任务
     *
     * @param dto 通知参数（包含任务ID、通知类型、消息内容）
     * @return 是否通知成功
     */
    boolean notifyExpiredTask(NotifyTaskDTO dto);

    /**
     * 批量通知用户完成逾期任务
     *
     * @param dto 通知参数（包含任务ID列表、通知类型、消息内容）
     * @return 成功通知的数量
     */
    int batchNotifyExpiredTasks(NotifyTaskDTO dto);
}
