Документация Accelera

Collections

Collections

Назначение Collections

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

Основные возможности:

  • Создание коллекционных наборов элементов любой тематики
  • Выдача элементов коллекции клиентам через API
  • Отслеживание прогресса сбора коллекции (собрано X из Y)
  • Выдача наград при сборе коллекции
  • Визуальное отображение собранных и недостающих элементов
  • Различные типы коллекций (постоянные, сезонные, тематические)

Как работают коллекции

Коллекции — это классическая игровая механика "собери всё", которая мотивирует клиентов к активности.

Принцип работы:

  1. Создание коллекции — администратор создает коллекцию с набором элементов
  2. Выдача элементов — клиенты получают элементы коллекции через API (за покупки, задания, сундуки и т.д.)
  3. Отслеживание прогресса — система показывает, сколько элементов собрано из общего количества
  4. Завершение коллекции — при сборе всех элементов коллекция считается завершенной
  5. Получение награды — клиент получает 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_idStringУникальный идентификатор элемента
titleStringНазвание элемента
descriptionStringОписание элемента
positionIntegerПозиция элемента в коллекции (для сортировки и отображения)

Выдача элементов клиенту

Элементы коллекции выдаются через специальный 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_collectedBooleanЗавершена ли коллекция (true = все элементы собраны)
collectedIntegerКоличество собранных элементов
remainIntegerОстаток промокодов по призу из поля achievement (не остаток элементов коллекции!)
elementsArrayМассив уже собранных элементов клиента

Важно: Поле 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"
  }
}

Применение: Коллекции по интересам, хобби, категориям товаров.

Дубликаты элементов

Система автоматически защищает от получения дубликатов элементов.

Как это работает:

  1. Клиент получает элемент element_id: "puzz_bee_1_NA"
  2. Элемент сохраняется в коллекции клиента
  3. При попытке выдать тот же элемент повторно ничего не происходит
  4. Элемент остается в коллекции в единственном экземпляре

Пример:

# Первая выдача - успешно
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
  • Повторный сбор может запутать клиентов

Альтернативы для повторяемости:

  1. Сезонные коллекции с разными ID:
{"id": "summer_2025", "title": "Лето 2025"}
{"id": "summer_2026", "title": "Лето 2026"}
  1. Периодические коллекции:
{"id": "monthly_jan", "title": "Январская коллекция"}
{"id": "monthly_feb", "title": "Февральская коллекция"}
  1. Уровневые коллекции:
{"id": "brands_level_1", "title": "Коллекция брендов: Уровень 1"}
{"id": "brands_level_2", "title": "Коллекция брендов: Уровень 2"}

Совет: Вместо повторяемой коллекции создавайте новые коллекции с уникальными ID для каждого периода или уровня сложности.

Описание полей

Обязательные поля

ПараметрТип данныхОписание
environment_idVarchar(50)ID окружения, к которому относится коллекция
idVarchar(50)Уникальный идентификатор коллекции
titleVarchar(50)Название коллекции
sizeIntegerОбщее количество элементов в коллекции (должно совпадать с длиной массива elements)
elementsJSONМассив элементов коллекции. Структура: [{element_id, title, description, position}]
statusVarchar(50)Статус коллекции: active, completed, expired, archived

Поля с описанием

ПараметрТип данныхОписание
short_descriptionVarchar(250)Краткое описание коллекции
full_descriptionStringПолное описание коллекции и условий сбора

Награды

ПараметрТип данныхОписание
achievementVarchar(250)ID награды (reward), которая выдается при завершении коллекции. Используется для подтягивания справочной информации о награде

Дополнительные поля

ПараметрТип данныхОписание
additionalJSONДополнительные параметры коллекции (тип, категория, изображения, даты действия и т.д.)
creatorVarchar(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 — остаток промокодов по призу из поля achievement
  • datetime, 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"
}

Что происходит при вызове:

  1. Система проверяет, есть ли уже этот элемент у клиента
  2. Если элемента нет — добавляет его в коллекцию клиента
  3. Если элемент уже есть — ничего не происходит (защита от дубликатов)
  4. Обновляется прогресс: collected увеличивается
  5. Если 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: Коллекция брендов через покупки

Задача: Мотивировать клиентов покупать товары разных брендов.

Реализация:

  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"
}
  1. В Flow настроить:
Событие: purchase

brand = purchase.product_brand

IF (brand входит в список элементов коллекции) THEN
  element_id = "brand_{brand}"
  Выдать элемент коллекции
  
IF (коллекция завершена) THEN
  Выдать reward "brands_promo_1000" (промокод 1000₽)
  Выдать achievement "Знаток электроники"

Результат: Клиенты мотивированы покупать товары разных брендов для сбора коллекции.

Сценарий 2: Сезонная коллекция стикеров

Задача: Создать летнюю коллекцию стикеров с ограниченным временем.

Реализация:

  1. Создать сезонную коллекцию:
{
  "id": "summer_stickers_2025",
  "title": "Летние стикеры 2025",
  "size": 15,
  "status": "active",
  "additional": {
    "valid_from": "2025-06-01",
    "valid_to": "2025-08-31"
  }
}
  1. Выдавать элементы за различные действия:
Ежедневный вход → Случайный летний стикер
Покупка > 1000₽ → 2 случайных стикера
Выполнение летнего задания → Редкий стикер
  1. В конце августа:
31.08.2025: Изменить статус на "expired"
Для клиентов с is_collected = true → Выдать летнюю награду

Результат: Временная коллекция мотивирует активность в летний период.

Сценарий 5: Коллекция городов (геолокационная)

Задача: Мотивировать клиентов совершать покупки в разных городах.

Реализация:

  1. Создать коллекцию городов:
{
  "id": "cities_russia",
  "title": "Путешественник по России",
  "size": 12,
  "elements": [
    {"element_id": "city_moscow", "title": "Москва"},
    {"element_id": "city_spb", "title": "Санкт-Петербург"},
    // ... 10 других городов
  ],
  "achievement": "traveler_badge"
}
  1. В Flow отслеживать геолокацию покупок:
Событие: purchase

city = purchase.location.city

IF (city входит в список коллекции) THEN
  element_id = "city_{city}"
  Выдать элемент
  
IF (is_collected) → Повысить уровень до "Путешественник"

Результат: Мотивация к покупкам в разных регионах.

Сценарий 6: Коллекция достижений

Задача: Создать мета-коллекцию из самих достижений.

Реализация:

  1. Создать коллекцию достижений:
{
  "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"
}
  1. В Flow:
Событие: Achievement получен

achievement_id = event.achievement_id

IF (achievement_id входит в коллекцию) THEN
  Выдать элемент коллекции = achievement_id
  
IF (is_collected) → Выдать мета-достижение + легендарную награду

Результат: Двойная мотивация — получение достижений и сбор коллекции из них.

Рекомендации по использованию

  1. Оптимальный размер — делайте коллекции из 8-15 элементов. Слишком маленькие (3-5) быстро завершаются, слишком большие (30+) демотивируют
  2. Четкие условия — описывайте в full_description, как получить элементы коллекции
  3. Визуальная привлекательность — используйте качественные изображения для коллекций и элементов
  4. Баланс сложности — часть элементов легко получить, часть — сложнее, самые редкие — через специальные активности
  5. Ценные награды — чем сложнее коллекция, тем ценнее должна быть награда
  6. Сезонность — используйте временные коллекции для создания срочности
  7. Прогресс-бары — всегда показывайте клиенту прогресс (X из Y собрано)
  8. Уведомления — информируйте о получении нового элемента и завершении коллекции
  9. Не повторяйте — создавайте новые уникальные коллекции вместо повторяемых
  10. Тестирование — проверьте баланс получения элементов перед запуском

Работа с Collections

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

Интеграция с Flow позволяет:

  • Автоматически выдавать элементы коллекций при выполнении условий
  • Отслеживать прогресс сбора коллекций
  • Выдавать награды при завершении коллекций
  • Отправлять уведомления о новых элементах
  • Создавать сложные механики получения элементов

Типичный workflow:

  1. Создание структуры коллекций в системе
  2. Определение элементов и их характеристик
  3. Настройка наград за завершение
  4. Создание сценариев выдачи элементов в Flow
  5. Настройка визуализации на фронтенде
  6. Тестирование механики сбора
  7. Запуск и мониторинг прогресса клиентов

На этой странице

CollectionsНазначение CollectionsКак работают коллекцииПримеры использованияПример 1: Коллекция брендовПример 2: Коллекция сезонных предметовПример 3: Коллекция региональных товаровПример 4: Коллекция достиженийПример 5: Коллекция карточек/стикеровЭлементы коллекцииСтруктура элементаВыдача элементов клиентуКак клиенты получают элементыРазмер коллекцииНаграда за коллекциюКак работает выдача наградыНесколько наград за одну коллекциюСтатусы коллекцииУправление статусамиЖизненный цикл статусовПрогресс сбора коллекцииКак отслеживается прогрессВизуализация прогрессаТипы коллекций1. Постоянные коллекции2. Сезонные коллекции3. Тематические коллекцииДубликаты элементовПовторяемость коллекцийОписание полейОбязательные поляПоля с описаниемНаградыДополнительные поляДополнительные параметры (additional)Примеры заполнения CollectionsПример 1: Простая коллекция брендовПример 2: Сезонная коллекцияПример 3: Коллекция-пазлПример 4: VIP-коллекция (эксклюзивная)Пример 5: Коллекция достиженийПримеры API-запросовПолучение коллекций клиентаВыдача элемента коллекции клиентуИнтеграция с другими сущностями1. Rewards (Награды)2. Items (Предметы)3. Tasks (Задания)4. Flow (Сценарии)Практические сценарииСценарий 1: Коллекция брендов через покупкиСценарий 2: Сезонная коллекция стикеровСценарий 5: Коллекция городов (геолокационная)Сценарий 6: Коллекция достиженийРекомендации по использованиюРабота с Collections