HandyCafe Docs
owner

Уровни лояльности

Система уровней лояльности поощряет постоянных клиентов автоматическими скидками на основе накопленной активности. По мере использования кафе (траты, входы, покупка пакетов, размещение заказов) участники зарабатывают баллы лояльности. Когда общее количество баллов превышает пороговое значение уровня, участник переходит на более высокий уровень и получает увеличенную скидку на тарификацию сессий.

Структура уровней

Каждый уровень лояльности определяется четырьмя полями:

Поле Описание
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: метка времени события.

Повышение уровня

Повышение уровня работает следующим образом:

  1. Участник выполняет активность (сессия, покупка, вход и т.д.).
  2. Система создает событие лояльности с соответствующим points_delta.
  3. Пересчитывается общее количество баллов участника как сумма всех значений points_delta.
  4. Система проверяет, достигает ли новый итог порога более высокого уровня.
  5. Если участник соответствует новому уровню, поле tier обновляется и новая скидка вступает в силу со следующей сессии.

Назначение уровня также может быть задано администратором вручную, переопределяя автоматический расчет.

Применение скидок уровня к тарификации сессий

Когда система тарификации рассчитывает стоимость сегмента сессии для участника:

  1. Базовая почасовая цена определяется активным тарифным слотом.
  2. Если у участника есть уровень с discount_bps, базовая цена уменьшается: discounted_price = base_price * (10000 - discount_bps) / 10000.
  3. Дополнительно применяются индивидуальные скидки участника (member_discount_bps в записи участника), если присутствуют.
  4. Итоговая ставка со скидкой используется для расчета стоимости сегмента.

Скидки уровня и индивидуальные скидки могут суммироваться, предоставляя участнику комбинированную выгоду.

Создание и управление уровнями

Для создания нового уровня:

  1. Перейдите в Настройки и откройте раздел Тарификация (или специальную область управления уровнями).
  2. Нажмите Добавить уровень.
  3. Введите код (уникальный, строчными буквами), название (отображаемая метка), пороговые баллы и скидку BPS.
  4. Сохраните уровень.

Для редактирования существующего уровня выберите его из списка и измените любые поля. Изменения discount_bps уровня вступают в силу для всех участников этого уровня начиная со следующей сессии.

Для удаления уровня удалите его из списка. Участники удаленного уровня будут переведены на ближайший нижний уровень, которому они соответствуют по баллам.

Пример настройки уровней

Типичная трехуровневая конфигурация:

Код Название Пороговые баллы Скидка BPS
bronze Бронзовый 0 0
silver Серебряный 500 500
gold Золотой 2000 1000
vip VIP 5000 1500

В этой настройке новый участник начинает с бронзового уровня (без скидки). После накопления 500 баллов от визитов, трат и заказов он автоматически переходит на серебряный уровень со скидкой 5%. При 2000 баллах достигается золотой уровень (10%), а при 5000 баллах - статус VIP (15%).