К тренажеру
ВопросMediummlsd-recsysРеальный собес

Как часто пересчитывать стоимость доставки в корзине

Клиент видит стоимость доставки или порог бесплатной доставки в корзине. Каталог и корзина меняются, а на чек-ауте нельзя показать другую цену и вызвать негатив. Как спроектировать пересчет и где провести границу между точностью, latency и стоимостью?

Короткий ответ

Нужно разделить быстрый синхронный пересчет для пользовательского экрана и более тяжелые фоновые обновления модели/правил. На каждое изменение корзины пересчитываем простую deterministic часть, а дорогие ML/оптимизационные компоненты кешируем и обновляем по событиям или TTL.

Полный разбор

Хороший ответ начинается с продуктового инварианта: пользователь не должен увидеть одно обещание в корзине и другое на чек-ауте. Значит, цена или порог бесплатной доставки должны быть либо синхронно пересчитаны перед показом, либо зафиксированы как quote с коротким сроком жизни.

Практичная архитектура: сервис pricing/quote получает корзину, ресторан, зону доставки, время, промо и доступность каталога. Быстрые правила считаются online: сумма корзины, текущий ресторан, геозона, промо, минимальный заказ. Более тяжелые компоненты, например спрос, загрузка кухни, прогноз courier supply, можно держать в feature store/cache и обновлять по TTL или событиям.

Важно проговорить trade-off. Пересчет каждую секунду обычно не нужен, если корзина не менялась. Пересчет раз в неделю неприемлем, потому что меняются каталог, цены, промо, ресторан и операционная нагрузка. Хороший вариант: пересчет на событиях изменения корзины/адреса/ресторана/времени слота, плюс TTL для динамических факторов, плюс финальная валидация quote на чек-ауте.

Теория

Это вопрос не только про RecSys, а про online decisioning. Здесь нужны consistency, latency budget, feature freshness и product guardrails. Монетизация появляется через доставку, минимальный чек, промо и маржинальность заказа. ML может оптимизировать порог бесплатной доставки, но пользовательский контракт должен оставаться стабильным.

Типичные ошибки

  • Сказать, что модель можно пересчитывать раз в день, и не обсудить негатив на чек-ауте.
  • Смешать offline retraining модели и online пересчет quote.
  • Не учесть ресторан, адрес, промо, доступность каталога и текущую корзину.

Как отвечать на собеседовании

  • Сначала назови продуктовый инвариант: цена на чек-ауте не должна неожиданно ухудшаться.
  • Разделяй deterministic rules, online features, cached ML scores и финальную quote validation.