From 1724f77c35022b643c28dd3e5547679a5edc2d49 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期二, 17 三月 2026 14:17:26 +0800
Subject: [PATCH] Merge branch 'springboot3.5_cs' into spring3.5
---
rsf-server/src/main/java/com/vincent/rsf/server/ai/service/AiGatewayClient.java | 20 +++++++++++++++++++-
1 files changed, 19 insertions(+), 1 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/ai/service/AiGatewayClient.java b/rsf-server/src/main/java/com/vincent/rsf/server/ai/service/AiGatewayClient.java
index b41bb2d..6899022 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/ai/service/AiGatewayClient.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/ai/service/AiGatewayClient.java
@@ -6,8 +6,9 @@
import com.vincent.rsf.server.ai.dto.GatewayChatRequest;
import org.springframework.stereotype.Component;
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
import java.io.BufferedReader;
+import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
@@ -24,11 +25,20 @@
private ObjectMapper objectMapper;
public interface StreamCallback {
+ /**
+ * 澶勭悊缃戝叧杩斿洖鐨勪竴鏉� NDJSON 浜嬩欢銆�
+ * 杩斿洖 true 琛ㄧず缁х画娑堣垂鍚庣画浜嬩欢锛岃繑鍥� false 琛ㄧず涓诲姩鍋滄鏈娴佽鍙栥��
+ */
boolean handle(JsonNode event) throws Exception;
}
+ /**
+ * 璋冪敤 AI 缃戝叧鐨勫唴閮ㄦ祦寮忔帴鍙o紝骞跺皢缃戝叧杩斿洖鐨勪簨浠堕�愭潯鍥炶皟缁欎笂灞傜紪鎺掗�昏緫銆�
+ * 杩欓噷灞忚斀浜� HTTP 缁嗚妭锛岃皟鐢ㄦ柟鍙渶瑕佸叧娉� delta / done / error 浜嬩欢鏈韩銆�
+ */
public void stream(GatewayChatRequest request, StreamCallback callback) throws Exception {
HttpURLConnection connection = null;
+ boolean terminalEventReceived = false;
try {
String url = aiProperties.getGatewayBaseUrl() + "/internal/chat/stream";
connection = (HttpURLConnection) new URL(url).openConnection();
@@ -53,10 +63,17 @@
continue;
}
JsonNode event = objectMapper.readTree(line);
+ String type = event.path("type").asText();
+ if ("done".equals(type) || "error".equals(type)) {
+ terminalEventReceived = true;
+ }
if (!callback.handle(event)) {
break;
}
}
+ }
+ if (!terminalEventReceived) {
+ throw new IOException("AI缃戝叧娴佸紓甯镐腑鏂�");
}
} finally {
if (connection != null) {
@@ -66,3 +83,4 @@
}
}
+
--
Gitblit v1.9.1