Skip to content

Controller

Roman Kuzmin edited this page Feb 17, 2025 · 1 revision

Контроллеры в StarBank

📌 Описание

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

  1. RecommendationController – получение рекомендаций для пользователей.
  2. RuleController – управление динамическими правилами.
  3. ManagementController – управление сервисом (очистка кеша, получение информации).

🔹 RecommendationController

Файл: RecommendationController.java Описание:
Позволяет получать рекомендации для пользователей на основе их транзакций.

📌 Методы:

@GetMapping("/{userId}")
public ResponseEntity<RecommendationResponse> getRecommendations(@PathVariable String userId);

Описание:
Получает рекомендации для пользователя по его ID.

  • Запрос: GET /recommendation/{userId}
  • Пример:
    GET /recommendation/cd515076-5d8a-44be-930e-8d4fcb79f42d
    
  • Ответ:
    {
        "user_id": "cd515076-5d8a-44be-930e-8d4fcb79f42d",
        "recommendations": []
    }
@GetMapping("/username/{username}")
public ResponseEntity<RecommendationResponse> getRecommendationsByUserName(@PathVariable String username);

Описание:
Получает рекомендации по имени пользователя.

  • Запрос: GET /recommendation/username/{username}
  • Ответ (если пользователь не найден):
    {
        "error": "Пользователь не найден"
    }

🔹 RuleController

Файл: RuleController.java Описание:
Позволяет создавать, удалять и просматривать правила рекомендаций.

📌 Методы:

@PostMapping
public ResponseEntity<RuleSet> createRule(@RequestBody RuleSet ruleSet);

Описание:
Создаёт новый набор правил для рекомендаций.

  • Запрос: POST /rule
  • Пример тела запроса:
    {
        "product_name": "Простой кредит",
        "product_id": "ab138afb-f3ba-4a93-b74f-0fcee86d447f",
        "rule": [
            {
                "query": "USER_OF",
                "arguments": ["CREDIT"],
                "negate": true
            }
        ]
    }
  • Ответ:
    {
        "id": "12345",
        "product_name": "Простой кредит",
        "rule": [...]
    }
@GetMapping
public ResponseEntity<RuleSetWrapper> getAllRules();

Описание:
Получает все существующие правила.

  • Запрос: GET /rule
  • Ответ:
    {
        "data": [
            {
                "id": "12345",
                "product_name": "Простой кредит",
                "rule": [...]
            }
        ]
    }
@DeleteMapping("/{ruleId}")
public ResponseEntity<RuleSet> deleteRule(@PathVariable Long ruleId);

Описание:
Удаляет набор правил по его ID.

  • Запрос: DELETE /rule/{ruleId}
  • Пример:
    DELETE /rule/12345
    
  • Ответ:
    204 No Content (Правило удалено)
    
@GetMapping("/stats")
public ResponseEntity<RuleStatsResponseDTO> getRuleStats();

Описание:
Получает статистику срабатываний правил.

  • Запрос: GET /rule/stats
  • Ответ:
    {
        "stats": [
            {
                "rule_id": "12345",
                "count": "150"
            }
        ]
    }

🔹 ManagementController

Файл: ManagementController.java Описание:
Позволяет управлять сервисом, очищать кеш и получать информацию.

📌 Методы:

@PostMapping("/clear-caches")
public ResponseEntity<Void> clearCaches();

Описание:
Очищает кеш системы.

  • Запрос: POST /management/clear-caches
  • Ответ:
    200 OK (Кеш очищен)
    
@GetMapping("/info")
public ResponseEntity<ServiceInfoDTO> getServiceInfo();

Описание:
Получает название и версию сервиса.

  • Запрос: GET /management/info
  • Ответ:
    {
        "name": "starbank-recommendation",
        "version": "1.0.0"
    }

📌 Итог

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

Все контроллеры описаны в Swagger UI и доступны по адресу:

http://localhost:8080/swagger-ui.html

Clone this wiki locally