Sobes.tech
Senior
46

O produto veio com o pedido de desenvolver um serviço de Fidelidade, que com base na quantidade de pedidos entregues (sistema mestre de pedidos OMS) irá fornecer ao serviço de checkout (caixa) o valor do desconto. O serviço de Fidelidade ainda não terá uma interface frontal, apenas será necessário armazenar no banco de dados o mapeamento de qual desconto corresponde a qual quantidade de pedidos entregues e não cancelados. Algo como: Pedidos Desconto [phone]% [phone]% [phone]% [phone]% É necessário projetar um serviço, propor mecanismos de integração com o Serviço de checkout e o Serviço de gerenciamento de pedidos. É preciso projetar a arquitetura do serviço, que possa ser passada para a equipe de desenvolvimento e implantação.

Empresas quando solicitadas
СБЕРСБЕР

Resposta da IA

sobes.tech IA

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

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

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

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

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

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

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

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

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

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

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

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