package com.yushu.system.service;

import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import java.util.List;
import java.util.Map;

/**
 * AI对话Service接口（简化版，基于AiService）
 * 
 * @author yushu
 */
public interface IAiChatService {
    /**
     * 发送消息（非流式）
     * 
     * @param serviceId AI服务ID
     * @param message 用户消息
     * @param conversationId 会话ID（可选）
     * @param thinkingType 深度思考模式（可选）
     * @return 响应结果
     */
    Map<String, Object> sendMessage(Long serviceId, String message, Long conversationId, String thinkingType) throws Exception;

    /**
     * 发送消息（流式）
     * 
     * @param serviceId AI服务ID
     * @param message 用户消息
     * @param conversationId 会话ID（可选）
     * @param thinkingType 深度思考模式（可选）
     * @param enableSearch 是否启用联网搜索（可选）
     * @param images 图片数据（base64 JSON数组，可选）
     * @param fileUrls 文件URL（JSON数组，可选）
     * @return SSE发射器
     */
    SseEmitter streamMessage(Long serviceId, String message, Long conversationId, String thinkingType, Boolean enableSearch, String images, String fileUrls) throws Exception;

    /**
     * 获取会话历史
     * 
     * @param conversationId 会话ID
     * @return 消息列表
     */
    List<Map<String, Object>> getConversationHistory(Long conversationId);

    /**
     * 创建新会话
     * 
     * @param serviceId AI服务ID
     * @param title 会话标题
     * @return 会话信息
     */
    Map<String, Object> createConversation(Long serviceId, String title);

    /**
     * 获取用户的所有会话
     * 
     * @return 会话列表
     */
    List<Map<String, Object>> getUserConversations();

    /**
     * 删除会话
     * 
     * @param conversationId 会话ID
     * @return 结果
     */
    int deleteConversation(Long conversationId);
}

