| | |
| | | import com.vincent.rsf.server.ai.service.AiMcpMountService; |
| | | import com.vincent.rsf.server.ai.service.AiParamService; |
| | | import com.vincent.rsf.server.ai.service.AiPromptService; |
| | | import com.vincent.rsf.framework.exception.CoolException; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.StringUtils; |
| | |
| | | private final AiPromptService aiPromptService; |
| | | private final AiMcpMountService aiMcpMountService; |
| | | |
| | | /** |
| | | * 按租户解析一次完整的 AI 运行配置。 |
| | | * 该方法是对话入口、运行态摘要和配置中心共用的统一解析点, |
| | | * 负责把当前生效的参数、Prompt 和 MCP 挂载聚合成一个不可再拆分的配置对象。 |
| | | */ |
| | | @Override |
| | | public AiResolvedConfig resolve(String promptCode) { |
| | | public AiResolvedConfig resolve(String promptCode, Long tenantId) { |
| | | if (tenantId == null) { |
| | | throw new CoolException("当前租户不存在"); |
| | | } |
| | | String finalPromptCode = StringUtils.hasText(promptCode) ? promptCode : AiDefaults.DEFAULT_PROMPT_CODE; |
| | | return AiResolvedConfig.builder() |
| | | .promptCode(finalPromptCode) |
| | | .aiParam(aiParamService.getActiveParam()) |
| | | .prompt(aiPromptService.getActivePrompt(finalPromptCode)) |
| | | .mcpMounts(aiMcpMountService.listActiveMounts()) |
| | | .aiParam(aiParamService.getActiveParam(tenantId)) |
| | | .prompt(aiPromptService.getActivePrompt(finalPromptCode, tenantId)) |
| | | .mcpMounts(aiMcpMountService.listActiveMounts(tenantId)) |
| | | .build(); |
| | | } |
| | | } |