Senior
76
Le produit est arrivé avec la demande de développer un service de Fidélité, qui, en fonction du nombre de commandes livrées (système maître des commandes OMS), fournira au service de paiement (caissier) la taille de la remise. Le service de Fidélité n'aura pas encore de front-end, il faut simplement stocker dans la base de données une correspondance entre le nombre de commandes livrées et non annulées et le montant de la remise. Quelque chose comme: Commandes Remise [pourcentage]% [pourcentage]% [pourcentage]% [pourcentage]% Il faut concevoir un service, proposer des mécanismes d'intégration avec le Service de paiement et le Service de gestion des commandes. Il faut concevoir l'architecture du service, qui pourra être transmise à l'équipe de développement et de déploiement.
Entreprises à qui on a demandé
Réponse de l'IA
sobes.tech IA
Для сервиса Лояльности, который на основе количества доставленных и не отменённых заказов выдаёт размер скидки, предлагаю следующую архитектуру и интеграционные механизмы:
Архитектура сервиса
- Хранение данных: В базе данных хранится таблица с маппингом "минимальное количество заказов" → "размер скидки".
- API: RESTful или gRPC сервис с методами:
- Получить скидку по количеству заказов
- Обновить правила скидок (администрирование)
Интеграция с OMS (сервис управления заказами)
- OMS отправляет события о доставленных и не отменённых заказах (например, через очередь сообщений или webhook).
- Сервис Лояльности подписывается на эти события и обновляет внутренний счётчик заказов для каждого пользователя.
Интеграция с сервисом оформления заказа (cashier)
- При оформлении заказа cashier запрашивает у сервиса Лояльности текущий размер скидки для пользователя.
- Сервис Лояльности возвращает актуальную скидку на основе количества доставленных заказов.
Технические детали
- Использовать кеширование для ускорения ответов cashier.
- Обеспечить идемпотентность обработки событий от OMS.
- Логировать изменения скидок для аудита.
Пример структуры таблицы скидок
| Минимальное количество заказов | Скидка (%) |
|---|---|
| 1 | 5 |
| 5 | 10 |
| 10 | 15 |
Такой подход позволит легко масштабировать сервис и добавлять новые правила скидок без изменения клиентских сервисов.