From 66d766c88ec5d1ab4715fd9f2c22ce42b459d957 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期四, 02 四月 2026 18:32:20 +0800
Subject: [PATCH] #

---
 rsf-server/src/test/java/com/vincent/rsf/server/AI/service/impl/chat/AiPromptMessageBuilderTest.java |   61 ++++++++++++++++--------------
 1 files changed, 32 insertions(+), 29 deletions(-)

diff --git a/rsf-server/src/test/java/com/vincent/rsf/server/AI/service/impl/chat/AiPromptMessageBuilderTest.java b/rsf-server/src/test/java/com/vincent/rsf/server/AI/service/impl/chat/AiPromptMessageBuilderTest.java
index 41cd3c0..ee0b87b 100644
--- a/rsf-server/src/test/java/com/vincent/rsf/server/AI/service/impl/chat/AiPromptMessageBuilderTest.java
+++ b/rsf-server/src/test/java/com/vincent/rsf/server/AI/service/impl/chat/AiPromptMessageBuilderTest.java
@@ -4,59 +4,62 @@
 import com.vincent.rsf.server.ai.dto.AiChatMessageDto;
 import com.vincent.rsf.server.ai.entity.AiPrompt;
 import org.junit.jupiter.api.Test;
+import org.springframework.ai.chat.messages.AssistantMessage;
 import org.springframework.ai.chat.messages.Message;
 import org.springframework.ai.chat.messages.SystemMessage;
 import org.springframework.ai.chat.messages.UserMessage;
 
 import java.util.List;
-import java.util.Map;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertInstanceOf;
+import static org.assertj.core.api.Assertions.assertThat;
 
 class AiPromptMessageBuilderTest {
 
-    private final AiPromptMessageBuilder builder = new AiPromptMessageBuilder();
+    private final AiPromptMessageBuilder aiPromptMessageBuilder = new AiPromptMessageBuilder();
 
     @Test
-    void shouldBuildPromptMessagesInExpectedOrderAndRenderLastUserPrompt() {
+    void shouldMergeAllSystemContextIntoSingleLeadingSystemMessage() {
         AiChatMemoryDto memory = AiChatMemoryDto.builder()
-                .memorySummary("summary")
-                .memoryFacts("facts")
+                .memorySummary("杩欐槸鎽樿")
+                .memoryFacts("杩欐槸浜嬪疄")
                 .build();
         AiPrompt prompt = new AiPrompt()
-                .setSystemPrompt("system")
-                .setUserPromptTemplate("鐢ㄦ埛闂: {{input}} | 浠撳簱: {{warehouse}}");
-        List<AiChatMessageDto> messages = List.of(
-                message("user", "old question"),
-                message("assistant", "old answer"),
-                message("user", "latest question")
+                .setSystemPrompt("浣犳槸鍔╂墜")
+                .setUserPromptTemplate("璇峰洖绛旓細{{input}}");
+
+        List<Message> messages = aiPromptMessageBuilder.buildPromptMessages(
+                memory,
+                List.of(
+                        message("user", "绗竴闂�"),
+                        message("assistant", "绗竴绛�"),
+                        message("user", "绗簩闂�")
+                ),
+                prompt,
+                null
         );
 
-        List<Message> built = builder.buildPromptMessages(memory, messages, prompt, Map.of("warehouse", "WH1"));
-
-        assertEquals(6, built.size());
-        assertInstanceOf(SystemMessage.class, built.get(0));
-        assertEquals("system", built.get(0).getText());
-        assertEquals("鍘嗗彶鎽樿:\nsummary", built.get(1).getText());
-        assertEquals("鍏抽敭浜嬪疄:\nfacts", built.get(2).getText());
-        assertInstanceOf(UserMessage.class, built.get(3));
-        assertEquals("old question", built.get(3).getText());
-        assertEquals("old answer", built.get(4).getText());
-        assertInstanceOf(UserMessage.class, built.get(5));
-        assertEquals("鐢ㄦ埛闂: latest question | 浠撳簱: WH1", built.get(5).getText());
+        assertThat(messages).hasSize(4);
+        assertThat(messages.get(0)).isInstanceOf(SystemMessage.class);
+        assertThat(messages.get(1)).isInstanceOf(UserMessage.class);
+        assertThat(messages.get(2)).isInstanceOf(AssistantMessage.class);
+        assertThat(messages.get(3)).isInstanceOf(UserMessage.class);
+        assertThat(((SystemMessage) messages.get(0)).getText())
+                .contains("浣犳槸鍔╂墜")
+                .contains("鍘嗗彶鎽樿:\n杩欐槸鎽樿")
+                .contains("鍏抽敭浜嬪疄:\n杩欐槸浜嬪疄");
+        assertThat(((UserMessage) messages.get(3)).getText()).isEqualTo("璇峰洖绛旓細绗簩闂�");
     }
 
     @Test
     void shouldMergePersistedAndMemoryMessages() {
-        List<AiChatMessageDto> merged = builder.mergeMessages(
+        List<AiChatMessageDto> merged = aiPromptMessageBuilder.mergeMessages(
                 List.of(message("user", "persisted")),
                 List.of(message("assistant", "memory"))
         );
 
-        assertEquals(2, merged.size());
-        assertEquals("persisted", merged.get(0).getContent());
-        assertEquals("memory", merged.get(1).getContent());
+        assertThat(merged).hasSize(2);
+        assertThat(merged.get(0).getContent()).isEqualTo("persisted");
+        assertThat(merged.get(1).getContent()).isEqualTo("memory");
     }
 
     private AiChatMessageDto message(String role, String content) {

--
Gitblit v1.9.1