package com.seer.teach.teacher.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.seer.teach.common.PageListBean;
import com.seer.teach.common.cache.dto.CorrectResultDTO;
import com.seer.teach.teacher.common.req.CorrectReq;
import com.seer.teach.teacher.common.req.GradingTasksPageListReq;
import com.seer.teach.teacher.common.resp.GradingTasksPageListResp;
import com.seer.teach.teacher.module.entity.GradingTasksEntity;
import org.springframework.web.multipart.MultipartFile;
import reactor.core.publisher.Flux;

/**
 * GradingTasksService接口定义了评分任务相关的业务操作
 * 继承自IService<GradingTasksEntity>，提供了评分任务实体的基本服务功能
 */
public interface GradingTasksService extends IService<GradingTasksEntity> {

    /**
     * 获取评分任务分页列表
     *
     * @param device 设备标识，用于区分不同设备的请求
     * @param param  评分任务分页查询参数对象，包含分页信息和查询条件
     * @return 返回评分任务分页列表结果，封装在PageListBean中
     */
    PageListBean<GradingTasksPageListResp> getGradingTasks(GradingTasksPageListReq param);

    /**
     * 执行批改操作
     *
     * @param device 设备标识，用于区分不同设备的请求
     * @param params 批改请求参数对象，包含批改所需的各种参数
     * @return 返回批改结果的响应式流，包含CorrectResultDTO类型的批改结果数据
     */
    Flux<CorrectResultDTO> correct(String imageUrl);

    /**
     * 请求上传图片
     * 该方法用于触发上传图片的提示或操作
     */
    void pleaseUploadImage();

}
