UPGRADE 10-12-2025

This commit is contained in:
PAVEL PALMA
2025-12-10 20:24:34 -06:00
parent 5d859078d8
commit 84bb14c126
5 changed files with 276 additions and 10 deletions

View File

@@ -5,6 +5,7 @@
package com.example.controller;
import com.example.dto.dialogflow.base.DetectIntentResponseDTO;
import com.example.dto.quickreplies.QuickReplyScreenRequestDTO;
import com.example.service.quickreplies.QuickRepliesManagerService;
import jakarta.validation.Valid;
@@ -29,9 +30,8 @@ public class QuickRepliesController {
}
@PostMapping("/screen")
public Mono<Map<String, String>> startSessionAndGetReplies(@Valid @RequestBody QuickReplyScreenRequestDTO request) {
public Mono<DetectIntentResponseDTO> startSessionAndGetReplies(@Valid @RequestBody QuickReplyScreenRequestDTO request) {
return quickRepliesManagerService.startQuickReplySession(request)
.map(response -> Map.of("responseId", response.responseId()))
.doOnSuccess(response -> logger.info("Successfully processed quick reply request"))
.doOnError(error -> logger.error("Error processing quick reply request: {}", error.getMessage(), error));
}

View File

@@ -23,6 +23,8 @@ public class ConversationContextMapper {
private static final int MAX_HISTORY_BYTES = 50 * 1024; // 50 KB
private static final String NOTIFICATION_TEXT_PARAM = "notification_text";
public String toText(ConversationSessionDTO session, List<ConversationMessageDTO> messages) {
if (messages == null || messages.isEmpty()) {
return "";
@@ -75,23 +77,34 @@ public class ConversationContextMapper {
private String formatEntry(ConversationMessageDTO entry) {
String prefix = "User: ";
String content = entry.text();
if (entry.type() != null) {
switch (entry.type()) {
case MessageType.AGENT:
case AGENT:
prefix = "Agent: ";
break;
case MessageType.SYSTEM:
case SYSTEM:
prefix = "System: ";
// fix: add notification in the conversation.
if (entry.parameters() != null && entry.parameters().containsKey(NOTIFICATION_TEXT_PARAM)) {
Object paramText = entry.parameters().get(NOTIFICATION_TEXT_PARAM);
if (paramText != null && !paramText.toString().isBlank()) {
content = paramText.toString();
}
}
break;
case MessageType.USER:
case LLM:
prefix = "System: ";
break;
case USER:
default:
prefix = "User: ";
break;
}
}
String text = prefix + entry.text();
String text = prefix + content;
if (entry.type() == MessageType.AGENT) {
text = cleanAgentMessage(text);

View File

@@ -7,6 +7,7 @@ import java.lang.reflect.Method;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -118,4 +119,30 @@ public class ConversationContextMapperTest {
private ConversationMessageDTO createMessage(String text, MessageType type) {
return new ConversationMessageDTO(type, Instant.now(), text, null, null);
}
@Test
public void testToTextFromMessages_SystemNotification_ShouldUseParamText() {
ConversationContextMapper mapper = new ConversationContextMapper();
Map<String, Object> params = new java.util.HashMap<>();
params.put("notification_text", "Tu estado de cuenta está listo");
ConversationMessageDTO systemMessage = new ConversationMessageDTO(
MessageType.SYSTEM,
Instant.now(),
"NOTIFICATION",
params,
"whatsapp"
);
List<ConversationMessageDTO> messages = new java.util.ArrayList<>();
messages.add(systemMessage);
// WHEN
String result = mapper.toTextFromMessages(messages);
System.out.println(result);
// THEN
assertEquals("System: Tu estado de cuenta está listo", result);
}
}