Senior
49
Το προϊόν ήρθε με το αίτημα να αναπτύξουμε μια υπηρεσία Πιστότητας, η οποία βάσει του αριθμού των παραδοθέντων παραγγελιών (κύριο σύστημα παραγγελιών OMS) θα παρέχει στην υπηρεσία ολοκλήρωσης παραγγελιών (ταμείο) το μέγεθος της έκπτωσης. Η υπηρεσία Πιστότητας δεν θα έχει ακόμα μπροστινό μέρος, πρέπει μόνο να αποθηκεύει στη βάση δεδομένων την αντιστοίχιση από τον αριθμό των παραδοθέντων και μη ακυρωμένων παραγγελιών στην αντίστοιχη έκπτωση. Κάτι σαν: Παραγγελίες Έκπτωση [phone]% [phone]% [phone]% [phone]% Πρέπει να σχεδιάσουμε μια υπηρεσία, να προτείνουμε μηχανισμούς ενσωμάτωσης με την υπηρεσία ολοκλήρωσης παραγγελιών και την υπηρεσία διαχείρισης παραγγελιών. Πρέπει να σχεδιάσουμε την αρχιτεκτονική της υπηρεσίας, την οποία μπορούμε να μεταβιβάσουμε στην ομάδα ανάπτυξης και υλοποίησης.
Εταιρείες όπου ρωτήθηκαν
Απάντηση από AI
sobes.tech AI
Для сервиса Лояльности, который на основе количества доставленных и не отменённых заказов выдаёт размер скидки, предлагаю следующую архитектуру и интеграционные механизмы:
Архитектура сервиса
- Хранение данных: В базе данных хранится таблица с маппингом "минимальное количество заказов" → "размер скидки".
- API: RESTful или gRPC сервис с методами:
- Получить скидку по количеству заказов
- Обновить правила скидок (администрирование)
Интеграция с OMS (сервис управления заказами)
- OMS отправляет события о доставленных и не отменённых заказах (например, через очередь сообщений или webhook).
- Сервис Лояльности подписывается на эти события и обновляет внутренний счётчик заказов для каждого пользователя.
Интеграция с сервисом оформления заказа (cashier)
- При оформлении заказа cashier запрашивает у сервиса Лояльности текущий размер скидки для пользователя.
- Сервис Лояльности возвращает актуальную скидку на основе количества доставленных заказов.
Технические детали
- Использовать кеширование для ускорения ответов cashier.
- Обеспечить идемпотентность обработки событий от OMS.
- Логировать изменения скидок для аудита.
Пример структуры таблицы скидок
| Минимальное количество заказов | Скидка (%) |
|---|---|
| 1 | 5 |
| 5 | 10 |
| 10 | 15 |
Такой подход позволит легко масштабировать сервис и добавлять новые правила скидок без изменения клиентских сервисов.