-
Notifications
You must be signed in to change notification settings - Fork 2
Controller
Контроллеры обеспечивают взаимодействие API с клиентами, обрабатывают запросы и передают данные из базы.
В системе StarBank используются три ключевых контроллера:
-
RecommendationController– получение рекомендаций для пользователей. -
RuleController– управление динамическими правилами. -
ManagementController– управление сервисом (очистка кеша, получение информации).
Файл: 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.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.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