From febf9f940225664d3b4c6340909a9e89d03bea05 Mon Sep 17 00:00:00 2001 From: KARLA ITZEL SALADO Date: Thu, 11 Dec 2025 16:13:37 +0000 Subject: [PATCH] Revert "UPDATE 06-nov" This reverts commit 5d859078d8ca8c20552acee183a9553b158f6e4d --- .../service/base/MessageEntryFilter.java | 1 + .../ConversationManagerService.java | 36 ++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/example/service/base/MessageEntryFilter.java b/src/main/java/com/example/service/base/MessageEntryFilter.java index 171812b..b84e126 100644 --- a/src/main/java/com/example/service/base/MessageEntryFilter.java +++ b/src/main/java/com/example/service/base/MessageEntryFilter.java @@ -119,6 +119,7 @@ public class MessageEntryFilter { yield CATEGORY_UNKNOWN; } }; + resultCategory = CATEGORY_CONVERSATION; return resultCategory; } catch (Exception e) { logger.error("An error occurred during Gemini content generation for message classification.", e); diff --git a/src/main/java/com/example/service/conversation/ConversationManagerService.java b/src/main/java/com/example/service/conversation/ConversationManagerService.java index 611f86d..da10103 100644 --- a/src/main/java/com/example/service/conversation/ConversationManagerService.java +++ b/src/main/java/com/example/service/conversation/ConversationManagerService.java @@ -161,7 +161,40 @@ public class ConversationManagerService { String userMessageText = request.queryInput().text().text(); final ConversationContext context = new ConversationContext(resolvedUserId, null, userMessageText, primaryPhoneNumber); - return continueConversationFlow(context, request); + return handleMessageClassification(context, request); + } + + private Mono handleMessageClassification(ConversationContext context, + DetectIntentRequestDTO request) { + final String userPhoneNumber = context.primaryPhoneNumber(); + final String userMessageText = context.userMessageText(); + + return memoryStoreConversationService.getSessionByTelefono(userPhoneNumber) + .flatMap(session -> memoryStoreConversationService.getMessages(session.sessionId()).collectList() + .map(conversationContextMapper::toTextFromMessages) + .defaultIfEmpty("") + .flatMap(conversationHistory -> { + return memoryStoreNotificationService.getNotificationIdForPhone(userPhoneNumber) + .flatMap(notificationId -> memoryStoreNotificationService + .getCachedNotificationSession(notificationId)) + .map(notificationSession -> notificationSession.notificaciones().stream() + .filter(notification -> "active".equalsIgnoreCase(notification.status())) + .max(java.util.Comparator.comparing(NotificationDTO::timestampCreacion)) + .orElse(null)) + .filter(Objects::nonNull) + .flatMap((NotificationDTO notification) -> { + String notificationText = notificationContextMapper.toText(notification); + String classification = messageEntryFilter.classifyMessage(userMessageText, + notificationText, conversationHistory); + if (MessageEntryFilter.CATEGORY_NOTIFICATION.equals(classification)) { + return startNotificationConversation(context, request, notification); + } else { + return continueConversationFlow(context, request); + } + }) + .switchIfEmpty(continueConversationFlow(context, request)); + })) + .switchIfEmpty(continueConversationFlow(context, request)); } private Mono continueConversationFlow(ConversationContext context, @@ -324,6 +357,7 @@ public class ConversationManagerService { String resolvedContext = notificationContextResolver.resolveContext(userMessageText, notificationText, conversationHistory, filteredParams.toString(), userId, sessionId, userPhoneNumber); + if (!resolvedContext.trim().toUpperCase().contains(NotificationContextResolver.CATEGORY_DIALOGFLOW)) { String uuid = UUID.randomUUID().toString(); llmResponseTunerService.setValue(uuid, resolvedContext).subscribe();