Уровни лояльности
Система уровней лояльности поощряет постоянных клиентов автоматическими скидками на основе накопленной активности. По мере использования кафе (траты, входы, покупка пакетов, размещение заказов) участники зарабатывают баллы лояльности. Когда общее количество баллов превышает пороговое значение уровня, участник переходит на более высокий уровень и получает увеличенную скидку на тарификацию сессий.
Структура уровней
Каждый уровень лояльности определяется четырьмя полями:
| Поле | Описание |
|---|---|
code |
Уникальный короткий код уровня (например, silver, gold, vip). Используется внутри системы для идентификации и в ответах API. |
name |
Отображаемое название (например, "Серебряный участник", "Золотой участник"). Показывается в профиле участника и на экране блокировки клиента. |
threshold_points |
Минимальное количество баллов лояльности для достижения этого уровня. |
discount_bps |
Скидка на тарификацию сессий в базисных пунктах. 100 BPS равно 1%. Значение 500 означает скидку 5%. |
Уровни упорядочены по значению threshold_points. Участник принадлежит к наивысшему уровню, для которого он набрал достаточно баллов.
Скидки в базисных пунктах (BPS)
Скидки выражаются в базисных пунктах (BPS), а не в процентах, для предотвращения ошибок округления в финансовых расчетах. Один базисный пункт равен 0.01%, или одной сотой процента.
Типичные значения скидок:
| Значение BPS | Процент | Пример при ставке 1000 ед./час |
|---|---|---|
| 250 | 2.5% | Участник платит 975 за час |
| 500 | 5% | Участник платит 950 за час |
| 1000 | 10% | Участник платит 900 за час |
| 1500 | 15% | Участник платит 850 за час |
| 2000 | 20% | Участник платит 800 за час |
Когда участник с уровневой скидкой начинает сессию, система тарификации уменьшает базовую почасовую ставку на discount_bps уровня перед расчетом стоимости сегментов.
События лояльности
Участники зарабатывают баллы через события лояльности. Каждое событие фиксирует изменение баллов и активность, его вызвавшую:
| Тип события | Описание | Типичные баллы |
|---|---|---|
spend |
Участник оплатил сессию (постоплата или списание с кошелька). Баллы пропорциональны сумме трат. | Зависит от суммы |
usage |
Участник использовал ПК или консоль, независимо от оплаты. Баллы основаны на длительности. | Зависит от минут |
visit |
Участник вошел с клиентского ПК. Фиксированный бонус за каждый визит, поощряющий регулярное посещение. | Фиксированный за визит |
topup |
Участник пополнил кошелек. Баллы отражают сумму пополнения. | Зависит от суммы |
order |
Участник разместил заказ товаров (еда, напитки и т.д.). Баллы пропорциональны сумме заказа. | Зависит от суммы |
adjustment |
Ручная корректировка баллов администратором. Для исправлений, акций или специальных поощрений. | Любое значение (положительное или отрицательное) |
Каждая запись события лояльности включает:
- points_delta: количество начисленных (положительное) или списанных (отрицательное) баллов.
- amount_minor: денежная сумма, связанная с событием (в минимальных единицах валюты), при наличии.
- minutes_delta: количество минут, связанных с событием, при наличии.
- source_entity / source_entity_id: ссылка на сессию, заказ или транзакцию, сгенерировавшую событие.
- event_at: метка времени события.
Повышение уровня
Повышение уровня работает следующим образом:
- Участник выполняет активность (сессия, покупка, вход и т.д.).
- Система создает событие лояльности с соответствующим
points_delta. - Пересчитывается общее количество баллов участника как сумма всех значений
points_delta. - Система проверяет, достигает ли новый итог порога более высокого уровня.
- Если участник соответствует новому уровню, поле
tierобновляется и новая скидка вступает в силу со следующей сессии.
Назначение уровня также может быть задано администратором вручную, переопределяя автоматический расчет.
Применение скидок уровня к тарификации сессий
Когда система тарификации рассчитывает стоимость сегмента сессии для участника:
- Базовая почасовая цена определяется активным тарифным слотом.
- Если у участника есть уровень с
discount_bps, базовая цена уменьшается:discounted_price = base_price * (10000 - discount_bps) / 10000. - Дополнительно применяются индивидуальные скидки участника (
member_discount_bpsв записи участника), если присутствуют. - Итоговая ставка со скидкой используется для расчета стоимости сегмента.
Скидки уровня и индивидуальные скидки могут суммироваться, предоставляя участнику комбинированную выгоду.
Создание и управление уровнями
Для создания нового уровня:
- Перейдите в Настройки и откройте раздел Тарификация (или специальную область управления уровнями).
- Нажмите Добавить уровень.
- Введите код (уникальный, строчными буквами), название (отображаемая метка), пороговые баллы и скидку BPS.
- Сохраните уровень.
Для редактирования существующего уровня выберите его из списка и измените любые поля. Изменения discount_bps уровня вступают в силу для всех участников этого уровня начиная со следующей сессии.
Для удаления уровня удалите его из списка. Участники удаленного уровня будут переведены на ближайший нижний уровень, которому они соответствуют по баллам.
Пример настройки уровней
Типичная трехуровневая конфигурация:
| Код | Название | Пороговые баллы | Скидка BPS |
|---|---|---|---|
bronze |
Бронзовый | 0 | 0 |
silver |
Серебряный | 500 | 500 |
gold |
Золотой | 2000 | 1000 |
vip |
VIP | 5000 | 1500 |
В этой настройке новый участник начинает с бронзового уровня (без скидки). После накопления 500 баллов от визитов, трат и заказов он автоматически переходит на серебряный уровень со скидкой 5%. При 2000 баллах достигается золотой уровень (10%), а при 5000 баллах - статус VIP (15%).