Collections
Collections
Назначение Collections
Collections (Коллекции) — это механика геймификации, представляющая собой наборы элементов, которые клиенты должны собрать для получения награды.
Основные возможности:
- Создание коллекционных наборов элементов любой тематики
- Выдача элементов коллекции клиентам через API
- Отслеживание прогресса сбора коллекции (собрано X из Y)
- Выдача наград при сборе коллекции
- Визуальное отображение собранных и недостающих элементов
- Различные типы коллекций (постоянные, сезонные, тематические)
Как работают коллекции
Коллекции — это классическая игровая механика "собери всё", которая мотивирует клиентов к активности.
Принцип работы:
- Создание коллекции — администратор создает коллекцию с набором элементов
- Выдача элементов — клиенты получают элементы коллекции через API (за покупки, задания, сундуки и т.д.)
- Отслеживание прогресса — система показывает, сколько элементов собрано из общего количества
- Завершение коллекции — при сборе всех элементов коллекция считается завершенной
- Получение награды — клиент получает reward, achievement или другие бонусы
Пример: Коллекция "Бренды электроники" состоит из 10 элементов (логотипы брендов). Клиент покупает товары разных брендов и получает соответствующие элементы. При сборе всех 10 элементов клиент получает награду "Знаток электроники" и промокод на скидку.
Примеры использования
Пример 1: Коллекция брендов
Коллекция: "Коллекционер брендов"
Элементы: 10 логотипов брендов (Apple, Samsung, Sony, LG и т.д.)
Условие: Купите товары каждого из 10 брендов
Награда: Промокод на 1000 рублей + достижение "Знаток техники"Пример 2: Коллекция сезонных предметов
Коллекция: "Летняя коллекция 2025"
Элементы: 15 летних скинов/стикеров
Условие: Получите все летние элементы за июнь-август
Награда: Эксклюзивный летний аватар + 500 бонусов
Период: 01.06.2025 - 31.08.2025Пример 3: Коллекция региональных товаров
Коллекция: "Путешественник"
Элементы: 12 городов России (Москва, СПб, Казань, Сочи и т.д.)
Условие: Совершите покупку в каждом из городов
Награда: Достижение "Путешественник" + VIP-статус на месяцПример 4: Коллекция достижений
Коллекция: "Мастер челленджей"
Элементы: 8 сложных достижений категории "Челленджи"
Условие: Получите все 8 достижений
Награда: Легендарный бейдж + 5000 бонусовПример 5: Коллекция карточек/стикеров
Коллекция: "Пазл Билайн"
Элементы: 12 частей пазла
Условие: Соберите все части пазла (выдаются случайно из сундуков)
Награда: Промокод на бесплатный месяц связиЭлементы коллекции
Каждая коллекция состоит из элементов, которые клиент должен собрать.
Структура элемента
Поле elements представляет собой JSON-массив объектов:
{
"elements": [
{
"element_id": "element_1",
"title": "Часть 1",
"description": "Первая часть пазла",
"position": 1
},
{
"element_id": "element_2",
"title": "Часть 2",
"description": "Вторая часть пазла",
"position": 2
}
]
}Поля элемента:
| Поле | Тип | Описание |
|---|---|---|
element_id | String | Уникальный идентификатор элемента |
title | String | Название элемента |
description | String | Описание элемента |
position | Integer | Позиция элемента в коллекции (для сортировки и отображения) |
Выдача элементов клиенту
Элементы коллекции выдаются через специальный API-метод:
curl --location 'http://example.com/v1/internal/collections/clients' \
--header 'Content-Type: application/json' \
--data '{
"client_id": "12345",
"environment_id": "accelera",
"id": "puzzle_collection",
"element_id": "element_1"
}'Важные особенности выдачи:
- Один элемент можно получить только один раз (защита от дубликатов)
- При попытке выдать дубликат ничего не происходит
- Элементы можно выдавать в любом порядке
- Выдача обычно происходит через Flow при выполнении условий
Как клиенты получают элементы
Элементы могут выдаваться различными способами:
1. За покупки товаров:
Flow: purchase → IF (brand == "Apple") → Выдать element "brand_apple"2. За выполнение заданий (Tasks):
Task completed → Выдать элемент коллекции как награду3. За достижения (Achievements):
Achievement "10 покупок" → Выдать элемент коллекции4. За активность:
Ежедневный вход → Шанс получить элемент коллекцииПримечание: Вероятности получения элементов настраиваются на уровне бизнес-логики (в Flow или внешней системе), а не внутри самой сущности Collections.
Размер коллекции
Поле size определяет общее количество элементов в коллекции.
Важные правила:
sizeдолжно совпадать с длиной массиваelements- При создании коллекции указывается фиксированный размер
- Можно добавлять новые элементы в коллекцию после создания (увеличивая
size)
Пример:
{
"id": "brands_collection",
"title": "Коллекция брендов",
"size": 10,
"elements": [
// 10 элементов
]
}Добавление элементов:
Если изначально коллекция содержала 10 элементов, можно добавить новые:
{
"size": 12, // Увеличили с 10 до 12
"elements": [
// 10 старых элементов + 2 новых
]
}Важно: При добавлении новых элементов необходимо обновить поле size, чтобы оно соответствовало количеству элементов.
Награда за коллекцию
Поле achievement содержит ID награды (reward), которая выдается при завершении коллекции.
Как работает выдача награды
Способ 1: Через Flow (рекомендуется)
Событие: Элемент коллекции получен
↓
Проверить: Коллекция завершена?
↓
IF (is_collected == true) THEN
reward_id = collection.achievement
Выдать reward(reward_id)
Выдать achievement "collection_master"
Статус коллекции = completedСпособ 2: Через прямой вызов API
После проверки завершения коллекции вызвать метод выдачи награды:
curl --request POST \
--url /v1/management/rewards/clients \
--data '{
"client_id": "12345",
"reward_id": "puzzle_complete_reward"
}'Несколько наград за одну коллекцию
В поле achievement хранится ID основной награды. Если нужно выдать несколько наград, это настраивается в Flow:
IF (collection "brands_collection" completed) THEN
Выдать reward "promo_1000"
Выдать reward "bonus_500"
Выдать achievement "brand_collector"
Повысить levelСовет: Поле achievement важно для подтягивания справочной информации о награде (название, описание, изображение), чтобы показать клиенту, что он получит за сбор коллекции.
Статусы коллекции
Коллекция может находиться в одном из следующих статусов:
| Статус | Описание | Применение |
|---|---|---|
active | Коллекция активна и доступна для сбора | Клиент может получать элементы и завершить коллекцию |
completed | Коллекция собрана полностью | Клиент собрал все элементы и получил награду |
expired | Коллекция просрочена | Срок сбора истек, получить элементы больше нельзя |
archived | Коллекция в архиве | Коллекция скрыта из UI, но данные сохранены |
Управление статусами
Статус коллекции изменяется двумя способами:
1. Автоматически через Flow:
IF (все элементы собраны) THEN
status = "completed"
IF (дата истечения наступила) THEN
status = "expired"2. Вручную через API:
curl --request PUT \
--url /v1/management/collections/environment_id/collection_id \
--data '{
"status": "archived"
}'Жизненный цикл статусов
active → completed
↓ ↓
expired → archivedПример: Сезонная коллекция "Летние стикеры":
- 01.06.2025:
status = active(начало сбора) - 15.07.2025: Клиент собрал все элементы →
status = completed - 31.08.2025: Срок истек →
status = expired(для тех, кто не успел) - 01.10.2025: Коллекция архивируется →
status = archived
Прогресс сбора коллекции
Система автоматически отслеживает прогресс сбора элементов каждым клиентом.
Как отслеживается прогресс
При получении коллекций клиента через API возвращается информация о прогрессе:
Пример ответа API:
{
"collections": [
{
"id": "puzz_bee_NA_hold",
"title": "Пазл Билайн",
"size": 12,
"elements": [
{
"element_id": "puzz_bee_1_NA",
"title": "Часть 1",
"position": 1
},
{
"element_id": "puzz_bee_5_NA",
"title": "Часть 5",
"position": 5
}
],
"status": "active",
"is_collected": false,
"collected": 2,
"remain": 10
}
]
}Поля прогресса:
| Поле | Тип | Описание |
|---|---|---|
is_collected | Boolean | Завершена ли коллекция (true = все элементы собраны) |
collected | Integer | Количество собранных элементов |
remain | Integer | Остаток промокодов по призу из поля achievement (не остаток элементов коллекции!) |
elements | Array | Массив уже собранных элементов клиента |
Важно: Поле remain показывает не количество оставшихся элементов коллекции, а остаток промокодов в стеке награды (achievement). Это полезно для мониторинга доступности наград.
Визуализация прогресса
На основе данных API можно отобразить прогресс клиента:
┌─────────────────────────────────────┐
│ 🧩 Пазл Билайн │
│ ━━━━━━━━░░░░░░░░░░░░░░░░░░ 16.7% │
│ Собрано: 2 из 12 │
│ │
│ ✅ Часть 1 ✅ Часть 5 │
│ ⬜ Часть 2 ⬜ Часть 3 ⬜ Часть 4 │
│ ⬜ Часть 6 ⬜ Часть 7 ⬜ Часть 8 │
│ ⬜ Часть 9 ⬜ Часть 10 ⬜ Часть 11│
│ ⬜ Часть 12 │
│ │
│ Награда: Промокод на 500₽ │
└─────────────────────────────────────┘Типы коллекций
1. Постоянные коллекции
Коллекции без ограничения по времени, доступные всегда:
{
"id": "brands_forever",
"title": "Коллекция брендов",
"status": "active",
"additional": {
"type": "permanent"
}
}Применение: Базовые коллекции программы лояльности, которые всегда доступны клиентам.
2. Сезонные коллекции
Коллекции с ограниченным периодом доступности:
{
"id": "summer_collection_2025",
"title": "Летняя коллекция 2025",
"status": "active",
"additional": {
"type": "seasonal",
"season": "summer",
"valid_from": "2025-06-01",
"valid_to": "2025-08-31"
}
}Применение: Временные акции, праздничные события, сезонные кампании.
Важно: По окончании сезона рекомендуется изменить статус коллекции на
expired, чтобы клиенты больше не могли получать элементы.
3. Тематические коллекции
Коллекции, объединенные общей темой:
{
"id": "sports_collection",
"title": "Спортивная коллекция",
"status": "active",
"additional": {
"type": "themed",
"theme": "sports",
"category": "lifestyle"
}
}Применение: Коллекции по интересам, хобби, категориям товаров.
Дубликаты элементов
Система автоматически защищает от получения дубликатов элементов.
Как это работает:
- Клиент получает элемент
element_id: "puzz_bee_1_NA" - Элемент сохраняется в коллекции клиента
- При попытке выдать тот же элемент повторно ничего не происходит
- Элемент остается в коллекции в единственном экземпляре
Пример:
# Первая выдача - успешно
POST /v1/internal/collections/clients
{
"client_id": "12345",
"element_id": "puzz_bee_1_NA"
}
→ Элемент добавлен, collected = 1
# Вторая выдача того же элемента - игнорируется
POST /v1/internal/collections/clients
{
"client_id": "12345",
"element_id": "puzz_bee_1_NA"
}
→ Ничего не происходит, collected = 1 (без изменений)Повторяемость коллекций
Рекомендация: Не рекомендуется делать коллекции повторяемыми.
Почему:
- Коллекции предназначены для одноразового сбора
- После завершения коллекция переходит в статус
completed - Повторный сбор может запутать клиентов
Альтернативы для повторяемости:
- Сезонные коллекции с разными ID:
{"id": "summer_2025", "title": "Лето 2025"}
{"id": "summer_2026", "title": "Лето 2026"}- Периодические коллекции:
{"id": "monthly_jan", "title": "Январская коллекция"}
{"id": "monthly_feb", "title": "Февральская коллекция"}- Уровневые коллекции:
{"id": "brands_level_1", "title": "Коллекция брендов: Уровень 1"}
{"id": "brands_level_2", "title": "Коллекция брендов: Уровень 2"}Совет: Вместо повторяемой коллекции создавайте новые коллекции с уникальными ID для каждого периода или уровня сложности.
Описание полей
Обязательные поля
| Параметр | Тип данных | Описание |
|---|---|---|
| environment_id | Varchar(50) | ID окружения, к которому относится коллекция |
| id | Varchar(50) | Уникальный идентификатор коллекции |
| title | Varchar(50) | Название коллекции |
| size | Integer | Общее количество элементов в коллекции (должно совпадать с длиной массива elements) |
| elements | JSON | Массив элементов коллекции. Структура: [{element_id, title, description, position}] |
| status | Varchar(50) | Статус коллекции: active, completed, expired, archived |
Поля с описанием
| Параметр | Тип данных | Описание |
|---|---|---|
| short_description | Varchar(250) | Краткое описание коллекции |
| full_description | String | Полное описание коллекции и условий сбора |
Награды
| Параметр | Тип данных | Описание |
|---|---|---|
| achievement | Varchar(250) | ID награды (reward), которая выдается при завершении коллекции. Используется для подтягивания справочной информации о награде |
Дополнительные поля
| Параметр | Тип данных | Описание |
|---|---|---|
| additional | JSON | Дополнительные параметры коллекции (тип, категория, изображения, даты действия и т.д.) |
| creator | Varchar(250) | Создатель коллекции (имя пользователя) |
Дополнительные параметры (additional)
Поле additional позволяет хранить любые кастомные параметры для визуализации и логики:
Примеры использования:
{
"additional": {
"type": "seasonal",
"season": "summer",
"valid_from": "2025-06-01",
"valid_to": "2025-08-31",
"category": "events",
"rarity": "rare",
"collection_image": "https://cdn.example.com/collections/summer_2025.png",
"collection_color": "#FFD700",
"icon_url": "https://cdn.example.com/icons/summer.png",
"reward_preview_url": "https://cdn.example.com/rewards/summer_bonus.png",
"completion_badge": "https://cdn.example.com/badges/summer_complete.png",
"display_order": 1,
"is_featured": true,
"required_level": 1,
"segment": "all"
}
}Возможные параметры:
type— тип коллекции (permanent, seasonal, themed, exclusive)season/theme/category— категоризацияvalid_from/valid_to— даты действия для сезонных коллекцийrarity— редкость коллекции (common, rare, epic, legendary)collection_image— изображение коллекцииcollection_color— цветовая тема коллекцииreward_preview_url— превью награды за сборcompletion_badge— бейдж за завершение коллекцииis_featured— флаг "избранной" коллекцииrequired_level— минимальный уровень для доступаsegment— целевой сегмент клиентов
Примеры заполнения Collections
Пример 1: Простая коллекция брендов
{
"environment_id": "accelera",
"id": "brands_collection",
"title": "Коллекция брендов",
"short_description": "Соберите логотипы 10 популярных брендов",
"full_description": "Покупайте товары разных брендов и получайте их логотипы в коллекцию. Соберите все 10 и получите промокод на 1000 рублей!",
"achievement": "brands_complete_reward",
"size": 10,
"elements": [
{
"element_id": "brand_apple",
"title": "Apple",
"description": "Логотип бренда Apple",
"position": 1
},
{
"element_id": "brand_samsung",
"title": "Samsung",
"description": "Логотип бренда Samsung",
"position": 2
},
{
"element_id": "brand_sony",
"title": "Sony",
"description": "Логотип бренда Sony",
"position": 3
}
// ... остальные 7 элементов
],
"status": "active",
"additional": {
"type": "permanent",
"category": "brands",
"collection_image": "https://cdn.example.com/collections/brands.png"
}
}Пример 2: Сезонная коллекция
{
"environment_id": "accelera",
"id": "summer_stickers_2025",
"title": "Летние стикеры 2025",
"short_description": "Соберите коллекцию из 15 летних стикеров",
"full_description": "Участвуйте в летних активностях и собирайте уникальные стикеры. Соберите все 15 и получите эксклюзивный летний аватар!",
"achievement": "summer_complete_bonus",
"size": 15,
"elements": [
{
"element_id": "summer_beach",
"title": "Пляж",
"description": "Летний стикер: Пляж",
"position": 1
},
{
"element_id": "summer_ice_cream",
"title": "Мороженое",
"description": "Летний стикер: Мороженое",
"position": 2
}
// ... остальные 13 элементов
],
"status": "active",
"additional": {
"type": "seasonal",
"season": "summer",
"valid_from": "2025-06-01",
"valid_to": "2025-08-31",
"category": "events",
"rarity": "rare",
"collection_image": "https://cdn.example.com/collections/summer_2025.png",
"collection_color": "#FFA500",
"is_featured": true
}
}Пример 3: Коллекция-пазл
{
"environment_id": "accelera",
"id": "puzzle_beeline",
"title": "Пазл Билайн",
"short_description": "Соберите пазл из 12 частей",
"full_description": "Открывайте сундуки и собирайте части пазла. Соберите все 12 частей и получите промокод на бесплатный месяц связи!",
"achievement": "puzzle_complete_promo",
"size": 12,
"elements": [
{
"element_id": "puzz_bee_1_NA",
"title": "Часть 1",
"description": "Первая часть пазла",
"position": 1
},
{
"element_id": "puzz_bee_2_NA",
"title": "Часть 2",
"description": "Вторая часть пазла",
"position": 2
}
// ... остальные 10 элементов
],
"status": "active",
"additional": {
"type": "themed",
"theme": "puzzle",
"category": "games",
"collection_image": "https://cdn.example.com/collections/puzzle_beeline.png",
"reward_preview_url": "https://cdn.example.com/rewards/free_month.png"
}
}Пример 4: VIP-коллекция (эксклюзивная)
{
"environment_id": "accelera",
"id": "vip_exclusive",
"title": "VIP Коллекция",
"short_description": "Эксклюзивная коллекция для VIP-клиентов",
"full_description": "Специальная коллекция, доступная только клиентам с VIP-статусом. Соберите 8 эксклюзивных элементов и получите легендарную награду.",
"achievement": "vip_legendary_reward",
"size": 8,
"elements": [
{
"element_id": "vip_diamond",
"title": "Алмаз",
"description": "VIP элемент: Алмаз",
"position": 1
},
{
"element_id": "vip_crown",
"title": "Корона",
"description": "VIP элемент: Корона",
"position": 2
}
// ... остальные 6 элементов
],
"status": "active",
"additional": {
"type": "exclusive",
"category": "vip",
"rarity": "legendary",
"required_level": 3,
"segment": "vip",
"collection_image": "https://cdn.example.com/collections/vip_exclusive.png",
"collection_color": "#9400D3",
"completion_badge": "https://cdn.example.com/badges/vip_master.png"
}
}Пример 5: Коллекция достижений
{
"environment_id": "accelera",
"id": "achievements_master",
"title": "Мастер достижений",
"short_description": "Получите все 20 основных достижений",
"full_description": "Получите все 20 достижений категории 'Основные' и докажите, что вы истинный мастер!",
"achievement": "achievements_master_badge",
"size": 20,
"elements": [
{
"element_id": "ach_first_purchase",
"title": "Первая покупка",
"description": "Достижение: Первая покупка",
"position": 1
},
{
"element_id": "ach_10_tasks",
"title": "10 заданий",
"description": "Достижение: Выполните 10 заданий",
"position": 2
}
// ... остальные 18 элементов
],
"status": "active",
"additional": {
"type": "permanent",
"category": "achievements",
"rarity": "epic",
"collection_image": "https://cdn.example.com/collections/achievements_master.png"
}
}Примеры API-запросов
Получение коллекций клиента
curl --request GET \
--url /v1/internal/collections/clients/client_id/environment_id \
--header 'accept: application/json' \
--header 'Content-Type: application/json'Пример ответа:
{
"collections": [
{
"datetime": "2025-08-27 15:21:16",
"time": "15:21",
"date": "2025-08-27",
"timestamp": "1756297276585",
"environment_id": "orange_dev",
"id": "puzz_a_per_10_NA",
"title": "пазл Апельсин",
"short_description": "",
"full_description": "",
"achievement": "puzz_a_per_10_NA",
"size": 12,
"elements": [],
"status": "active",
"creator": "admin",
"is_collected": false,
"collected": 0,
"remain": 0
},
{
"datetime": "2025-08-27 15:36:42",
"time": "15:36",
"date": "2025-08-27",
"timestamp": "1756298202141",
"environment_id": "orange_dev",
"id": "puzz_bee_NA_hold",
"title": "пазл билайн",
"short_description": "",
"full_description": "",
"achievement": "puzz_bee_NA_hold",
"size": 12,
"elements": [
{
"title": "",
"position": 1,
"element_id": "puzz_bee_1_NA",
"description": ""
}
],
"status": "active",
"creator": "admin",
"is_collected": false,
"collected": 1,
"remain": 0
}
]
}Описание полей ответа:
elements— массив собранных элементов клиента (пустой, если ничего не собрано)is_collected— завершена ли коллекция (true/false)collected— количество собранных элементовremain— остаток промокодов по призу из поляachievementdatetime,date,time,timestamp— метки времени последнего обновления
Выдача элемента коллекции клиенту
curl --request POST \
--url /v1/internal/collections/clients \
--header 'accept: application/json' \
--header 'Content-Type: application/json' \
--data '
{
"client_id": "12345",
"environment_id": "accelera",
"id": "puzzle_beeline",
"element_id": "puzz_bee_1_NA"
}
'Пример ответа:
{
"id": "puzz_bee_NA_hold",
"element_id": "puzz_bee_1_NA",
"client_id": "ayuka",
"size": 12,
"collected": 1,
"is_collected": false,
"achievement": "puzz_bee_NA_hold"
}Что происходит при вызове:
- Система проверяет, есть ли уже этот элемент у клиента
- Если элемента нет — добавляет его в коллекцию клиента
- Если элемент уже есть — ничего не происходит (защита от дубликатов)
- Обновляется прогресс:
collectedувеличивается - Если
collected == size, тоis_collected = true
Примечание: Ответ содержит актуальную информацию о прогрессе коллекции после добавления элемента.
Интеграция с другими сущностями
Collections интегрируются с другими механиками системы лояльности:
1. Rewards (Награды)
- Награда за коллекцию — поле
achievementсодержит ID reward - Элементы как награды — элементы коллекции могут выдаваться как rewards
Пример Flow:
Task completed → Выдать reward → Если reward содержит collection_element → Добавить элемент в коллекцию2. Items (Предметы)
- Элементы как items — элементы коллекции могут быть связаны с items
- Покупка элементов — некоторые элементы можно купить за баллы
Пример:
Item "Часть пазла №5" куплен → Добавить element_id в коллекцию3. Tasks (Задания)
- Элементы за задания — при выполнении задания выдать элемент коллекции
Пример Flow:
Task "Совершите покупку Apple" completed
↓
Выдать element "brand_apple" в коллекцию "brands_collection"4. Flow (Сценарии)
- Автоматическая выдача — Flow управляет выдачей элементов и наград
- Проверка завершения — Flow проверяет
is_collectedи выдает награды
Пример сценария:
Событие: purchase
↓
Получить brand покупки
↓
IF (element "brand_{brand}" не собран) → Выдать элемент
↓
Проверить: is_collected?
↓
IF (is_collected == true) THEN
Выдать reward из collection.achievement
Выдать achievement "Коллекционер"
Статус коллекции = completed
Отправить уведомление "Коллекция завершена!"Практические сценарии
Сценарий 1: Коллекция брендов через покупки
Задача: Мотивировать клиентов покупать товары разных брендов.
Реализация:
- Создать коллекцию из 10 брендов:
{
"id": "brands_electronics",
"title": "Коллекция брендов электроники",
"size": 10,
"elements": [
{"element_id": "brand_apple", "title": "Apple"},
{"element_id": "brand_samsung", "title": "Samsung"},
// ... 8 других брендов
],
"achievement": "brands_promo_1000"
}- В Flow настроить:
Событие: purchase
↓
brand = purchase.product_brand
↓
IF (brand входит в список элементов коллекции) THEN
element_id = "brand_{brand}"
Выдать элемент коллекции
IF (коллекция завершена) THEN
Выдать reward "brands_promo_1000" (промокод 1000₽)
Выдать achievement "Знаток электроники"Результат: Клиенты мотивированы покупать товары разных брендов для сбора коллекции.
Сценарий 2: Сезонная коллекция стикеров
Задача: Создать летнюю коллекцию стикеров с ограниченным временем.
Реализация:
- Создать сезонную коллекцию:
{
"id": "summer_stickers_2025",
"title": "Летние стикеры 2025",
"size": 15,
"status": "active",
"additional": {
"valid_from": "2025-06-01",
"valid_to": "2025-08-31"
}
}- Выдавать элементы за различные действия:
Ежедневный вход → Случайный летний стикер
Покупка > 1000₽ → 2 случайных стикера
Выполнение летнего задания → Редкий стикер- В конце августа:
31.08.2025: Изменить статус на "expired"
Для клиентов с is_collected = true → Выдать летнюю наградуРезультат: Временная коллекция мотивирует активность в летний период.
Сценарий 5: Коллекция городов (геолокационная)
Задача: Мотивировать клиентов совершать покупки в разных городах.
Реализация:
- Создать коллекцию городов:
{
"id": "cities_russia",
"title": "Путешественник по России",
"size": 12,
"elements": [
{"element_id": "city_moscow", "title": "Москва"},
{"element_id": "city_spb", "title": "Санкт-Петербург"},
// ... 10 других городов
],
"achievement": "traveler_badge"
}- В Flow отслеживать геолокацию покупок:
Событие: purchase
↓
city = purchase.location.city
↓
IF (city входит в список коллекции) THEN
element_id = "city_{city}"
Выдать элемент
IF (is_collected) → Повысить уровень до "Путешественник"Результат: Мотивация к покупкам в разных регионах.
Сценарий 6: Коллекция достижений
Задача: Создать мета-коллекцию из самих достижений.
Реализация:
- Создать коллекцию достижений:
{
"id": "achievements_collector",
"title": "Коллекционер достижений",
"size": 20,
"elements": [
{"element_id": "ach_first_purchase", "title": "Первая покупка"},
{"element_id": "ach_10_tasks", "title": "10 заданий"},
// ... 18 других достижений
],
"achievement": "meta_achievement_master"
}- В Flow:
Событие: Achievement получен
↓
achievement_id = event.achievement_id
↓
IF (achievement_id входит в коллекцию) THEN
Выдать элемент коллекции = achievement_id
IF (is_collected) → Выдать мета-достижение + легендарную наградуРезультат: Двойная мотивация — получение достижений и сбор коллекции из них.
Рекомендации по использованию
- Оптимальный размер — делайте коллекции из 8-15 элементов. Слишком маленькие (3-5) быстро завершаются, слишком большие (30+) демотивируют
- Четкие условия — описывайте в
full_description, как получить элементы коллекции - Визуальная привлекательность — используйте качественные изображения для коллекций и элементов
- Баланс сложности — часть элементов легко получить, часть — сложнее, самые редкие — через специальные активности
- Ценные награды — чем сложнее коллекция, тем ценнее должна быть награда
- Сезонность — используйте временные коллекции для создания срочности
- Прогресс-бары — всегда показывайте клиенту прогресс (X из Y собрано)
- Уведомления — информируйте о получении нового элемента и завершении коллекции
- Не повторяйте — создавайте новые уникальные коллекции вместо повторяемых
- Тестирование — проверьте баланс получения элементов перед запуском
Работа с Collections
Для работы с коллекциями используйте методы API, описанные выше. Коллекции могут создаваться и управляться через интерфейс ЛК менеджера или программно через API.
Интеграция с Flow позволяет:
- Автоматически выдавать элементы коллекций при выполнении условий
- Отслеживать прогресс сбора коллекций
- Выдавать награды при завершении коллекций
- Отправлять уведомления о новых элементах
- Создавать сложные механики получения элементов
Типичный workflow:
- Создание структуры коллекций в системе
- Определение элементов и их характеристик
- Настройка наград за завершение
- Создание сценариев выдачи элементов в Flow
- Настройка визуализации на фронтенде
- Тестирование механики сбора
- Запуск и мониторинг прогресса клиентов