package cn.iocoder.yudao.module.llm.service.modelassesstaskmanualbackup;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskauto.vo.ModelAssessTaskAutoPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskauto.vo.ModelAssessTaskAutoRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnswerPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ManualAssessmentPageRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ManualEvaluationReportRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanualbackup.vo.ManualModelAnswerBackupPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanualbackup.vo.ModelAssessTaskManualBackupPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanualbackup.vo.ModelAssessTaskManualBackupRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanualbackup.vo.ModelAssessTaskManualBackupSaveReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanualbackup.ModelAssessTaskManualBackupDO;

import javax.validation.Valid;
import java.util.List;
import java.util.Map;

/**
 * 人工评估备份 Service 接口
 *
 * @author 华大大模型
 */
public interface ModelAssessTaskManualBackupService {

    /**
     * 创建人工评估备份
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createModelAssessTaskManualBackup (@Valid ModelAssessTaskManualBackupSaveReqVO createReqVO);

    /**
     * 更新人工评估备份
     *
     * @param updateReqVO 更新信息
     */
    void updateModelAssessTaskManualBackup (@Valid ModelAssessTaskManualBackupSaveReqVO updateReqVO);

    /**
     * 删除人工评估备份
     *
     * @param id 编号
     */
    void deleteModelAssessTaskManualBackup (Long id);

    /**
     * 获得人工评估备份
     *
     * @param id 编号
     * @return 人工评估备份
     */
    ModelAssessTaskManualBackupDO getModelAssessTaskManualBackup (Long id);

    /**
     * 获得人工评估备份分页
     *
     * @param pageReqVO 分页查询
     * @return 人工评估备份分页
     */
    PageResult<ModelAssessTaskManualBackupDO> getModelAssessTaskManualBackupPage (ModelAssessTaskManualBackupPageReqVO pageReqVO);

    void isBackup (Long srcId);

    void unBackup (Long id);

    ModelAssessTaskManualBackupRespVO getModelAssessTaskManualBackup1 (Long id);

    List<ManualEvaluationReportRespVO> gitViewTheReportDetails (Long id);

    PageResult<ModelAssessTaskAutoRespVO> getModelAssessTaskAutoPage1 (ModelAssessTaskAutoPageReqVO pageReqVO);

    ModelAssessTaskAutoRespVO getModelAssessTaskAuto (Long id);

    PageResult<ModelAssessTaskManualBackupRespVO> getModelAssessTaskManualPage1 (ModelAssessTaskManualBackupPageReqVO pageReqVO);

    // 备份导出列表查询
    PageResult<ManualAssessmentPageRespVO> getManualAssessment (ManualModelAnswerBackupPageReqVO pageReqVO);

    List<String> queryTheEvaluationType (ManualModelAnswerPageReqVO pageReqVO);

    /**
     * 根据 基础模型id 获取 人工评估备份
     *
     * @param baseModelId 基础模型id
     * @return 人工评估备份
     */
    Map<Long, String> getModelAssessmentTaskByModelId (Long baseModelId);

    /**
     * 根据 模型服务 id 获取 人工评估备份
     *
     * @param modelServiceId 模型服务 id
     * @return 人工评估备份备份
     */
    Map<Long, String> getModelAssessmentTaskByModelServiceId (Long modelServiceId);

    /**
     * 根据 数据集 id 获取 人工评估备份
     *
     * @param datasetId 数据集 id
     * @return 人工评估备份
     */
    Map<Long, String> getModelAssessmentTaskByDatasetId (Long datasetId);
}
