Skip to content

Commit 297cfc1

Browse files
committed
fix: resolve Spring Boot 4 CI failures and DeepSeek reasoning_content error
- Recreate AppHealthControllerTest using WebTestClient.bindToController() (@WebFluxTest removed in SB4) - Fix DeepSeek thinking mode: pass reasoningContent via DeepSeekAssistantMessage in history - Remove duplicate aws-java-sdk-s3 dependency in pom.xml
1 parent 0ff26b6 commit 297cfc1

3 files changed

Lines changed: 37 additions & 12 deletions

File tree

pom.xml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,6 @@
6666
<scope>provided</scope>
6767
</dependency>
6868

69-
<dependency>
70-
<groupId>com.amazonaws</groupId>
71-
<artifactId>aws-java-sdk-s3</artifactId>
72-
<version>1.12.701</version>
73-
</dependency>
74-
7569
<dependency>
7670
<groupId>org.springframework.boot</groupId>
7771
<artifactId>spring-boot-starter-data-r2dbc</artifactId>

src/main/java/run/runnable/kage/service/DeepSeekService.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -344,12 +344,15 @@ private List<Message> buildMessages(List<ChatMessage> history, String userMessag
344344
if ("user".equals(msg.getRole())) {
345345
messages.add(new UserMessage(msg.getContent()));
346346
} else if ("assistant".equals(msg.getRole())) {
347-
// DeepSeek V4 thinking 模型:如果有 reasoning_content,使用 DeepSeekAssistantMessage
348-
// 注意:Spring AI 1.1.0 的 DeepSeekChatModel.createRequest() 有 bug,
349-
// 它在构造 ChatCompletionMessage 时没有传递 reasoningContent 参数。
350-
// 所以即使我们传了 DeepSeekAssistantMessage,也不会被序列化到请求中。
351-
// 解决方案:暂时不使用 DeepSeekAssistantMessage,等 Spring AI 修复后再启用。
352-
messages.add(new AssistantMessage(msg.getContent()));
347+
String reasoningContent = msg.getReasoningContent();
348+
if (reasoningContent != null && !reasoningContent.isEmpty()) {
349+
messages.add(DeepSeekAssistantMessage.builder()
350+
.content(msg.getContent())
351+
.reasoningContent(reasoningContent)
352+
.build());
353+
} else {
354+
messages.add(new AssistantMessage(msg.getContent()));
355+
}
353356
}
354357
});
355358

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package run.runnable.kage.controller;
2+
3+
import org.junit.jupiter.api.Test;
4+
import org.springframework.test.util.ReflectionTestUtils;
5+
import org.springframework.test.web.reactive.server.WebTestClient;
6+
7+
class AppHealthControllerTest {
8+
9+
@Test
10+
void testHealthCheck() {
11+
AppHealthController controller = new AppHealthController();
12+
ReflectionTestUtils.setField(controller, "version", "0.0.1-SNAPSHOT");
13+
14+
WebTestClient.bindToController(controller)
15+
.build()
16+
.get()
17+
.uri("/hl/check")
18+
.exchange()
19+
.expectStatus().isOk()
20+
.expectBody()
21+
.jsonPath("$.status").isEqualTo(200)
22+
.jsonPath("$.message").isEqualTo("Success")
23+
.jsonPath("$.data").value(data -> {
24+
assert data instanceof String;
25+
assert ((String) data).contains("I am fine");
26+
});
27+
}
28+
}

0 commit comments

Comments
 (0)