package com.sundot.airport.exam.service;

import com.sundot.airport.exam.dto.StartTaskDTO;
import com.sundot.airport.exam.dto.SubmitAnswerDTO;
import com.sundot.airport.exam.dto.SubmitResultDTO;

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

    /**
     * 开始答题
     * <p>
     * 业务规则：
     * 1. 验证任务归属（只能答自己的题）
     * 2. 验证任务状态（只能答待答题的任务）
     * 3. 更新任务状态为"答题中"
     * 4. 记录开始时间
     * 5. 返回题目列表和剩余时间
     * </p>
     *
     * @param userId 用户ID
     * @param taskId 任务ID
     * @return 答题信息
     */
    StartTaskDTO startTask(Long userId, String taskId);

    /**
     * 提交答案
     * <p>
     * 业务规则：
     * 1. 验证任务归属和状态
     * 2. 判断题目正误
     * 3. 计算得分
     * 4. 记录答题记录
     * 5. 更新任务状态为"已完成"
     * 6. 更新薄弱模块分析数据
     * 7. 返回答题结果
     * </p>
     *
     * @param userId 用户ID
     * @param dto 提交答案DTO
     * @return 答题结果
     */
    SubmitResultDTO submitAnswer(Long userId, SubmitAnswerDTO dto);

    /**
     * 获取任务剩余时间
     *
     * @param userId 用户ID
     * @param taskId 任务ID
     * @return 剩余时间（秒），如果任务未开始或已结束返回null
     */
    Integer getRemainingTime(Long userId, String taskId);
}
