package cn.stylefeng.team.project.modular.filing.service;

import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.team.project.modular.filing.entity.BusinessAiParseLog;
import cn.stylefeng.team.project.modular.filing.pojo.aidesign.aiparse.ParseToBusinessResult;
import cn.stylefeng.team.project.modular.filing.pojo.businessAiParseLog.del.BusinessAiParseLogBatchDelRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessAiParseLog.del.BusinessAiParseLogDelRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessAiParseLog.edit.BusinessAiParseLogEditRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessAiParseLog.query.BusinessAiParseLogDetailRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessAiParseLog.query.BusinessAiParseLogListRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessAiParseLog.query.BusinessAiParseLogPageRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessAiParseLog.response.BusinessAiParseLogDetailResponse;
import cn.stylefeng.team.project.modular.filing.pojo.businessAiParseLog.response.BusinessAiParseLogListResponse;
import cn.stylefeng.team.project.modular.filing.pojo.businessAiParseLog.response.BusinessAiParseLogPageResponse;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

public interface BusinessAiParseLogService extends IService<BusinessAiParseLog> {

    BusinessAiParseLog add(Long businessId, Long originExcelFileId, Long originPicFileId);

    void del(BusinessAiParseLogDelRequest businessAiParseLogDelRequest);

    void batchDelete(BusinessAiParseLogBatchDelRequest businessAiParseLogBatchDelRequest);

    void edit(BusinessAiParseLogEditRequest businessAiParseLogEditRequest);

    BusinessAiParseLogDetailResponse detail(BusinessAiParseLogDetailRequest businessAiParseLogDetailRequest);

    List<BusinessAiParseLogListResponse> findList(BusinessAiParseLogListRequest businessAiParseLogListRequest);

    PageResult<BusinessAiParseLogPageResponse> findPage(BusinessAiParseLogPageRequest businessAiParseLogPageRequest);

    BusinessAiParseLogDetailResponse customDetail(BusinessAiParseLogDetailRequest businessAiParseLogDetailRequest);

    List<BusinessAiParseLogListResponse> customList(BusinessAiParseLogListRequest businessAiParseLogListRequest);

    PageResult<BusinessAiParseLogPageResponse> customPage(BusinessAiParseLogPageRequest businessAiParseLogPageRequest);

    void updateErrorLog(Throwable throwable, BusinessAiParseLog businessAiParseLog);

    void updateSuccessLog(BusinessAiParseLog businessAiParseLog, String aiResponseString, ParseToBusinessResult parseBusinessResult);

    void updateStopLog(Long aiParseLogId);

    boolean validateAiParseCanContinue(Long aiParseLogId);

}