Skip to content

eduardkamena/starBankRecommendationService

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Recommendation Service

ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡ для Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ банковских ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ Π±Π°Π½ΠΊΠ° Β«Π‘Ρ‚Π°Ρ€Β».

Π”Π°Π½Π½Ρ‹ΠΉ сСрвис разрабатываСтся Π² Ρ€Π°ΠΌΠΊΠ°Ρ… курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹. БСрвис провСряСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· банковских ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ². Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, послС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… условий ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ².

УсловиС Π·Π°Π΄Π°Ρ‡ΠΈ

ΠœΡ‹ β€” Π±Π°Π½ΠΊ Β«Π‘Ρ‚Π°Ρ€Β». Наша Ρ†Π΅Π»ΡŒ β€” Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ систСму для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³Π° ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ сотрудникам Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ пСрсонализированных услуг ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ.

Π—Π°Π΄Π°Ρ‡Π° β€” ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ Π½ΠΎΠ²Ρ‹Π΅ банковскиС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ Π½Π° основС динамичСских ΠΏΡ€Π°Π²ΠΈΠ» Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ.

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ сСрвиса

БСрвис ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΡƒΠΆΠ΅ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… условиях эта Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… находится Π² инфраструктурС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π½ΠΎ для микросСрвиса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ встраиваСмая файловая Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… H2.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ сущности Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

  1. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π±Π°Π½ΠΊΠ°.
  2. ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ Π±Π°Π½ΠΊΠ°.
  3. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°ΠΌ Π±Π°Π½ΠΊΠ°.

Π­Ρ‚ΠΈ сущности Π½Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ (Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ JPA ΠΈ Entity). ВмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ JDBC ΠΈ JdbcTemplate.

Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

НаполнСнная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… содСрТит всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΡƒΠΆΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ для Π²Ρ‹Π΄Π°Ρ‡ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ. Π€Π°ΠΉΠ» Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…: transaction.mv.db.

Для просмотра Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ DBeaver:

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ соСдинСниС с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… H2.
  2. Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Π’Π°ΠΆΠ½ΠΎ: Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния.

Помимо исходной Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ для создания сущностСй ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с динамичСскими рСкомСндациями Π±Ρ‹Π»Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π° вторая Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ JPA ΠΈ Entity

ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ для динамичСских Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ

ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ для Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚:

  • НазваниС ΠΈ Ρ‚ΠΈΠΏ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.
  • ВСкстовоС описаниС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.
  • Набор ΠΏΡ€Π°Π²ΠΈΠ», ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² список Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

ДинамичСскиС ΠΏΡ€Π°Π²ΠΈΠ»Π°

ДинамичСскоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ прСдставляСт собой массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² запросов. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ запроса описываСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ полями:

  • query β€” Ρ‚ΠΈΠΏ запроса.
  • arguments β€” Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ запроса.
  • negate β€” ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ отрицания.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ динамичСского ΠΏΡ€Π°Π²ΠΈΠ»Π° Π² JSON

{
    "query": "USER_OF",
    "arguments": [
        "CREDIT"
    ],
    "negate": true
}

Π­Ρ‚ΠΎΡ‚ запрос провСряСт, являСтся Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° CREDIT. Если negate Ρ€Π°Π²Π½ΠΎ true, Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ выполняСтся, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ являСтся ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

Π’ΠΈΠΏΡ‹ запросов

USER_OF β€” провСряСт, являСтся Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

АргумСнты: Ρ‚ΠΈΠΏ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° (DEBIT, CREDIT, INVEST, SAVING).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ динамичСской Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ Π² JSON

{
    "productName": "Invest 500",
    "productId": "147f6a0f-3b91-413b-ab99-87f081d60d5a",
    "productText": "ОписаниС Invest 500",
    "rule": [
        {
            "query": "USER_OF",
            "arguments": [
                "DEBIT"
            ],
            "negate": true
        },
        {
            "query": "USER_OF",
            "arguments": [
                "INVEST"
            ],
            "negate": false
        },
        {
            "query": "TRANSACTION_SUM_COMPARE",
            "arguments": [
                "SAVING",
                "DEPOSIT",
                ">",
                "1000"
            ],
            "negate": true
        }
    ]
}

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

  • Java 17 β€” основной язык Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.
  • Spring Boot β€” Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для создания микросСрвисов.
  • Spring Data JPA β€” для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ….
  • Spring JDBC β€” для выполнСния SQL-запросов.
  • H2 Database β€” встраиваСмая Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… для тСстирования ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.
  • PostgreSQL β€” основная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… для хранСния Π΄Π°Π½Π½Ρ‹Ρ….
  • Liquibase β€” для управлСния миграциями Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
  • Caffeine β€” ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ….
  • Telegram Bot API β€” для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Telegram.
  • Swagger (OpenAPI 3.0) β€” для докумСнтирования API.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

  • Lombok β€” для сокращСния boilerplate-ΠΊΠΎΠ΄Π°.
  • Apache Commons Collections β€” для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с коллСкциями.
  • Apache Commons Lang β€” для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ.
  • Emoji-Java β€” для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с эмодзи Π² Telegram.
  • Spring Boot Actuator β€” для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ управлСния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» бэкСнда

  1. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²:
    • ЀиксированныС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ Π½Π° основС ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ».
    • ДинамичСскиС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ Π½Π° основС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… запросов.
    • ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.
  2. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рСкомСндациями:
    • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ динамичСских Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ.
    • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ статистики срабатывания Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ.
  3. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Telegram:
    • ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Ρ‡Π΅Ρ€Π΅Π· Telegram-Π±ΠΎΡ‚Π°.
    • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, /recommend).
  4. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ API:
    • АвтоматичСская гСнСрация Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ с использованиСм Swagger.
  5. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ кэшСм:
    • Бброс кэша Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· API.
  6. ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³:
    • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Spring Boot Actuator для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° состояния прилоТСния.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· Telegram-Π±ΠΎΡ‚Π°

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠΎ создан Telegram-Π±ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π΄Π°Π΅Ρ‚ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΏΠΎ ΠΈΡ… username.

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±ΠΎΡ‚Π°

  1. ΠŸΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ ΠΈ справка:
    • ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ Π±ΠΎΡ‚ привСтствуСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ справку с доступными ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ.
  2. Команда /recommend username:
    • Π‘ΠΎΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ /recommend с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (username).
    • Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΉΠ΄Π΅Π½, Π±ΠΎΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅:
    ЗдравствуйтС, <Имя ΠΈ фамилия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ>!
    
    НовыС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ для вас:
    - <НазваниС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°>: <ОписаниС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°>
    - <НазваниС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°>: <ОписаниС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°>
    
    • Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ ΠΈΠ»ΠΈ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ нСсколько ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π±ΠΎΡ‚ Π²Ρ‹Π΄Π°Π΅Ρ‚ сообщСниС: Β«ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Β».

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±ΠΎΡ‚Π°

  1. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ отправляСт ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:
/recommend luke.skywalker
  1. Π‘ΠΎΡ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚:
ЗдравствуйтС, Luke Skywalker!

НовыС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ для вас:
- ΠšΡ€Π΅Π΄ΠΈΡ‚Π½Π°Ρ ΠΊΠ°Ρ€Ρ‚Π°: Удобная крСдитная ΠΊΠ°Ρ€Ρ‚Π° с кэшбэком Π΄ΠΎ 10%.
- Π˜Π½Π²Π΅ΡΡ‚ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ счСт: НачнитС ΠΈΠ½Π²Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с минимальной суммой.
  1. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½:
ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½.

Бтатистика срабатывания ΠΏΡ€Π°Π²ΠΈΠ» Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ

Для Π°Π½Π°Π»ΠΈΠ·Π° эффСктивности Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ вСдСтся статистика срабатывания динамичСских ΠΏΡ€Π°Π²ΠΈΠ». ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ срабатываСт ΠΈ рСкомСндация выдаСтся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, счСтчик увСличиваСтся.

ВозмоТности:

  • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ статистики ΠΏΠΎ всСм рСкомСндациям.
  • Анализ популярности ΠΈ эффСктивности Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ статистики:

[
  {
    "recommendations_id": "59efc529-2fff-41af-baff-90ccd7402925",
    "count": 42
  },
  {
    "recommendations_id": "147f6a0f-3b91-413b-ab99-87f081d60d5a",
    "count": 15
  }
]

Запуск ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

  1. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ вас установлСны:
    • Java 17
    • Maven
    • Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… H2 (Ссли трСбуСтся локальноС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅).
    • PostgreSQL
  2. ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ:
    git clone https://github.com/eduardkamena/starBankRecommendationService.git
  3. НастройтС Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…:
    • Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Π² PostgreSQL.
    • ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ настройки Π² application.properties:
    spring.datasource.url=jdbc:postgresql://localhost:5432/ваша-Π±Π°Π·Π°-Π΄Π°Π½Π½Ρ‹Ρ…
    spring.datasource.username=ваш-username
    spring.datasource.password=ваш-ΠΏΠ°Ρ€ΠΎΠ»ΡŒ
  4. НастройтС Telegram Π±ΠΎΡ‚Π°:
    • Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π±ΠΎΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· BotFather.
    • Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½ Π±ΠΎΡ‚Π° Π² application.properties:
    telegram.bot.token=ваш-Ρ‚ΠΎΠΊΠ΅Π½
  5. Π‘ΠΎΠ±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Maven:
    mvn clean install
  6. ЗапуститС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:
    mvn spring-boot:run
  7. Для запуска тСстов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:
    mvn test
  8. БСрвис Π±ΡƒΠ΄Π΅Ρ‚ доступСн ΠΏΠΎ адрСсу: http://localhost:8085.

API

ДокумСнтация API доступна ΠΏΠΎ адрСсу: http://localhost:8085/swagger-ui.html.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ endpoints

  • POST /rule β€” созданиС динамичСской Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ.
  • GET /rule/{ruleId} β€” ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ динамичСской Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ID.
  • DELETE /rule/{ruleId} β€” ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ динамичСской Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ID.
  • GET /rule/allRules β€” ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ всСх динамичСских Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ.
  • GET /rule/stats β€” ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ статистики срабатывания Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ.
  • GET /product/{productId} β€” ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ID.
  • GET /recommendation/fixed/{userId} β€” ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ фиксированных Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
  • GET /recommendation/dynamic/{userId} β€” ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ динамичСских Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
  • POST /management/clear-caches β€” сброс кэша Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ.
  • GET /management/info β€” ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ сСрвисС.).

ВСстированиС

Для тСстирования использовались:

  • H2 in-memory β€” для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ….
  • WebMvcTests β€” для тСстирования ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ².
  • Unit Tests β€” для тСстирования сСрвисов ΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π².

Π Π°Π±ΠΎΡ‚Π° с Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ динамичСскими рСкомСндациями

  • Π“ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ динамичСскиС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ находятся Π² ΠΏΠ°ΠΏΠΊΠ΅ resources/dynamicRecommendations/JSON.
  • ВнСсти Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΡŽ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ запроса POST /rule.
  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ динамичСским рСкомСндациям находятся Π² ΠΏΠ°ΠΏΠΊΠ΅ resources/dynamicRecommendations/userTest.
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ запроса GET /recommendation/dynamic/{userId}

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ ΠΎΡ‚Π·Ρ‹Π²Ρ‹

Если Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΈΠ»ΠΈ Ρƒ вас Π΅ΡΡ‚ΡŒ прСдлоТСния, поТалуйста, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ‚Π΅ΠΌΡƒ Π½Π° GitHub Issues

Над ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ

  • Π­Π΄ΡƒΠ°Ρ€Π΄ ΠšΠ°ΠΌΠ΅Π½ΡΠΊΠΈΡ… β€” eduardkamena
  • ОлСг Π‘ΠΈΠΌΠ°ΠΊΠΎΠ² β€” gitWestender
  • АлСксандр Π“ΠΎΠ²ΠΎΡ€ΠΈΠ½ β€” Zhizhna

About

MicroService for bank credit products recommendations

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages