Настройки лояльности
GET/PUT /loyalty/settings. Режим — один на заведение.isEnabled)mode
windowMonths
Скользящее окно 1–60, дефолт 6. Траты старше окна выпадают → уровень может понизиться.cashbackPaymentLimitPercent
Макс. доля заказа, оплачиваемая кешбеком. 0–100.Уровни лояльности
Bronze
Silver
Gold
Клиенты
Заказ #1043 выполнен
Промокоды
| Код | Выгода | Срок | Исп. / лимит | Мин. заказ | Статус |
|---|---|---|---|---|---|
| WELCOME10 | скидка 10% | 01.06 — 31.07 | 128 / 300 · 1/клиент | 500 c | активен |
| PLOV300 | −300 c фикс | 15.06 — 15.08 | 41 / ∞ · 3/клиент | 1 000 c | приостановлен |
| CASHBACK5 | кешбек +5% | 01.05 — 31.05 | 203 / 500 | — | истёк |
| SUMMER25 | скидка 25% | 20.06 — 20.07 | 200 / 200 | 800 c | исчерпан |
WELCOME10 активен
Динамика применений по дням
Конверсия: новые vs существующие
Акции и комбо
minOrderInCents) и скидка на комбо (окно дат). Ограничены датами, можно приостановить.| Акция | Тип | Условие → выгода | Период | Статус |
|---|---|---|---|---|
| Скидка за чек | условие | от 1 500 c → скидка 10% | 01.07 — 20.07 | активна |
| Комбо «Обед» | скидка на комбо | 560 c → 300 c (новая цена) | 19.07 — 30.07 | активна |
| Сет «Той» | скидка на комбо | 1 200 c → −30% | 15.06 — 15.07 | приостановлена |
| Кешбек-бустер | условие | от 3 000 c → кешбек 15% | 15.07 — 31.07 | запланирована |
/stop-list-combos) → скидка/комбо автоматически скрывается у клиента, у вендора бейдж «⚠ недоступно».Как акции видит клиент — карточка заведения
Блок «Акции» в карточке заведения C2C. Полные экраны клиента — «Как видит клиент».
Как видит клиент
index.css, паттерны «выбранного флоу»): заведение · мой уровень, все уровни, корзина с промокодом и кешбеком, история кешбека, ошибки кода, пуши. Ниже — оглавление экранов.Логика и правила
windowMonths (не «за всё время»); лимит оплаты кешбеком — cashbackPaymentLimitPercent; уровень+акция+промокод суммируются в totalDiscountInCents. Актуальные открытые вопросы — в комментах issue #464.Изоляция по вендорам
Уровни, траты, кешбек, промокоды и акции никогда не пересекают границу вендора.
Кешбек в микросервисе финансов
После успешного заказа: % уровня (или кешбек-акции/промокода) от базы начисления → на баланс «клиент + вендор». Идемпотентно по orderId.
Оплата заказа: hold при оформлении → confirm при успехе, release при отмене. Лимит доли оплаты кешбеком — вопрос №3.
Возврат/отмена: снимаем начисленный кешбек (баланс может уйти в минус — гасится следующими начислениями), возвращаем списанный, откатываем totalSpent.
Порядок применения выгод предложение — зафиксировать
Комбо / спеццена
Заменяет цены позиций набора. База для всего дальнейшего расчёта.
Акция с условием
Проверяем «сумма ≥ X» по сумме после комбо. Скидка акции уменьшает чек.
Промокод
К сумме после акций. Со скидкой уровня не стекается — действует большая выгода (предложение к вопросу №4).
Скидка уровня · если режим «скидка»
Если у заведения режим «кешбек» — шаг пропускается, кешбек считается в конце.
Оплата кешбеком
Списание с баланса — последним, с итоговой суммы. Кешбек-часть не входит в totalSpent и в базу начисления (демо-решение).
Начисление кешбека
% уровня от суммы, оплаченной деньгами. Округление — до 1 c.
Edge cases
| Кейс | Поведение (предложение) | Где видно в UI |
|---|---|---|
| Возврат / отмена заказа | Откат totalSpent, снятие начисленного кешбека, возврат списанного; уровень может понизиться | детализация клиента · «откат» |
| Оплата кешбеком и траты | Кешбек-часть не входит в totalSpent и в базу начисления (вопросы №2/№3) | детализация заказа · «5% от 656 c» |
| Округление | Кешбек/скидка — до 1 c, в пользу клиента не накапливаем | чекаут · «+33 c» |
| Вендор меняет пороги | Фоновый пересчёт всех профилей + предпросмотр «N клиентов сменят уровень» | уровни · warning |
| Удаление уровня | Только с переносом клиентов на соседний уровень; балансы не трогаем | уровни · модалка |
| Гонка на лимите промокода | Резерв слота в чекауте (TTL 10 мин) → confirm при оплате | чекаут · «код исчерпан» сразу |
| Промокод + оплата кешбеком | Разрешено: промокод режет чек, кешбек списывается с остатка | чекаут · порядок строк |
| Комбо-позиция в стоп-листе | Комбо скрыто у клиента, у вендора бейдж «⚠ позиция недоступна» | акции и комбо |
Открытые вопросы решить до реализации
Этапы реализации
Демо UI/UX — этот прототип
Согласование с командой. Реализация не начинается до утверждения демо.
Модель лояльности
Уровни, расчёт скидок/кешбека, интеграция с микросервисом финансов.
Промокоды + аналитика
Лимиты, резервирование слотов, счётчики, конверсия.
Акции и комбо
Условия, наборы, календарь активности, связь со стоп-листом каталога.
UI админки (web + mobile) и клиентского приложения
Разделы из этого прототипа.
Тестирование edge cases
Возвраты, лимиты, гонки, комбинирование выгод — таблица выше как чек-лист.