package org.xyzh.api.ai.agent;

import org.xyzh.common.core.domain.ResultDomain;
import org.xyzh.common.dto.ai.TbAiAgentConfig;


/**
 * @description 智能体配置服务接口
 * @filename AiAgentConfigService.java
 * @author yslg
 * @copyright xyzh
 * @since 2025-10-15
 */
public interface AiAgentConfigService {

    /**
     * @description 获取智能体配置列表
     * @param status 状态（可选）
     * @return ResultDomain<TbAiAgentConfig> 配置列表
     * @author yslg
     * @since 2025-10-15
     */
    ResultDomain<TbAiAgentConfig> getAgentConfigList(Integer status);

    /**
     * @description 根据ID获取智能体配置详情
     * @param configID 配置ID
     * @return ResultDomain<TbAiAgentConfig> 配置详情
     * @author yslg
     * @since 2025-10-15
     */
    ResultDomain<TbAiAgentConfig> getAgentConfigById(String configID);

    /**
     * @description 创建智能体配置
     * @param config 配置信息
     * @return ResultDomain<TbAiAgentConfig> 创建结果
     * @author yslg
     * @since 2025-10-15
     */
    ResultDomain<TbAiAgentConfig> createAgentConfig(TbAiAgentConfig config);

    /**
     * @description 更新智能体配置
     * @param config 配置信息
     * @return ResultDomain<TbAiAgentConfig> 更新结果
     * @author yslg
     * @since 2025-10-15
     */
    ResultDomain<TbAiAgentConfig> updateAgentConfig(TbAiAgentConfig config);

    /**
     * @description 删除智能体配置
     * @param configID 配置ID
     * @return ResultDomain<Boolean> 删除结果
     * @author yslg
     * @since 2025-10-15
     */
    ResultDomain<Boolean> deleteAgentConfig(String configID);

    /**
     * @description 更新智能体状态
     * @param configID 配置ID
     * @param status 状态
     * @return ResultDomain<TbAiAgentConfig> 更新结果
     * @author yslg
     * @since 2025-10-15
     */
    ResultDomain<TbAiAgentConfig> updateAgentStatus(String configID, Integer status);

    /**
     * @description 更新智能体模型配置
     * @param configID 配置ID
     * @param modelName 模型名称
     * @param modelProvider 模型提供商
     * @param temperature 温度值
     * @param maxTokens 最大tokens
     * @param topP Top P值
     * @return ResultDomain<TbAiAgentConfig> 更新结果
     * @author yslg
     * @since 2025-10-15
     */
    ResultDomain<TbAiAgentConfig> updateAgentModel(String configID, String modelName, String modelProvider, 
                                                   java.math.BigDecimal temperature, Integer maxTokens, java.math.BigDecimal topP);

    /**
     * @description 更新智能体系统提示词
     * @param configID 配置ID
     * @param systemPrompt 系统提示词
     * @return ResultDomain<TbAiAgentConfig> 更新结果
     * @author yslg
     * @since 2025-10-15
     */
    ResultDomain<TbAiAgentConfig> updateAgentPrompt(String configID, String systemPrompt);

    /**
     * @description 获取启用的智能体配置
     * @return ResultDomain<TbAiAgentConfig> 启用的配置列表
     * @author yslg
     * @since 2025-10-15
     */
    ResultDomain<TbAiAgentConfig> getActiveAgentConfigs();

    /**
     * @description 根据名称搜索智能体配置
     * @param name 智能体名称
     * @return ResultDomain<TbAiAgentConfig> 搜索结果
     * @author yslg
     * @since 2025-10-15
     */
    ResultDomain<TbAiAgentConfig> searchAgentConfigsByName(String name);
}
