liuchengsen 3 tygodni temu
rodzic
commit
65e9174395

+ 7 - 5
backend-java/src/main/java/com/pharmacopoeia/controller/ChatController.java

@@ -147,7 +147,7 @@ public class ChatController {
     }
 
     @PostMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
-    public Flux<ServerSentEvent<String>> chatStream(@RequestBody ChatRequest request) {
+    public Flux<ServerSentEvent<String>> chatStream(@RequestBody ChatRequest request, HttpServletRequest servletRequest) {
         final String userKey = getCurrentUserKey();
         String query = request.getMessage();
         String normalized = qaCache.normalize(query);
@@ -171,9 +171,9 @@ public class ChatController {
 
         final String intent = retrieverService.classifyIntent(query);
         final long t0 = System.currentTimeMillis();
-        final String chatRequestId = request.getHeader("X-Request-Id");
-        final String chatIp = IpUtils.getClientIp(request);
-        final String chatUa = request.getHeader("User-Agent");
+        final String chatRequestId = servletRequest.getHeader("X-Request-Id");
+        final String chatIp = IpUtils.getClientIp(servletRequest);
+        final String chatUa = servletRequest.getHeader("User-Agent");
         final java.util.Map<String, Long> timings = new java.util.concurrent.ConcurrentHashMap<>();
         log.info("[chatStream] intent={}, query={}", intent, query.substring(0, Math.min(50, query.length())));
 
@@ -909,7 +909,9 @@ public class ChatController {
             ed.put("request_id", requestId != null ? requestId : "");
             ed.put("total_ms", total);
             ed.put("status", status);
-            if (timings != null && !timings.isEmpty()) ed.putAll(timings);
+            if (timings != null && !timings.isEmpty()) {
+                ed.putAll(timings);
+            }
             analyticsService.saveEvent(userKey, "chat_stream_server", ed, "", "", ip, ua, "AI药典");
         } catch (Exception ignored) {
             // 埋点失败不影响主流程