package com.erp.ai.service;

import com.erp.ai.dto.AIChatRequest;
import com.erp.ai.dto.AIChatResponse;
import com.erp.ai.entity.AIConversation;
import com.erp.ai.entity.AIMessage;
import com.erp.common.core.model.PageResponse;

import java.util.List;
import java.util.Map;

/**
 * AI助手服务接口
 */
public interface AIAssistantService {

    /**
     * 发送对话消息
     *
     * @param userId    用户ID
     * @param request   聊天请求
     * @return 聊天响应
     */
    AIChatResponse chat(Long userId, AIChatRequest request);

    /**
     * 执行AI任务
     *
     * @param userId    用户ID
     * @param task      任务类型
     * @param parameters 任务参数
     * @return 任务结果
     */
    Map<String, Object> executeTask(Long userId, String task, Map<String, Object> parameters);

    /**
     * 获取对话列表
     *
     * @param userId    用户ID
     * @param status    状态筛选（可选）
     * @param keyword   关键字搜索（可选）
     * @param page      页码
     * @param limit     每页数量
     * @return 分页响应
     */
    PageResponse<AIConversation> getConversations(Long userId, String status, String keyword, Integer page, Integer limit);

    /**
     * 获取对话详情
     *
     * @param userId    用户ID
     * @param id        对话ID
     * @return 对话详情（包含消息列表）
     */
    AIConversation getConversation(Long userId, Long id);

    /**
     * 删除对话
     *
     * @param userId    用户ID
     * @param id        对话ID
     */
    void deleteConversation(Long userId, Long id);

    /**
     * 清空对话消息
     *
     * @param userId    用户ID
     * @param id        对话ID
     */
    void clearConversation(Long userId, Long id);

    /**
     * 获取AI能力列表
     *
     * @return 能力列表
     */
    List<Map<String, Object>> getCapabilities();

    /**
     * 获取使用统计
     *
     * @param userId    用户ID
     * @return 统计数据
     */
    Map<String, Object> getUsageStatistics(Long userId);
}
