Rewards
Rewards
Назначение Rewards
Rewards (Награды) — это сущность для управления призами и вознаграждениями в программе лояльности.
Основные возможности:
- Создание различных типов наград (бонусы, скидки, подарки, промокоды)
- Настройка условий выдачи и ограничений
- Интеграция со стеками купонов для автоматической выдачи промокодов
- Управление видимостью и приоритетом наград
- Модерация выдачи наград
- Гибкая настройка активации через внешние системы
Типы наград
Rewards поддерживает различные типы наград:
- Обычные призы - награды с описанием, логотипом, ссылками
- Промокоды - награды с интеграцией стеков купонов
- Подписки - призы, которые можно активировать после подтверждения через СМС-код
Промокоды и стеки купонов
При создании награды типа "промокод" используется механика стеков купонов. Стек купонов — это массив промокодов, из которого система автоматически берет уникальный код при выдаче награды клиенту.
Как это работает:
- В Reward указывается
coupons_id- идентификатор стека купонов - При выдаче награды система берет один купон из стека
- Купон сохраняется в награде клиента
- Купон помечается как использованный
Совет: Подробнее о создании, загрузке и управлении стеками купонов см. в разделе "Coupons Stack (Стеки купонов)" в разделе "Дополнительные механики".
Ограничения выдачи
Система поддерживает гибкие ограничения на выдачу наград:
| Тип ограничения | Значение | Описание |
|---|---|---|
unlimited | Без ограничений | Награда может выдаваться неограниченное количество раз |
once | Только раз | Награда выдается клиенту только один раз за все время. При попытке повторной выдачи возникает ошибка |
once a period | Раз в период | Награда может выдаваться повторно через указанный период (поле issue_period в днях) |
Пример: Если issue_type = "once a period" и issue_period = 7, то клиент может получать награду не чаще раза в неделю.
Уникальность наград (is_unique)
Поле is_unique определяет, как создаются записи выданных наград:
is_unique = true (Уникальные награды):
- При каждой выдаче формируется уникальный ID награды
- Каждая выдача создает отдельную запись в базе данных
- Каждая запись получает свой промокод из стека (если используются купоны)
Пример: Клиент получил награду дважды:
Запись 1: id = "promo_discount_abc123", промокод = "SALE10-X7Y9"
Запись 2: id = "promo_discount_def456", промокод = "SALE10-K2M5"is_unique = false (Обычные награды):
- Используется один и тот же ID награды
- При повторной выдаче существующая запись перезаписывается
- Промокод заменяется на новый (если используются купоны)
Важно: Для наград с промокодами рекомендуется использовать
is_unique = true, чтобы сохранялась история всех выданных промокодов.
Моментальная выдача и модерация
Моментальная выдача (is_instant)
is_instant = true- награда выдается автоматически сразу после триггераis_instant = false- награду должен выдать сценарий в Flow
Если награда не моментальная, можно настроить специальные тексты:
instant_title- заголовок для показа клиентуinstant_description- описание процесса выдачи
Пример: "Ваша награда обрабатывается, ожидайте уведомления в течение 24 часов"
Модерация (is_moderated)
is_moderated = true- выдача награды требует ручного подтверждения администраторомis_moderated = false- выдача полностью автоматическая
Для модерируемых наград настраиваются тексты:
moderated_title- заголовок для показа во время модерацииmoderated_description- описание процесса модерации
Пример: "Ваша заявка на получение приза проверяется модератором"
Процесс модерации
Обычно модерация настраивается через файлообмен или прямой доступ к базе данных:
- Клиент получает награду со статусом "на модерации"
- Модератор получает доступ к базе выданных наград (таблица
{{environment_id}}.rewards) - Модератор проверяет клиента и формирует файл с решениями
- Файл содержит списки подтвержденных и заблокированных наград
- Подтвержденные награды:
- Выдаются клиенту окончательно
- Если используются купоны - берется купон из стека
- Заблокированные награды:
- Удаляются из базы
- Купоны не используются
Статусы наград и жизненный цикл
Возможные статусы:
| Статус | Описание |
|---|---|
active | Награда активна и доступна для выдачи |
not-active | Награда неактивна |
expired | Срок действия награды истек |
Автоматические изменения статуса:
- При достижении даты
active_toнаграда автоматически переходит в статусexpired - При достижении даты
archieve_fromнаграда уходит в архив, но не удаляется из системы - Архивные награды сохраняются для истории, но не доступны для выдачи
Видимость и приоритет
is_visible (Флаг видимости)
is_visible = true- награда отображается в интерфейсеis_visible = false- награда скрыта для пользователя
Применение: Флаг используется на уровне фронтенда или промежуточного бэкенда для фильтрации состава ответа. Это позволяет создавать награды, которые существуют в системе, но временно скрыты от пользователей.
is_priority (Флаг приоритета)
is_priority = true- награда помечена как приоритетнаяis_priority = false- обычная награда
Применение (в разработке): Приоритетные награды могут выдаваться из сундуков (Treasures), игнорируя стандартные вероятности. Это позволяет гарантировать выдачу определенных наград.
Пример использования: Акционная награда с ограниченным сроком может быть помечена как приоритетная, чтобы гарантировать ее получение определенными сегментами пользователей.
position (Позиция при сортировке)
Поле position определяет порядок отображения наград в интерфейсе. Работает независимо от is_priority.
Тип награды (type)
Поле type является свободным текстовым полем без жестких ограничений.
Применение:
- Группировка наград на фронтенде
- Фильтрация при выборе награды для выдачи
- Категоризация в аналитике
Примеры типов:
bonus_points- бонусные баллыpromocode- промокодphysical_gift- физический подарокdiscount- скидкаcashback- кэшбэкsubscription- подписка
Вы можете создавать собственные типы в зависимости от бизнес-логики.
Партнеры (partner_id)
Поле partner_id используется как простой флаг для обозначения партнерских наград.
Применение:
- Идентификация наград от партнеров
- Группировка партнерских предложений
- Фильтрация в отчетах
Примечание: На текущем этапе
partner_idне влияет на логику работы системы и используется только для маркировки и аналитики.
Дополнительные параметры (additional)
Поле additional представляет собой JSON-объект для хранения любых кастомных параметров.
Особенности:
- Полностью гибкое - можно использовать любую структуру данных
- Нет стандартных полей или ограничений
- Параметры определяются бизнес-логикой конкретного проекта
Примеры использования:
{
"additional": {
"button_text": "Активировать",
"button_url": "https://example.com/activate",
"icon_url": "https://cdn.example.com/icons/gift.png",
"background_color": "#FF6B6B",
"tags": ["новинка", "акция"],
"metadata": {
"campaign_id": "summer_2025",
"source": "email"
}
}
}Процесс выдачи наград
Награды могут выдаваться двумя способами:
1. Через модуль Flow
Сценарий:
- Внешняя система отправляет во Flow событие о необходимости выдачи награды
- Flow отлавливает это событие
- Сценарий вызывает API-метод выдачи награды по клиенту
- Награда создается в таблице
{{environment_id}}.rewards
Пример события:
{
"event_type": "give_reward",
"client_id": "12345",
"reward_id": "bonus_500",
"environment_id": "accelera"
}2. Через внешнюю систему (Backend)
Сценарий:
- Внешняя система, использующая платформу лояльности, напрямую инициирует выдачу
- Backend вызывает API-метод создания награды по клиенту
- Flow не участвует в процессе
- Награда сразу создается в базе данных
Это позволяет интегрировать лояльность в существующие системы без необходимости настройки сценариев во Flow.
Клиентские награды
При выдаче награды клиенту создается запись в таблице **{{environment_id}}.rewards**, где {{environment_id}} — это идентификатор окружения.
Структура хранения:
- Каждое окружение имеет свою схему в базе данных
- Название схемы совпадает с
environment_id - Внутри схемы создается таблица
rewardsс записями выданных наград
Пример: Для окружения accelera выданные награды хранятся в accelera.rewards
API "Мои награды"
Клиент может получить список своих наград через API:
curl --request GET \
--url /v1/internal/rewards/clients/{{client_id}}/{{environment_id}} \
--header 'accept: application/json'Ответ содержит:
- Все выданные клиенту награды
- Информацию о статусе каждой награды
- Промокоды (если применимо)
- Даты получения и активации
- Дополнительные параметры из поля
additional
Удаление выданных наград
Уже выданную клиенту награду можно удалить через API:
curl --request DELETE \
--url /v1/internal/rewards/clients/{{client_id}}/{{environment_id}}/{{reward_id}} \
--header 'accept: application/json'Применение:
- Отзыв ошибочно выданных наград
- Удаление истекших наград
- Урегулирование спорных ситуаций
Важно: При удалении награды с промокодом купон остается использованным.
Типы активации
Поле activation_type определяет способ активации награды:
| Тип | Описание | Применение |
|---|---|---|
promocode | Активация через промокод | Выдача уникального кода клиенту |
mass | Массовая активация | Групповая выдача наград |
link | Активация по ссылке | Клиент переходит по ссылке для получения |
pp | Активация через партнерскую программу | Интеграция с внешней системой партнера |
cdp | Активация через CDP | Интеграция с Customer Data Platform |
Поле external_id используется для связи с внешними системами активации.
Описание полей
Обязательные поля
| Параметр | Тип данных | Описание |
|---|---|---|
| environment_id | Varchar(50) | ID окружения, к которому относится награда |
| id | Varchar(50) | Уникальный идентификатор награды |
| type | Varchar(250) | Тип награды |
| status | Varchar(50) | Статус награды: active, not-active |
Необязательные поля
| Параметр | Тип данных | Описание |
|---|---|---|
| active_from | Date | Дата начала выдачи награды (формат: YYYY-MM-DD) |
| active_to | Date | Дата окончания выдачи награды (формат: YYYY-MM-DD) |
| is_instant | Boolean | Флаг моментальной выдачи награды. true - выдается сразу, false - выдача через сценарий |
| instant_title | String | Название для показа в случае не моментальной выдачи |
| instant_description | String | Описание для показа в случае не моментальной выдачи |
| is_moderated | Boolean | Флаг требования ручной модерации выдачи награды |
| moderated_title | String | Название для показа в случае модерации |
| moderated_description | String | Описание для показа в случае модерации |
Поля с описанием
| Параметр | Тип данных | Описание |
|---|---|---|
| title | Varchar(250) | Название награды |
| description | Varchar(250) | Описание награды |
| details | Varchar(250) | Детали награды |
| category | Varchar(250) | Категория награды (для группировки) |
| disclamer | Varchar(250) | Дисклеймер (предупреждение или условия) |
Флаги
| Параметр | Тип данных | Описание |
|---|---|---|
| is_unique | Boolean | Флаг уникальности награды. При true формируется уникальный ID для каждой выдачи |
| is_visible | Boolean | Флаг отображения награды в интерфейсе |
| is_priority | Boolean | Флаг приоритетности награды (влияет на порядок показа) |
Ограничения выдачи
| Параметр | Тип данных | Описание |
|---|---|---|
| issue_type | Varchar(250) | Тип ограничения выдачи: unlimited (без ограничений), once (только раз), once a period (раз в период) |
| issue_period | Integer | Количество дней для ограничения once a period. Например, 7 означает раз в неделю |
Активация и промокоды
| Параметр | Тип данных | Описание |
|---|---|---|
| activation_type | Varchar(250) | Тип активации: promocode, mass, link, pp, cdp |
| external_id | Varchar(50) | ID внешней системы для активации награды |
| coupons_id | Varchar(50) | ID стека купонов. При выдаче награды берется купон из стека и сохраняется в награде клиента |
Партнеры и даты
| Параметр | Тип данных | Описание |
|---|---|---|
| partner_id | Varchar(50) | ID партнера (если награда от партнера) |
| archieve_from | Date | Дата перехода награды в архив (формат: YYYY-MM-DD) |
Сортировка и дополнительно
| Параметр | Тип данных | Описание |
|---|---|---|
| position | Integer | Позиция награды при сортировке в интерфейсе |
| additional | JSON | Дополнительные параметры наград (кнопки, ссылки и т.д.) |
| creator | Varchar(250) | Создатель награды (имя пользователя) |
Пример заполнения Reward
Пример 1: Обычная награда с баллами
{
"environment_id": "accelera",
"id": "bonus_500",
"type": "bonus_points",
"status": "active",
"title": "500 бонусных баллов",
"description": "Получите 500 баллов на счет",
"category": "bonuses",
"issue_type": "once",
"active_from": "2025-01-01",
"active_to": "2025-12-31",
"is_instant": true,
"is_moderated": false,
"is_visible": true,
"is_priority": false,
"position": 1
}Пример 2: Промокод из стека купонов
{
"environment_id": "accelera",
"id": "promo_discount",
"type": "promocode",
"status": "active",
"title": "Скидка 15%",
"description": "Промокод на скидку 15% в партнерских магазинах",
"details": "Действует 30 дней с момента получения",
"activation_type": "promocode",
"coupons_id": "stack_december_2025",
"issue_type": "once a period",
"issue_period": 30,
"active_from": "2025-12-01",
"active_to": "2025-12-31",
"is_instant": true,
"is_moderated": false,
"is_visible": true,
"position": 2
}Пример 3: Награда с модерацией
{
"environment_id": "accelera",
"id": "premium_gift",
"type": "physical_gift",
"status": "active",
"title": "Премиум подарок",
"description": "Эксклюзивный подарок для VIP-клиентов",
"issue_type": "once",
"active_from": "2025-01-01",
"active_to": "2025-12-31",
"is_instant": false,
"instant_title": "Обработка заявки",
"instant_description": "Ваша заявка на получение подарка обрабатывается",
"is_moderated": true,
"moderated_title": "Проверка модератором",
"moderated_description": "Подарок будет выдан после проверки модератором в течение 48 часов",
"is_visible": true,
"position": 3
}Примеры API-запросов
Выдача новой награды клиенту
curl --request POST \
--url /v1/internal/rewards \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"client_id": "client1"
"environment_id": "accelera",
"id": "bonus_500"
}
'Получение наград клиента
curl --request GET \
--url /v1/internal/rewards/clients/{{client_id}}/{{environment_id}} \
--header 'accept: application/json'Удаление выданной награды
curl --request DELETE \
--url /v1/internal/rewards/clients/{{client_id}}/{{environment_id}}/{{reward_id}} \
--header 'accept: application/json'Интеграция с другими сущностями
Rewards тесно интегрируется с другими механиками системы:
- Tasks - награды выдаются автоматически при выполнении заданий через Flow
- Treasures - награды используются как призы в сундуках
- Coupons Stack - при типе
promocodeнаграды берут купоны из загруженных стеков - Wallet - награды типа "бонусные баллы" начисляют валюту на кошелек
- Flow - сценарии управляют выдачей наград при выполнении условий
Работа с Rewards
Для работы с наградами используйте методы API, описанные выше. Награды могут создаваться и управляться через интерфейс ЛК менеджера или программно через API.