Skip to content

User story

Aleksandr Gorohov edited this page Nov 22, 2024 · 10 revisions

User Story 1: Рекомендательная система для банка "Стар"

Описание:

Как банк "Стар", мы хотим внедрить рекомендательную систему, которая будет анализировать поведение клиентов и предлагать им персонализированные банковские продукты.

Как пользователь системы, я хочу:

  1. Анализировать транзакции:

    • Учитывать типы продуктов (DEBIT, SAVING, INVEST, CREDIT).
    • Определять суммы пополнений и трат.
  2. Определять подходящие продукты:

    • Использовать заранее заданные правила для каждого продукта.
    • Учитывать, что для рекомендации должны выполняться все правила.
  3. Предоставлять список рекомендаций:

    • Через REST API с методом GET /recommendation/<user_id>.
    • Возвращать JSON с идентификатором пользователя и списком рекомендуемых продуктов.

Функциональные требования:

  1. Анализ транзакций:

    • Получать данные из базы данных H2.
    • Анализировать транзакции для определения типов продуктов и сумм.
  2. Применение правил:

    • Использовать заранее заданные правила для каждого продукта.
    • Объединять правила логическими "И", "ИЛИ".
  3. Генерация рекомендаций:

    • Генерировать список рекомендуемых продуктов на основе выполненных правил.
    • Возвращать пустой список, если рекомендаций нет.
  4. REST API:

    • Предоставлять метод GET /recommendation/<user_id>.
    • Возвращать JSON с идентификатором пользователя и списком продуктов.

Нефункциональные требования:

  1. Производительность:

    • Обрабатывать запросы в реальном времени.
    • Оптимизировать SQL-запросы.
  2. Масштабируемость:

    • Разрабатывать с учетом возможности расширения.
    • Компоненты должны быть легко тестируемы и поддерживаемы.
  3. Безопасность:

    • Обеспечивать безопасный доступ к базе данных и API.

Пример использования:

Входные данные:

  • Идентификатор пользователя: cd515076-5d8a-44be-930e-8d4fcb79f42d

Выходные данные:

{
  "user_id": "cd515076-5d8a-44be-930e-8d4fcb79f42d",
  "recommendations": [
    {
      "name": "Invest 500",
      "id": "147f6a0f-3b91-413b-ab99-87f081d60d5a",
      "text": "Откройте свой путь к успеху с индивидуальным инвестиционным счетом (ИИС) от нашего банка! Воспользуйтесь налоговыми льготами и начните инвестировать с умом. Пополните счет до конца года и получите выгоду в виде вычета на взнос в следующем налоговом периоде. Не упустите возможность разнообразить свой портфель, снизить риски и следить за актуальными рыночными тенденциями. Откройте ИИС сегодня и станьте ближе к финансовой независимости!"
    }
  ]
}

Дополнительные требования:

  • Реализовать как Spring Boot приложение.
  • Использовать JdbcTemplate для работы с базой данных.
  • Код должен быть структурирован и легко тестируем с использованием Mockito и JUnit.

Приоритет: Высокий

Срок выполнения: До конца текущей итерации разработки.

User Story 2: Динамические правила

Clone this wiki locally