From f98c8bc665875e1e7795a332d8d0e7fd9e50fda1 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 12 三月 2026 11:18:26 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/ai/service/WcsDiagnosisService.java |   54 +++++++++++-------------------------------------------
 1 files changed, 11 insertions(+), 43 deletions(-)

diff --git a/src/main/java/com/zy/ai/service/WcsDiagnosisService.java b/src/main/java/com/zy/ai/service/WcsDiagnosisService.java
index 189e57d..83f0380 100644
--- a/src/main/java/com/zy/ai/service/WcsDiagnosisService.java
+++ b/src/main/java/com/zy/ai/service/WcsDiagnosisService.java
@@ -5,13 +5,12 @@
 import com.zy.ai.entity.ChatCompletionRequest;
 import com.zy.ai.entity.ChatCompletionResponse;
 import com.zy.ai.entity.WcsDiagnosisRequest;
-import com.zy.ai.mcp.controller.McpController;
+import com.zy.ai.mcp.service.SpringAiMcpToolManager;
 import com.zy.ai.utils.AiPromptUtils;
 import com.zy.ai.utils.AiUtils;
 import com.zy.common.utils.RedisUtil;
 import com.zy.core.enums.RedisKeyType;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -28,8 +27,6 @@
 
     private static final long CHAT_TTL_SECONDS = 7L * 24 * 3600;
 
-    @Value("${llm.platform}")
-    private String platform;
     @Autowired
     private LlmChatService llmChatService;
     @Autowired
@@ -39,9 +36,7 @@
     @Autowired
     private AiUtils aiUtils;
     @Autowired(required = false)
-    private McpController mcpController;
-    @Autowired
-    private PythonService pythonService;
+    private SpringAiMcpToolManager mcpToolManager;
 
     public void diagnoseStream(WcsDiagnosisRequest request, SseEmitter emitter) {
         List<ChatCompletionRequest.Message> messages = new ArrayList<>();
@@ -85,7 +80,7 @@
             try {
                 try { emitter.send(SseEmitter.event().data("銆怉I銆戣繍琛屽凡鍋滄锛堝紓甯革級")); } catch (Exception ignore) {}
                 log.error("AI diagnose stream stopped: error", e);
-                emitter.completeWithError(e);
+                emitter.complete();
             } catch (Exception ignore) {}
         });
     }
@@ -95,11 +90,6 @@
                           String chatId,
                           boolean reset,
                           SseEmitter emitter) {
-        if (platform.equals("python")) {
-            pythonService.runPython(prompt, chatId, emitter);
-            return;
-        }
-
         List<ChatCompletionRequest.Message> messages = new ArrayList<>();
 
         List<ChatCompletionRequest.Message> history = null;
@@ -187,7 +177,10 @@
                 emitter.complete();
             } catch (Exception ignore) {}
         }, e -> {
-            try { emitter.completeWithError(e); } catch (Exception ignore) {}
+            try {
+                try { emitter.send(SseEmitter.event().data("銆怉I銆戣繍琛屽凡鍋滄锛堝紓甯革級")); } catch (Exception ignore) {}
+                emitter.complete();
+            } catch (Exception ignore) {}
         });
     }
 
@@ -264,8 +257,8 @@
                                              SseEmitter emitter,
                                              String chatId) {
         try {
-            if (mcpController == null) return false;
-            List<Object> tools = buildOpenAiTools();
+            if (mcpToolManager == null) return false;
+            List<Object> tools = mcpToolManager.buildOpenAiTools();
             if (tools.isEmpty()) return false;
 
             baseMessages.add(systemPrompt);
@@ -310,7 +303,7 @@
                     }
                     Object output;
                     try {
-                        output = mcpController.callTool(toolName, args);
+                        output = mcpToolManager.callTool(toolName, args);
                     } catch (Exception e) {
                         java.util.LinkedHashMap<String, Object> err = new java.util.LinkedHashMap<String, Object>();
                         err.put("tool", toolName);
@@ -380,7 +373,7 @@
             try {
                 sse(emitter, "\\n\\n銆怉I銆戣繍琛屽凡鍋滄锛堝紓甯革級\\n\\n");
                 log.error("AI MCP diagnose stopped: error", e);
-                emitter.completeWithError(e);
+                emitter.complete();
             } catch (Exception ignore) {}
             return true;
         }
@@ -393,31 +386,6 @@
         } catch (Exception e) {
             log.warn("SSE send failed", e);
         }
-    }
-
-    private List<Object> buildOpenAiTools() {
-        if (mcpController == null) return java.util.Collections.emptyList();
-        List<Map<String, Object>> mcpTools = mcpController.listTools();
-        if (mcpTools == null || mcpTools.isEmpty()) return java.util.Collections.emptyList();
-
-        List<Object> tools = new ArrayList<>();
-        for (Map<String, Object> t : mcpTools) {
-            if (t == null) continue;
-            Object name = t.get("name");
-            if (name == null) continue;
-            Object inputSchema = t.get("inputSchema");
-            java.util.LinkedHashMap<String, Object> function = new java.util.LinkedHashMap<String, Object>();
-            function.put("name", String.valueOf(name));
-            Object desc = t.get("description");
-            if (desc != null) function.put("description", String.valueOf(desc));
-            function.put("parameters", inputSchema == null ? new java.util.LinkedHashMap<String, Object>() : inputSchema);
-
-            java.util.LinkedHashMap<String, Object> tool = new java.util.LinkedHashMap<String, Object>();
-            tool.put("type", "function");
-            tool.put("function", function);
-            tools.add(tool);
-        }
-        return tools;
     }
 
     private void sendLargeText(SseEmitter emitter, String text) {

--
Gitblit v1.9.1