Sobes.tech
Senior
45

El producto llegó con la solicitud de desarrollar un servicio de Lealtad, que en función de la cantidad de pedidos entregados (sistema maestro de pedidos OMS) proporcionará al servicio de pago (cajero) el tamaño del descuento. El servicio de Lealtad aún no tendrá una interfaz frontal, solo en la base de datos se debe almacenar un mapeo de cuántos pedidos entregados y no cancelados corresponden a qué descuento. Algo como: Pedidos Descuento [porcentaje]% [porcentaje]% [porcentaje]% [porcentaje]% Es necesario diseñar un servicio, proponer mecanismos de integración con el Servicio de Pago y el Servicio de Gestión de Pedidos. Es necesario diseñar la arquitectura del servicio, que se pueda entregar al equipo de desarrollo y despliegue.

Empresas donde se preguntó
СБЕРСБЕР

Respuesta de la IA

sobes.tech AI

Для сервиса Лояльности, который на основе количества доставленных и не отменённых заказов выдаёт размер скидки, предлагаю следующую архитектуру и интеграционные механизмы:

Архитектура сервиса

  • Хранение данных: В базе данных хранится таблица с маппингом "минимальное количество заказов" → "размер скидки".
  • API: RESTful или gRPC сервис с методами:
    • Получить скидку по количеству заказов
    • Обновить правила скидок (администрирование)

Интеграция с OMS (сервис управления заказами)

  • OMS отправляет события о доставленных и не отменённых заказах (например, через очередь сообщений или webhook).
  • Сервис Лояльности подписывается на эти события и обновляет внутренний счётчик заказов для каждого пользователя.

Интеграция с сервисом оформления заказа (cashier)

  • При оформлении заказа cashier запрашивает у сервиса Лояльности текущий размер скидки для пользователя.
  • Сервис Лояльности возвращает актуальную скидку на основе количества доставленных заказов.

Технические детали

  • Использовать кеширование для ускорения ответов cashier.
  • Обеспечить идемпотентность обработки событий от OMS.
  • Логировать изменения скидок для аудита.

Пример структуры таблицы скидок

Минимальное количество заказов Скидка (%)
1 5
5 10
10 15

Такой подход позволит легко масштабировать сервис и добавлять новые правила скидок без изменения клиентских сервисов.