Level
Levels
Назначение Levels
Levels (Уровни) — это сущность для управления системой уровней лояльности клиентов в программе.
Основные возможности:
- Назначение уровня лояльности клиенту (VIP-статусы, игровые уровни, категории клиентов)
- Автоматическое повышение/понижение уровня на основе счетчиков (Counters)
- Ручное управление уровнем через API
- Гибкая настройка привилегий и преимуществ для каждого уровня
- Персонализация данных уровня для клиентов
- Интеграция с другими механиками лояльности
Как работает система уровней
Система уровней позволяет сегментировать клиентов по их активности и предоставлять различные привилегии в зависимости от достигнутого уровня.
Принцип работы:
- Создание уровней — администратор создает иерархию уровней (например: Новичок → Постоянный → VIP → Амбассадор)
- Назначение начального уровня — новые клиенты получают дефолтный уровень (
is_default = true) - Прогрессия — клиент повышает уровень при выполнении условий:
- Автоматически — при достижении определенного значения счетчика
- Вручную — через API или сценарии в Flow
- Получение привилегий — на каждом уровне клиент получает преимущества, настроенные бизнесом
Что получает/теряет клиент при смене уровня:
- Повышенный кэшбек — например, 1% на уровне "Новичок", 3% на "VIP"
- Лучшие награды — доступ к эксклюзивным rewards и items
- Разблокировка контента — новые items, tasks, achievements
- Приоритетная поддержка — доступ к специальным каналам обслуживания
- Персональные предложения — эксклюзивные акции для высоких уровней
- Множители бонусов — увеличенное начисление баллов за действия
Важно: Конкретные привилегии определяются бизнес-логикой программы лояльности. Система уровней предоставляет гибкий инструмент для реализации любых механик.
Примеры использования
Пример 1: VIP-статусы в ритейле
Уровень 1: Новичок (priority=1) — кэшбек 1%
Уровень 2: Постоянный (priority=2) — кэшбек 2%, ранний доступ к акциям
Уровень 3: VIP (priority=3) — кэшбек 3%, персональный менеджер
Уровень 4: Амбассадор (priority=4) — кэшбек 5%, эксклюзивные мероприятияПример 2: Игровая прогрессия
Уровень 1 (0-99 опыта) — базовые награды
Уровень 2 (100-299 опыта) — разблокировка новых заданий
Уровень 3 (300-599 опыта) — доступ к премиум сундукам
Уровень 10 (5000+ опыта) — легендарные предметыПример 3: Статусы лояльности в финансах
Стандарт (priority=1) — базовые условия
Серебро (priority=2) — сниженная комиссия
Золото (priority=3) — повышенная ставка по вкладу
Платина (priority=4) — премиум обслуживаниеСвязь со счетчиками (Counters)
Уровни могут автоматически изменяться в зависимости от значения счетчика клиента.
Как работает привязка к счетчику
Поля для настройки:
is_specific— флаг привязки к счетчику (true= уровень зависит от счетчика)specific_counter— ID счетчика (например,experience_points,purchases_count)from— минимальное значение счетчика для этого уровняto— максимальное значение счетчика для этого уровня
Механизм работы:
- Система отслеживает значение указанного счетчика клиента
- Когда значение счетчика попадает в диапазон
from-to, клиенту автоматически назначается соответствующий уровень - При изменении счетчика уровень может повышаться или понижаться
Пример настройки:
// Уровень 1: Новичок
{
"id": "level_1_newbie",
"title": "Новичок",
"priority": 1,
"is_specific": true,
"specific_counter": "experience_points",
"from": 0,
"to": 99
}
// Уровень 2: Опытный
{
"id": "level_2_experienced",
"title": "Опытный",
"priority": 2,
"is_specific": true,
"specific_counter": "experience_points",
"from": 100,
"to": 299
}
// Уровень 3: Мастер
{
"id": "level_3_master",
"title": "Мастер",
"priority": 3,
"is_specific": true,
"specific_counter": "experience_points",
"from": 300,
"to": 999999
}Сценарий автоматического повышения:
- Клиент начинает с 0 XP — получает "Уровень 1: Новичок"
- Клиент выполняет задания и набирает 150 XP — автоматически повышается до "Уровень 2: Опытный"
- Клиент продолжает прогрессию и достигает 500 XP — повышается до "Уровень 3: Мастер"
Примечание: Один счетчик можно использовать для нескольких уровней, создавая систему прогрессии. Важно, чтобы диапазоны from-to не пересекались между уровнями с одинаковым specific_counter.
Уровни без привязки к счетчику
Если is_specific = false, уровень назначается только вручную через API или сценарии Flow:
{
"id": "vip_special",
"title": "VIP (Специальный)",
"priority": 5,
"is_specific": false
}Применение: Эксклюзивные уровни для особых клиентов (партнеры, сотрудники, победители конкурсов).
Приоритет и прогрессия
Поле priority
priority определяет "высоту" уровня в иерархии:
- Чем выше значение
**priority**, тем выше уровень - Начальный уровень должен иметь
priority = 1 - Система сравнивает уровни клиентов по
priorityдля определения прогресса
Пример иерархии:
| Уровень | Priority | Описание |
|---|---|---|
| Новичок | 1 | Начальный уровень |
| Постоянный | 2 | Первое повышение |
| VIP | 3 | Премиум статус |
| Амбассадор | 4 | Максимальный уровень |
Важно: Значения priority не обязательно должны идти подряд (1, 2, 3, 4...). Можно использовать любые числа (1, 10, 20, 50), что позволяет в будущем добавлять промежуточные уровни без перенумерации существующих.
Дефолтный уровень
Назначение дефолтного уровня
is_default = trueозначает, что это начальный уровень для всех новых клиентов- Только один уровень в рамках окружения (
environment_id) может быть дефолтным - Дефолтный уровень обычно имеет
priority = 1
Пример:
{
"environment_id": "accelera",
"id": "newbie",
"title": "Новичок",
"description": "Стартовый уровень для всех новых участников программы",
"priority": 1,
"is_default": true
}Автоматическое назначение:
При первом обращении клиента к системе лояльности:
- Система проверяет наличие уровня у клиента
- Если уровня нет — назначается дефолтный уровень
- Клиент начинает прогрессию с этого уровня
Автоматическое и ручное назначение уровней
Система поддерживает два способа управления уровнями клиентов:
1. Автоматическое назначение (на основе счетчиков)
Условия:
is_specific = true- Указан
specific_counter - Определены диапазоны
from-to
Как работает:
- Клиент выполняет действия, увеличивающие счетчик (покупки, задания, активность)
- Система отслеживает значение счетчика
- При попадании в новый диапазон автоматически назначается соответствующий уровень
- Клиент получает уведомление о повышении/понижении уровня
Пример: Счетчик total_purchases = 15 → автоматически назначается "Постоянный клиент" (для диапазона 10-50 покупок).
Пример проверки соответствия значений счетчика и уровня клиента через API:
curl --request POST \
--url /v1/internal/level/refresh/clients \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"client_id": "12345",
"environment_id": "accelera"
}
'2. Ручное назначение (через API)
Условия:
- Вызов API метода назначения уровня
- Использование сценариев Flow для назначения уровня при выполнении условий
Применение:
- Назначение эксклюзивных уровней (VIP-клиенты, партнеры)
- Временные акции (повышение уровня на месяц)
- Награды за конкурсы (победителю присваивается специальный уровень)
- Ручная коррекция уровня администратором
Пример через Flow:
Событие: "client_won_contest"
↓
Условие: contest_id = "summer_2025"
↓
Действие: Назначить уровень "champion"
↓
Выдать награду "exclusive_trophy"Важно: При ручном назначении уровня система не проверяет соответствие счетчику. Администратор полностью контролирует назначение.
Откат уровня
- Клиент может "откатиться" на более низкий уровень, если значение счетчика уменьшается и попадает в диапазон более низкого уровня
- При ручном назначении можно назначить любой уровень, включая более низкий
Пример: Клиент имел уровень "VIP" (100+ покупок), но после возврата товаров его счетчик стал 85 покупок → автоматически откатывается на "Постоянный" (50-99 покупок).
Описание полей
Обязательные поля
| Параметр | Тип данных | Описание |
|---|---|---|
| environment_id | Varchar(50) | ID окружения, к которому относится уровень |
| id | Varchar(50) | Уникальный идентификатор уровня |
| title | Varchar(50) | Название уровня (отображаемое имя) |
| priority | Integer | Приоритет уровня. Чем выше значение, тем выше уровень. Начальный уровень должен иметь priority = 1 |
Поля с описанием
| Параметр | Тип данных | Описание |
|---|---|---|
| description | Varchar(250) | Описание уровня и его преимуществ |
Флаги и настройки
| Параметр | Тип данных | Описание |
|---|---|---|
| is_default | Boolean | Флаг дефолтного уровня. true = стартовый уровень для всех новых клиентов. Только один уровень на окружение может быть дефолтным |
| is_specific | Boolean | Флаг привязки к счетчику. is_specific = true означает, что уровень автоматически назначается при попадании значения счетчика в диапазон from-to |
Привязка к счетчику
| Параметр | Тип данных | Описание |
|---|---|---|
| specific_counter | Varchar(50) | ID счетчика (например, experience_points, purchases_count). Используется при is_specific = true |
| from | Integer | Минимальное значение счетчика для этого уровня (включительно) |
| to | Integer | Максимальное значение счетчика для этого уровня (включительно) |
Примечание: Поля
specific_counter,from,toобязательны приis_specific = trueи игнорируются приis_specific = false.
Примечание: Поля specific_counter, from, to обязательны при is_specific = true и игнорируются при is_specific = false.
Персонализация и дополнительно
| Параметр | Тип данных | Описание |
|---|---|---|
| personalization | JSON | Объект персонализации для динамической замены параметров в текстах уровня |
| additional | JSON | Дополнительные параметры уровня (иконки, цвета бейджей, список привилегий, мультипликаторы и т.д.) |
| creator | Varchar(250) | Создатель уровня (имя пользователя) |
Дополнительные параметры (additional)
Поле additional позволяет хранить любые кастомные параметры для визуализации и логики:
Примеры использования:
{
"additional": {
"badge_icon_url": "https://cdn.example.com/badges/vip.png",
"badge_color": "#FFD700",
"cashback_multiplier": 1.5,
"privileges": [
"Повышенный кэшбек 3%",
"Приоритетная поддержка",
"Ранний доступ к акциям",
"Персональный менеджер"
],
"unlock_features": ["premium_chest", "vip_tasks", "exclusive_items"],
"display_order": 3,
"gradient_colors": ["#FFD700", "#FFA500"],
"required_xp": 1000,
"reward_on_reach": "level_up_bonus"
}
}Возможные параметры:
badge_icon_url— URL иконки уровня для отображенияbadge_color— цвет бейджа уровняcashback_multiplier— множитель кэшбека для этого уровняprivileges— список привилегий текстомunlock_features— список разблокируемых функций/сущностейreward_on_reach— ID награды, выдаваемой при достижении уровняgradient_colors— цвета градиента для визуализацииrequired_xp— требуемый опыт (дублирование для удобства фронтенда)
Примеры заполнения Levels
Пример 1: Дефолтный начальный уровень
{
"environment_id": "accelera",
"id": "newbie",
"title": "Новичок",
"description": "Стартовый уровень для всех новых участников программы лояльности",
"priority": 1,
"is_default": true,
"is_specific": true,
"specific_counter": "experience_points",
"from": 0,
"to": 99,
"additional": {
"badge_icon_url": "https://cdn.example.com/badges/newbie.png",
"badge_color": "#C0C0C0",
"cashback_multiplier": 1.0,
"privileges": ["Базовый кэшбек 1%"]
}
}Пример 2: Средний уровень с автоматическим повышением
{
"environment_id": "accelera",
"id": "regular",
"title": "Постоянный",
"description": "Вы постоянный участник программы! Кэшбек увеличен до 2%",
"priority": 2,
"is_default": false,
"is_specific": true,
"specific_counter": "experience_points",
"from": 100,
"to": 299,
"additional": {
"badge_icon_url": "https://cdn.example.com/badges/regular.png",
"badge_color": "#4169E1",
"cashback_multiplier": 1.2,
"privileges": [
"Повышенный кэшбек 2%",
"Доступ к специальным акциям"
],
"unlock_features": ["special_tasks"]
}
}Пример 3: VIP-уровень
{
"environment_id": "accelera",
"id": "vip",
"title": "VIP",
"description": "Премиум статус с максимальными привилегиями и эксклюзивными наградами",
"priority": 3,
"is_default": false,
"is_specific": true,
"specific_counter": "experience_points",
"from": 300,
"to": 999999,
"additional": {
"badge_icon_url": "https://cdn.example.com/badges/vip.png",
"badge_color": "#FFD700",
"gradient_colors": ["#FFD700", "#FFA500"],
"cashback_multiplier": 1.5,
"privileges": [
"Максимальный кэшбек 3%",
"Приоритетная поддержка",
"Ранний доступ к акциям",
"Персональный менеджер",
"Эксклюзивные награды"
],
"unlock_features": ["vip_tasks", "premium_chest", "exclusive_items"],
"reward_on_reach": "vip_welcome_bonus"
}
}Пример 4: Специальный уровень без привязки к счетчику
{
"environment_id": "accelera",
"id": "ambassador",
"title": "Амбассадор",
"description": "Эксклюзивный статус для самых активных участников программы",
"priority": 4,
"is_default": false,
"is_specific": false,
"additional": {
"badge_icon_url": "https://cdn.example.com/badges/ambassador.png",
"badge_color": "#9400D3",
"gradient_colors": ["#9400D3", "#FF1493"],
"cashback_multiplier": 2.0,
"privileges": [
"Удвоенный кэшбек 5%",
"Участие в эксклюзивных мероприятиях",
"Закрытый клуб амбассадоров",
"Доступ к тестированию новых функций"
]
}
}Пример 5: С персонализацией
{
"environment_id": "accelera",
"id": "gold",
"title": "Золотой статус",
"description": "До следующего уровня осталось {{xp_needed}} опыта",
"priority": 2,
"is_default": false,
"is_specific": true,
"specific_counter": "experience_points",
"from": 500,
"to": 999,
"personalization": {
"context": {
"xp_needed": "500"
},
"dictionary": {}
},
"additional": {
"badge_color": "#FFD700",
"cashback_multiplier": 1.3
}
}Примеры API-запросов
Проверки соответствия значений счетчика и уровня клиента через API:
curl --request POST \
--url /v1/internal/level/refresh/clients \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"client_id": "12345",
"environment_id": "accelera"
}
'Получение текущего уровня клиента
curl --request GET \
--url /v1/internal/level/clients/{{client_id}}/{{environment_id}} \
--header 'accept: application/json'Пример ответа:
{
"timestamp": "1742305835279",
"environment_id": "ruwiki",
"entity_id": "",
"client_id": "ayuka",
"client_hash": "",
"id": "rank-3",
"date": "2025-03-18",
"time": "16:50",
"datetime": "2025-03-18 16:50:35",
"title": "Спец",
"description": "",
"priority": 2,
"additional": {
"level_cup": 60,
"level_image_closed": "https://cdn.ruwiki.ru/commonswiki/files/7/7c/%D0%9F%D0%9B_%D0%B7%D0%B0%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B4%D0%B0%D1%80%D0%BE%D0%BA.png",
"level_image_opened": "https://cdn.ruwiki.ru/commonswiki/files/e/e0/%D0%9F%D0%9B_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B4%D0%B0%D1%80%D0%BE%D0%BA_%D0%B7%D0%B5%D0%BB%D0%B5%D0%BD%D0%B0%D1%8F_%D0%B3%D0%B0%D0%BB%D0%BE%D1%87%D0%BA%D0%B0.png"
},
"is_specific": true,
"specific_counter": "experience",
"from": 60,
"to": 599,
"creator": "admin"
}Назначение уровня клиенту вручную
Примечание: При ручном назначении уровня игнорируются условия счетчика. Это позволяет предоставлять эксклюзивные уровни независимо от прогресса клиента.
Удаление уровня у клиента
После удаления клиенту будет назначен дефолтный уровень (is_default = true).
Интеграция с другими сущностями
Levels тесно интегрируются с другими механиками системы лояльности:
1. Counters (Счетчики)
- Автоматическое повышение — уровни привязываются к счетчикам для автоматической прогрессии
- Примеры счетчиков:
experience_points,purchases_count,total_spent,login_streak
Пример: Счетчик experience_points используется для уровней 1-10, где каждый уровень требует определенного количества опыта.
2. Rewards (Награды)
- Награды за повышение — при достижении нового уровня через Flow выдаются специальные призы
- Уровневые награды — некоторые награды доступны только клиентам с определенным уровнем
Пример: При достижении VIP-уровня клиент получает награду vip_welcome_bonus (промокод на 1000 рублей).
3. Tasks (Задания)
- Разблокировка заданий — на разных уровнях доступны разные задания
- Усложнение задач — с повышением уровня задания становятся сложнее и ценнее
Пример: Задание "VIP Challenge" доступно только клиентам с уровнем VIP или выше.
4. Items (Предметы)
- Уровневые предметы — некоторые items заблокированы (
is_locked = true) до достижения определенного уровня - Скидки по уровню — цены на items могут зависеть от уровня клиента
Пример: Эксклюзивный скин доступен для покупки только клиентам с уровнем "Амбассадор".
5. Wallet (Кошельки)
- Множители начисления — уровень влияет на размер кэшбека и бонусов
- Бонусы при повышении — начисление баллов на кошелек при достижении нового уровня
Пример: Клиент с уровнем VIP получает 1.5x множитель на все начисления баллов.
6. Offers (Предложения)
- Персональные предложения — эксклюзивные offers для клиентов с высоким уровнем
- Уровневые акции — специальные акции для каждого уровня
Пример: Offer "VIP Week" доступен только клиентам с уровнем VIP.
7. Achievements (Достижения)
- Достижения за уровни — получение ачивок при достижении определенных уровней
- Прогрессия достижений — цепочки достижений, связанных с повышением уровня
Пример: Достижение "Путь к вершине" — достичь максимального уровня программы.
8. Flow (Сценарии)
- Автоматизация действий — сценарии отслеживают изменение уровня и выполняют действия
- Персонализация механик — разная логика для разных уровней клиентов
Пример сценария:
Событие: level_changed (в будущих версиях)
↓
Условие: new_level.priority >= 3
↓
Действие 1: Выдать награду "vip_bonus"
Действие 2: Отправить уведомление "Поздравляем с VIP-статусом!"
Действие 3: Активировать offer "vip_exclusive"Практические сценарии
Сценарий 1: Базовая система уровней с автоматической прогрессией
Задача: Создать 4-уровневую систему на основе общего опыта клиента.
Реализация:
- Создать счетчик
experience_pointsсо значением 0 - Создать 4 уровня с привязкой к счетчику:
// Уровень 1: Новичок (0-99 XP)
{
"id": "level_1",
"title": "Новичок",
"priority": 1,
"is_default": true,
"is_specific": true,
"specific_counter": "experience_points",
"from": 0,
"to": 99
}
// Уровень 2: Опытный (100-299 XP)
{
"id": "level_2",
"title": "Опытный",
"priority": 2,
"is_specific": true,
"specific_counter": "experience_points",
"from": 100,
"to": 299
}
// Уровень 3: Профи (300-599 XP)
{
"id": "level_3",
"title": "Профи",
"priority": 3,
"is_specific": true,
"specific_counter": "experience_points",
"from": 300,
"to": 599
}
// Уровень 4: Легенда (600+ XP)
{
"id": "level_4",
"title": "Легенда",
"priority": 4,
"is_specific": true,
"specific_counter": "experience_points",
"from": 600,
"to": 999999
}- Настроить начисление XP за действия в Flow:
- Покупка: +50 XP
- Выполнение задания: +30 XP
- Ежедневный вход: +10 XP
- Приглашение друга: +100 XP
- Клиент автоматически повышается при накоплении опыта
Результат: Самонастраивающаяся система прогрессии без ручного вмешательства.
Сценарий 2: VIP-статусы с выдачей наград при повышении
Задача: Создать 3 VIP-статуса и выдавать награды при достижении каждого.
Реализация:
- Создать 3 уровня на основе количества покупок:
// Серебро (10-29 покупок)
{
"id": "silver",
"title": "Серебряный статус",
"priority": 2,
"is_specific": true,
"specific_counter": "purchases_count",
"from": 10,
"to": 29,
"additional": {
"cashback_multiplier": 1.2,
"reward_on_reach": "silver_bonus"
}
}
// Золото (30-49 покупок)
{
"id": "gold",
"title": "Золотой статус",
"priority": 3,
"is_specific": true,
"specific_counter": "purchases_count",
"from": 30,
"to": 49,
"additional": {
"cashback_multiplier": 1.5,
"reward_on_reach": "gold_bonus"
}
}
// Платина (50+ покупок)
{
"id": "platinum",
"title": "Платиновый статус",
"priority": 4,
"is_specific": true,
"specific_counter": "purchases_count",
"from": 50,
"to": 999999,
"additional": {
"cashback_multiplier": 2.0,
"reward_on_reach": "platinum_bonus"
}
}- В Flow настроить сценарий на событие покупки:
- Увеличить счетчик
purchases_count - Проверить, изменился ли уровень
- Если да → выдать награду из
additional.reward_on_reach
- Увеличить счетчик
Пример Flow:
Событие: purchase
↓
Действие: counter.increment("purchases_count", 1)
↓
Получить текущий уровень клиента
↓
IF (уровень изменился) THEN
Выдать reward из level.additional.reward_on_reach
Отправить уведомление о повышенииРезультат: Клиенты мотивированы совершать больше покупок для получения VIP-статуса и бонусов.
Сценарий 3: Эксклюзивные уровни для особых клиентов
Задача: Создать специальные уровни для партнеров и сотрудников компании.
Реализация:
- Создать уровни без привязки к счетчикам:
// Партнер
{
"id": "partner",
"title": "Партнер",
"priority": 10,
"is_default": false,
"is_specific": false,
"additional": {
"cashback_multiplier": 3.0,
"privileges": [
"Максимальный кэшбек 10%",
"Доступ к оптовым ценам",
"Персональный менеджер"
]
}
}
// Сотрудник
{
"id": "employee",
"title": "Сотрудник компании",
"priority": 11,
"is_default": false,
"is_specific": false,
"additional": {
"cashback_multiplier": 5.0,
"privileges": [
"Скидка сотрудника 50%",
"Тестирование новых функций"
]
}
}- Назначать уровни вручную через API или сценарии Flow
- Периодически проверять актуальность статуса (например, раз в месяц)
Результат: Гибкая система для управления особыми категориями клиентов.
Сценарий 5: Многоуровневая прогрессия с постепенным усложнением
Задача: Создать 10 уровней с экспоненциальным ростом требований.
Реализация:
- Создать 10 уровней с возрастающими требованиями:
Уровень 1: 0-99 XP (100 XP до следующего)
Уровень 2: 100-249 XP (150 XP до следующего)
Уровень 3: 250-499 XP (250 XP до следующего)
Уровень 4: 500-899 XP (400 XP до следующего)
Уровень 5: 900-1499 XP (600 XP до следующего)
...
Уровень 10: 10000+ XP- Настроить персонализацию для отображения прогресса:
{
"id": "level_2",
"title": "Уровень 2",
"description": "До следующего уровня: {{xp_needed}} опыта",
"personalization": {
"context": {
"xp_needed": "150"
}
}
}- При переходе на новый уровень выдавать награды:
- Уровень 5 → Сундук с редкими наградами
- Уровень 10 → Эксклюзивный титул "Мастер"
Результат: Долгосрочная мотивация через постепенное усложнение прогрессии.
Сценарий 6: Комбинированная система (автоматика + ручное управление)
Задача: Основные уровни автоматические, но администратор может вручную назначить VIP-статус.
Реализация:
- Создать автоматические уровни 1-3 на основе опыта
- Создать ручной VIP-уровень без привязки к счетчику:
{
"id": "vip_manual",
"title": "VIP (специальный)",
"priority": 100,
"is_specific": false,
"additional": {
"note": "Назначается вручную администратором"
}
}- В Flow настроить логику:
- Если клиент имеет уровень с
priority >= 100→ не менять уровень автоматически - В противном случае → обновлять уровень по счетчику
- Если клиент имеет уровень с
Результат: Гибкость управления — автоматика для большинства + ручной контроль для особых случаев.
Визуализация и отображение
Примечание: Визуализация уровней реализуется на стороне клиента (фронтенд, мобильное приложение), используя API системы лояльности.
Примечание: Визуализация уровней реализуется на стороне клиента (фронтенд, мобильное приложение), используя API системы лояльности.
Что может отображать клиентское приложение:
- Текущий уровень клиента
- Название уровня
- Иконка/бейдж из
additional.badge_icon_url - Описание привилегий
- Прогресс до следующего уровня
- Текущее значение счетчика
- Требуемое значение для следующего уровня
- Процент выполнения
- Визуальная шкала прогресса
- Список всех уровней
- Иерархия уровней с требованиями
- Заблокированные и открытые уровни
- Превью наград за достижение
Пример UI:
┌─────────────────────────────────┐
│ 🥈 Серебряный статус │
│ ━━━━━━━━━━━━━━━━━━━░░░░░ 75% │
│ 150 / 200 покупок │
│ │
│ Ваши привилегии: │
│ ✓ Кэшбек 2% │
│ ✓ Ранний доступ к акциям │
│ │
│ До Золотого статуса: 50 покупок│
└─────────────────────────────────┘Ограничения текущей версии
История изменений уровней
В текущей версии системы отсутствует история изменений уровня клиента. Хранится только текущий уровень.
Что это означает:
- Нельзя увидеть, когда клиент достиг определенного уровня
- Нельзя отследить, сколько раз клиент повышался/понижался
- Нет логов изменений уровня
Рекомендация: Если требуется история, можно реализовать логирование изменений на стороне сценариев Flow или внешней системы.
Пример Flow для логирования:
Событие: Изменение уровня
↓
Записать в лог:
- client_id
- old_level_id
- new_level_id
- timestamp
- reason (auto/manual)События изменения уровня
В текущей версии отсутствуют автоматические события при изменении уровня (например, level_up, level_down).
Планируется в следующих версиях:
- Событие
level_changedпри любом изменении уровня - Событие
level_upпри повышении уровня - Событие
level_downпри понижении уровня
Текущее решение: Логику изменения уровня необходимо отслеживать в сценариях Flow вручную, сравнивая старый и новый уровень клиента.
Рекомендации по использованию
- Планирование иерархии — продумайте систему уровней заранее, оставляйте "зазоры" в значениях
priorityдля возможности добавления промежуточных уровней - Диапазоны счетчиков — убедитесь, что диапазоны
from-toне пересекаются между уровнями с одинаковымspecific_counter - Дефолтный уровень — всегда создавайте дефолтный уровень для новых клиентов
- Четкое описание привилегий — используйте
descriptionиadditionalдля детального описания преимуществ каждого уровня - Тестирование прогрессии — протестируйте автоматическое повышение/понижение уровней на тестовых клиентах
- Мониторинг — отслеживайте распределение клиентов по уровням для балансировки системы
- Коммуникация — информируйте клиентов о повышении уровня через уведомления
- Награды за достижение — мотивируйте клиентов, выдавая ценные призы при достижении новых уровней
Работа с Levels
Для работы с уровнями используйте методы API, описанные выше. Уровни могут создаваться и управляться через интерфейс ЛК менеджера или программно через API.
Интеграция с Flow позволяет:
- Автоматически начислять опыт за действия клиентов
- Выдавать награды при повышении уровня
- Разблокировать новые функции и сущности
- Персонализировать механики в зависимости от уровня клиента
Типичный workflow:
- Создание иерархии уровней в системе
- Настройка счетчика для автоматической прогрессии
- Создание сценариев в Flow для начисления опыта
- Настройка наград и привилегий для каждого уровня
- Тестирование и запуск программы лояльности
- Мониторинг и оптимизация системы уровней