Skip to content

Architect

Roman Kuzmin edited this page Feb 17, 2025 · 13 revisions

📌 Общая структура проекта StarBank

Проект StarBank — это рекомендательная система для персонализированного подбора банковских продуктов на основе транзакций пользователей.

📌 Содержание: Подробное описание классов и методов

🔹 Основные компоненты проекта

1. Контроллеры (controller/)

Контроллеры обеспечивают взаимодействие API с клиентами и управляют обработкой запросов.

  • RecommendationController - Обрабатывает запросы на получение рекомендаций.
  • RuleController - Управляет динамическими правилами рекомендаций.
  • ManagementController - Позволяет очищать кеш и получать информацию о сервисе.

Подробное описание классов и методов контроллеров

2. Сервисы (service/)

Сервисы реализуют бизнес-логику работы системы.

  • RecommendationService - Интерфейс для работы с рекомендациями.
  • RecommendationServiceImpl - Реализация сервиса рекомендаций, проверяет правила и подбирает продукты.

Подробное описание классов и методов RecommendationService

  • RuleService - Интерфейс управления правилами.
  • RuleServiceImpl - Реализует динамическую логику проверки правил и их хранения.

Подробное описание классов и методов RuleService

3. Обработчики правил (service/rulehandlers/)

Каждый обработчик отвечает за проверку определённого правила.

  • RuleHandler - Интерфейс для всех обработчиков правил.
  • RuleMasterHandler - Базовый класс с общей логикой работы с транзакциями.
  • UserOfHandler - Проверяет, использует ли пользователь продукт.
  • ActiveUserOfHandler - Проверяет активность пользователя по количеству транзакций.
  • TransactionSumCompareHandler - Сравнивает сумму транзакций с указанным значением.
  • TransactionSumCompareDepositWithdrawHandler - Сравнивает суммы пополнений и расходов.

Подробное описание классов и методов Обработчиков RuleHandlers

4. Репозитории (repository/)

Отвечают за работу с базой данных.

  • UserRepository - Получает данные о пользователях.
  • TransactionRepository - Анализирует транзакции пользователей.
  • RuleSetRepository - Работает с наборами правил.
  • RuleStatRepository - Ведёт статистику срабатывания правил.

Подробное описание классов и методов RecommendationService

5. Модели данных (model/)

Определяют основные структуры данных.

  • User - Модель пользователя.
  • Product - Модель банковского продукта.
  • Transaction - Модель транзакции пользователя.
  • Recommendation - Описывает рекомендацию.
  • Rule - Определяет динамическое правило.
  • RuleSet - Группа правил для одного продукта.
  • RuleStat - Статистика срабатываний правил.

Подробное описание классов и методов моделей H2 и JPA

6. Telegram Bot (bots/)

Бот отвечает за обработку запросов пользователей через Telegram и взаимодействует с системой рекомендаций.

  • TelegramBot - Основной обработчик команд бота.
  • BotService - Интерфейс для взаимодействия с ботом.
  • TelegramBotServiceImpl - Реализация логики работы бота.
  • Обработчики команд: /start, /help, /recommend.

Подробное описание Telegram Bot

7. Конфигурация и интеграция

  • application.properties - Основные настройки сервиса (БД, кэширование, Telegram Bot).
  • changeset-db-rules.xml - Liquibase-скрипты для работы с динамическими правилами.

Clone this wiki locally