From 05148eeef860d33232874a640dbd67ba43ac5686 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期四, 19 三月 2026 12:51:49 +0800
Subject: [PATCH] #AI.配置中心可运营化

---
 rsf-server/src/main/java/com/vincent/rsf/server/ai/service/impl/AiParamServiceImpl.java |   43 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 43 insertions(+), 0 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/ai/service/impl/AiParamServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/ai/service/impl/AiParamServiceImpl.java
index 07715d5..957c7b0 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/ai/service/impl/AiParamServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/ai/service/impl/AiParamServiceImpl.java
@@ -4,15 +4,23 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.ai.config.AiDefaults;
+import com.vincent.rsf.server.ai.dto.AiParamValidateResultDto;
 import com.vincent.rsf.server.ai.entity.AiParam;
 import com.vincent.rsf.server.ai.mapper.AiParamMapper;
 import com.vincent.rsf.server.ai.service.AiParamService;
 import com.vincent.rsf.server.system.enums.StatusType;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
 @Service("aiParamService")
+@RequiredArgsConstructor
 public class AiParamServiceImpl extends ServiceImpl<AiParamMapper, AiParam> implements AiParamService {
+
+    private final AiParamValidationSupport aiParamValidationSupport;
 
     @Override
     public AiParam getActiveParam(Long tenantId) {
@@ -35,6 +43,7 @@
         fillDefaults(aiParam);
         ensureBaseFields(aiParam);
         ensureSingleActive(tenantId, null, aiParam.getStatus());
+        applyValidation(aiParam);
     }
 
     @Override
@@ -48,6 +57,15 @@
         aiParam.setTenantId(current.getTenantId());
         ensureBaseFields(aiParam);
         ensureSingleActive(tenantId, aiParam.getId(), aiParam.getStatus());
+        applyValidation(aiParam);
+    }
+
+    @Override
+    public AiParamValidateResultDto validateDraft(AiParam aiParam, Long tenantId) {
+        ensureTenantId(tenantId);
+        fillDefaults(aiParam);
+        ensureBaseFields(aiParam);
+        return aiParamValidationSupport.validate(aiParam);
     }
 
     private void ensureBaseFields(AiParam aiParam) {
@@ -118,8 +136,33 @@
         if (aiParam.getStreamingEnabled() == null) {
             aiParam.setStreamingEnabled(Boolean.TRUE);
         }
+        if (!StringUtils.hasText(aiParam.getValidateStatus())) {
+            aiParam.setValidateStatus(AiDefaults.PARAM_VALIDATE_NOT_TESTED);
+        }
         if (aiParam.getStatus() == null) {
             aiParam.setStatus(StatusType.ENABLE.val);
         }
     }
+
+    private void applyValidation(AiParam aiParam) {
+        AiParamValidateResultDto validateResult = aiParamValidationSupport.validate(aiParam);
+        aiParam.setValidateStatus(validateResult.getStatus());
+        aiParam.setLastValidateMessage(validateResult.getMessage());
+        aiParam.setLastValidateElapsedMs(validateResult.getElapsedMs());
+        aiParam.setLastValidateTime(parseDate(validateResult.getValidatedAt()));
+        if (!AiDefaults.PARAM_VALIDATE_VALID.equals(validateResult.getStatus())) {
+            throw new CoolException(validateResult.getMessage());
+        }
+    }
+
+    private Date parseDate(String dateTime) {
+        if (!StringUtils.hasText(dateTime)) {
+            return null;
+        }
+        try {
+            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(dateTime);
+        } catch (Exception e) {
+            throw new CoolException("瑙f瀽鏍¢獙鏃堕棿澶辫触: " + e.getMessage());
+        }
+    }
 }

--
Gitblit v1.9.1