package com.easyproject.clientbus.service.chat;

import com.easyproject.clientbus.domain.dto.LikeOrStepOnDto;
import com.easyproject.common.core.domain.AjaxClientResult;
import org.springframework.web.multipart.MultipartFile;
import reactor.core.publisher.Flux;

import java.io.IOException;

/**
 * 方法说明: 聊天部分
 * @param
 * @return
 * @author java-101
 * @date 2025-03-23 15:11:08
 */
public interface IChatAiService {

    /**
     * 方法说明: 发起消息-通过流式返回-coze平台
     * @param message 用户输入的消息
     * @param conversationId 会话ID
     * @return 流式返回的消息
     * @author java-101
     * @date 2025-03-23 15:16:05
     */
    Flux<String> chatSendStream(String message, String conversationId);

    /**
     * 方法说明: 语音转文字
     * @param
     * @return
     * @author java-101
     * @date 2025-03-23 19:13:23
     */
    AjaxClientResult transcribeAudio(MultipartFile file) throws IOException;

    /**
     * 方法说明: 文字转语音
     * @param
     * @return
     * @author java-101
     * @date 2025-03-23 21:06:07
     */
    AjaxClientResult textToSpeech(String text);

    /**
     * 方法说明: 对话点赞/踩
     * @param
     * @return
     * @author java-101
     * @date 2025-04-10 15:43:05
     */
    AjaxClientResult likeOrStepOn(LikeOrStepOnDto dto);

    /**
     * 方法说明: 获取扣子token
     * @param
     * @return
     * @author java-101
     * @date 2025-05-10 15:07:50
     */
    AjaxClientResult getFeedbackToken();
}
