package com.vincent.rsf.server.ai.service.impl;
|
|
import com.vincent.rsf.server.ai.config.AiDefaults;
|
import com.vincent.rsf.server.ai.dto.AiConfigSummaryDto;
|
import com.vincent.rsf.server.ai.dto.AiPromptPreviewDto;
|
import com.vincent.rsf.server.ai.dto.AiPromptPreviewRequest;
|
import com.vincent.rsf.server.ai.entity.AiMcpMount;
|
import com.vincent.rsf.server.ai.dto.AiResolvedConfig;
|
import com.vincent.rsf.server.ai.service.AiConfigOpsService;
|
import com.vincent.rsf.server.ai.service.AiConfigResolverService;
|
import com.vincent.rsf.server.ai.service.AiMcpMountService;
|
import com.vincent.rsf.server.ai.service.AiPromptService;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.StringUtils;
|
|
import java.util.List;
|
|
@Service
|
@RequiredArgsConstructor
|
public class AiConfigOpsServiceImpl implements AiConfigOpsService {
|
|
private final AiConfigResolverService aiConfigResolverService;
|
private final AiPromptRenderSupport aiPromptRenderSupport;
|
private final AiPromptService aiPromptService;
|
|
@Override
|
public AiConfigSummaryDto getSummary(String promptCode, Long tenantId) {
|
String finalPromptCode = StringUtils.hasText(promptCode) ? promptCode : AiDefaults.DEFAULT_PROMPT_CODE;
|
AiResolvedConfig resolvedConfig = aiConfigResolverService.resolve(finalPromptCode, tenantId);
|
List<AiMcpMount> mounts = resolvedConfig.getMcpMounts();
|
return AiConfigSummaryDto.builder()
|
.promptCode(resolvedConfig.getPrompt().getCode())
|
.promptName(resolvedConfig.getPrompt().getName())
|
.promptScene(resolvedConfig.getPrompt().getScene())
|
.activeParamName(resolvedConfig.getAiParam().getName())
|
.activeModel(resolvedConfig.getAiParam().getModel())
|
.activeParamUpdatedAt(resolvedConfig.getAiParam().getUpdateTime$())
|
.activeParamUpdatedBy(resolvedConfig.getAiParam().getUpdateBy())
|
.activeParamValidateStatus(resolvedConfig.getAiParam().getValidateStatus())
|
.activeParamValidateMessage(resolvedConfig.getAiParam().getLastValidateMessage())
|
.activeParamValidatedAt(resolvedConfig.getAiParam().getLastValidateTime$())
|
.enabledMcpCount(mounts.size())
|
.enabledMcpNames(mounts.stream().map(AiMcpMount::getName).toList())
|
.activePromptUpdatedAt(resolvedConfig.getPrompt().getUpdateTime$())
|
.activePromptUpdatedBy(resolvedConfig.getPrompt().getUpdateBy())
|
.build();
|
}
|
|
@Override
|
public AiPromptPreviewDto renderPromptPreview(AiPromptPreviewRequest request, Long tenantId) {
|
return aiPromptService.renderPreview(request, tenantId);
|
}
|
}
|