diff --git a/src/main/java/ru/cathub/telegabot/service/impl/BookAiServiceImpl.java b/src/main/java/ru/cathub/telegabot/service/impl/BookAiServiceImpl.java index 7d6999e..ef67ec7 100644 --- a/src/main/java/ru/cathub/telegabot/service/impl/BookAiServiceImpl.java +++ b/src/main/java/ru/cathub/telegabot/service/impl/BookAiServiceImpl.java @@ -7,6 +7,7 @@ import ru.cathub.telegabot.bot.KeyboardHelper; import ru.cathub.telegabot.model.BotUser; import ru.cathub.telegabot.model.TextRole; import ru.cathub.telegabot.repository.UserRepository; +import ru.cathub.telegabot.repository.BookRepository; import ru.cathub.telegabot.service.BookAiService; import ru.cathub.telegabot.service.TelegramClientService; @@ -19,6 +20,7 @@ import static ru.cathub.telegabot.utils.BookFormatUtils.escapeNonMarkdown; public class BookAiServiceImpl implements BookAiService { private final UserRepository userRepository; + private final BookRepository bookRepository; private final TelegramClientService telegramClientService; private final OpenRouterServiceImpl openRouterServiceImpl; @@ -26,9 +28,19 @@ public class BookAiServiceImpl implements BookAiService { public void processAiRequest(BotUser user, String text, BotUser.WorkingMode workingMode) { try { String response = null; + List> context = new ArrayList<>(); + + // Добавляем книги пользователя в контекст + bookRepository.findByBotUser(user).forEach(book -> { + Map bookMap = new HashMap<>(); + bookMap.put("role", "system"); + bookMap.put("content", String.format("Книга: %s, Автор: %s, Рейтинг: %d", + book.getTitle(), book.getAuthor(), book.getRating())); + context.add(bookMap); + }); switch (workingMode) { - case AI_FILTER -> {response = openRouterServiceImpl.getChatResponse(text, TextRole.FILTERER);} - case AI_SUGGEST -> {response =openRouterServiceImpl.getChatResponse(text, TextRole.SUGGESTER);} + case AI_FILTER -> response = openRouterServiceImpl.getChatResponseWithContext(text, context); + case AI_SUGGEST -> response = openRouterServiceImpl.getChatResponseWithContext(text, context); } telegramClientService.sendMessageWithMarkdown(user, escapeNonMarkdown(response)); }