liuchengsen пре 1 месец
родитељ
комит
39bcc033f1

+ 21 - 20
backend-java/src/main/java/com/pharmacopoeia/controller/ChatController.java

@@ -68,8 +68,8 @@ public class ChatController {
             String intent = (String) cached.getOrDefault("intent", "");
             @SuppressWarnings("unchecked")
             List<Map<String, Object>> sources = (List<Map<String, Object>>) cached.getOrDefault("sources", List.of());
-            persistenceService.saveMessage(getCurrentUserKey(), cid, "user", query, intent, null);
-            persistenceService.saveMessage(getCurrentUserKey(), cid, "assistant", answer, intent, sources);
+            persistenceService.saveMessage(userKey, cid, "user", query, intent, null);
+            persistenceService.saveMessage(userKey, cid, "assistant", answer, intent, sources);
             return ResponseEntity.ok(Map.of(
                     "answer", answer,
                     "sources", sources,
@@ -87,8 +87,8 @@ public class ChatController {
                 String intent = (String) waited.getOrDefault("intent", "");
                 @SuppressWarnings("unchecked")
                 List<Map<String, Object>> sources = (List<Map<String, Object>>) waited.getOrDefault("sources", List.of());
-                persistenceService.saveMessage(getCurrentUserKey(), cid, "user", query, intent, null);
-                persistenceService.saveMessage(getCurrentUserKey(), cid, "assistant", answer, intent, sources);
+                persistenceService.saveMessage(userKey, cid, "user", query, intent, null);
+                persistenceService.saveMessage(userKey, cid, "assistant", answer, intent, sources);
                 return ResponseEntity.ok(Map.of(
                         "answer", answer, "sources", sources, "intent", intent,
                         "conversation_id", cid, "cached", true
@@ -106,8 +106,8 @@ public class ChatController {
         String answer = llmAnswer;
 
         List<Map<String, Object>> sources = buildSources(docs);
-        persistenceService.saveMessage(getCurrentUserKey(), cid, "user", query, intent, null);
-        persistenceService.saveMessage(getCurrentUserKey(), cid, "assistant", answer, intent, sources);
+        persistenceService.saveMessage(userKey, cid, "user", query, intent, null);
+        persistenceService.saveMessage(userKey, cid, "assistant", answer, intent, sources);
 
         // 写入全局缓存
         qaCache.put(normalized, answer, intent, sources);
@@ -122,6 +122,7 @@ public class ChatController {
 
     @PostMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
     public Flux<ServerSentEvent<String>> chatStream(@RequestBody ChatRequest request) {
+        final String userKey = getCurrentUserKey();
         String query = request.getMessage();
         String normalized = qaCache.normalize(query);
         final String cid = request.getConversationId() != null && !request.getConversationId().isBlank()
@@ -173,8 +174,8 @@ public class ChatController {
                                 } catch (Exception ignored) {}
 
                                 String finalAnswer = cleanAnswer(fullAnswer.toString());
-                                persistenceService.saveMessage(getCurrentUserKey(), cid, "user", query, intent, null);
-                                persistenceService.saveMessage(getCurrentUserKey(), cid, "assistant", finalAnswer, intent, sources);
+                                persistenceService.saveMessage(userKey, cid, "user", query, intent, null);
+                                persistenceService.saveMessage(userKey, cid, "assistant", finalAnswer, intent, sources);
 
                                 // 写入全局缓存
                                 qaCache.put(normalized, finalAnswer, intent, sources);
@@ -196,8 +197,8 @@ public class ChatController {
         @SuppressWarnings("unchecked")
         List<Map<String, Object>> sources = (List<Map<String, Object>>) cached.getOrDefault("sources", List.of());
 
-        persistenceService.saveMessage(getCurrentUserKey(), cid, "user", query, intent, null);
-        persistenceService.saveMessage(getCurrentUserKey(), cid, "assistant", answer, intent, sources);
+        persistenceService.saveMessage(userKey, cid, "user", query, intent, null);
+        persistenceService.saveMessage(userKey, cid, "assistant", answer, intent, sources);
 
         return Flux.create(sink -> {
             sink.next(ServerSentEvent.<String>builder().event("intent").data(intent).build());
@@ -250,10 +251,10 @@ public class ChatController {
         String answer = llmAnswer;
 
         List<Map<String, Object>> sources = buildSources(docs);
-        persistenceService.saveMessage(getCurrentUserKey(), cid, "user",
+        persistenceService.saveMessage(userKey, cid, "user",
                 request.getMessage().isBlank() ? "[图片]" : "[图片] " + request.getMessage(),
                 intent, null);
-        persistenceService.saveMessage(getCurrentUserKey(), cid, "assistant", answer, intent, sources);
+        persistenceService.saveMessage(userKey, cid, "assistant", answer, intent, sources);
 
         return ResponseEntity.ok(Map.of(
                 "answer", answer,
@@ -327,10 +328,10 @@ public class ChatController {
                                             } catch (Exception ignored) {}
 
                                             String finalAnswer = cleanAnswer(fullAnswer.toString());
-                                            persistenceService.saveMessage(getCurrentUserKey(), cid, "user",
+                                            persistenceService.saveMessage(userKey, cid, "user",
                                                     request.getMessage().isBlank() ? "[图片]" : "[图片] " + request.getMessage(),
                                                     intent, null);
-                                            persistenceService.saveMessage(getCurrentUserKey(), cid, "assistant", finalAnswer, intent, sources);
+                                            persistenceService.saveMessage(userKey, cid, "assistant", finalAnswer, intent, sources);
                                             sink.tryEmitComplete();
                                         })
                                         .doOnError(sink::tryEmitError)
@@ -395,8 +396,8 @@ public class ChatController {
         List<Map<String, Object>> sources = buildSources(docs);
         String userMsg = !request.getMessage().isBlank() ? request.getMessage()
                 : !ocrText.isEmpty() ? "[" + mediaLabel + "]" : request.getMessage();
-        persistenceService.saveMessage(getCurrentUserKey(), cid, "user", userMsg, intent, null);
-        persistenceService.saveMessage(getCurrentUserKey(), cid, "assistant", answer, intent, sources);
+        persistenceService.saveMessage(userKey, cid, "user", userMsg, intent, null);
+        persistenceService.saveMessage(userKey, cid, "assistant", answer, intent, sources);
 
         return ResponseEntity.ok(Map.of(
                 "answer", answer,
@@ -590,8 +591,8 @@ public class ChatController {
                                 String finalAnswer = cleanAnswer(fullAnswer.toString());
                                 String userMsg = !request.getMessage().isBlank() ? request.getMessage()
                                         : !ocrText.isEmpty() ? "[" + mediaLabel + "]" : "";
-                                persistenceService.saveMessage(getCurrentUserKey(), cid, "user", userMsg, intent, null);
-                                persistenceService.saveMessage(getCurrentUserKey(), cid, "assistant", finalAnswer, intent, sources);
+                                persistenceService.saveMessage(userKey, cid, "user", userMsg, intent, null);
+                                persistenceService.saveMessage(userKey, cid, "assistant", finalAnswer, intent, sources);
                                 sink.tryEmitComplete();
                             })
                             .doOnError(sink::tryEmitError)
@@ -604,7 +605,7 @@ public class ChatController {
             @RequestParam(defaultValue = "1") int page,
             @RequestParam(defaultValue = "20") int pageSize) {
         // getHistory 现在直接返回包含 items/page/page_size/total/total_pages 的 Map
-        var result = persistenceService.getHistory(getCurrentUserKey(), page, pageSize);
+        var result = persistenceService.getHistory(userKey, page, pageSize);
         return ResponseEntity.ok(result);
     }
 
@@ -618,7 +619,7 @@ public class ChatController {
     @GetMapping("/recent-messages")
     public ResponseEntity<Map<String, Object>> getRecentMessages(
             @RequestParam(defaultValue = "50") int limit) {
-        var msgs = persistenceService.getRecentMessages(getCurrentUserKey(), Math.min(limit, 200));
+        var msgs = persistenceService.getRecentMessages(userKey, Math.min(limit, 200));
         return ResponseEntity.ok(Map.of("messages", msgs));
     }