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

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.OptimizePromptReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.PromptTemplatesPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.PromptTemplatesRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.PromptTemplatesSaveReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplates.PromptTemplatesDO;

import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.Map;

public interface PromptTemplatesService {
    Long createPromptTemplates (@Valid PromptTemplatesSaveReqVO createReqVO);

    void updatePromptTemplates (@Valid PromptTemplatesSaveReqVO updateReqVO);

    /**
     * 删除 Prompt模板
     *
     * @param id id
     */
    void deletePromptTemplates (Long id);

    PromptTemplatesRespVO getPromptTemplates (Long id);

    PageResult<PromptTemplatesRespVO> getPromptTemplatesPage (PromptTemplatesPageReqVO pageReqVO);

    void exportPromptTemplatesExcel (PromptTemplatesPageReqVO pageReqVO,
                                     HttpServletResponse response) throws Exception;

    void backupPromptTemplates (@Valid PromptTemplatesSaveReqVO updateReqVO);

    void unbackupPromptTemplates (PromptTemplatesSaveReqVO updateReqVO);

    void updatePromptTemplatesById (@Valid PromptTemplatesDO promptTemplatesDO);

    /**
     * Prompt优化
     *
     * @param reqVO reqVO
     * @return 优化后的内容
     */
    String optimizePrompt (@Valid OptimizePromptReqVO reqVO);

    /**
     * 根据 标签id 获取 模版
     *
     * @param labelId 标签id
     * @return 模版
     */
    Map<Long, String> getPromptTemplateByLabelId (Long labelId);

    /**
     * 根据 应用id 获取 模版
     *
     * @param applicationId 应用id
     * @return 模版
     */
    Map<Long, String> getPromptTemplateByAppId (Long applicationId);
}
