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

Environments

Назначение Environments

Окружение (Environment) используется для создания справочников компонентов, из которых строится программа лояльности.

Ключевые особенности:

  • Все сущности, созданные в рамках одного окружения, связаны между собой и относятся к одной программе лояльности
  • Каждое окружение имеет уникальный environment_id, который используется для связывания сущностей
  • При создании окружения в базе данных автоматически создается схема с именем environment_id, в которой хранятся все сущности этого окружения

Когда создавать несколько окружений?

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

Примеры использования:

  1. Разные сервисы – сервис вызова такси и сервис аренды самоката, каждый со своей программой лояльности
  2. Разные аудитории – программа лояльности для клиентов и отдельная программа для сотрудников компании
  3. Тестирование – окружения для production, staging и development с одинаковыми настройками, но изолированными данными

Жизненный цикл Environment

Статусы окружения:

  • active – окружение активно и доступно для использования
  • inactive – окружение неактивно, но данные сохранены

Удаление окружения:

  • Окружение можно удалить из системы
  • Сущности, созданные в рамках этого окружения, остаются в базе данных
  • При попытке обращения к API с удаленным environment_id система вернет ошибку

Ограничения:

  • environment_id нельзя изменить после создания – это уникальный ключ
  • Все остальные параметры окружения можно редактировать в любое время

Изоляция данных

Как работает изоляция:

  • Один клиент может существовать в нескольких окружениях одновременно
  • В каждом окружении у клиента будут независимые данные (разные задания, награды, балансы и т.д.)
  • Прямого переноса сущностей между окружениями в системе не предусмотрено

Пример: Пользователь Иван участвует в программе лояльности для клиентов (environment_id: customers) и в программе для VIP-участников (environment_id: vip). В первой программе у него 500 баллов и 3 задания, во второй – 1000 баллов и другой набор заданий.

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

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

ПараметрТип данныхОписание
environment_idVarchar(50)ID окружения (игры). Уникальный идентификатор, допускается использование латиницы и _. Нельзя изменить после создания
statusStringСтатус окружения. Возможные значения: active, inactive
standStringСтенд окружения. Возможные значения: production, staging, development. Используется для разделения окружений на разных стендах с одинаковыми настройками, но изолированными данными
is_visibleBooleanФлаг доступности окружения для отображения
saltStringСоль для авторизационных процессов хэширования ID клиента (свободный текст, может быть изменен)

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

ПараметрТип данныхОписание
nameVarchar(100)Название окружения
categoriesArray(String)Категории окружения. Используются для группировки и фильтрации окружений по типам (например: "loyalty", "cashback", "gamification")
groupsArray(String)Группы окружения. Используются для объединения окружений в логические группы (например: "retail", "finance", "telecom")
titleVarchar(100)Заголовок окружения
short_descriptionVarchar(250)Краткое описание окружения
full_descriptionStringПолное описание окружения
disclaimerStringДисклеймер

Медиа и ссылки

ПараметрТип данныхОписание
imageVarchar(50)ID загруженного файла
image_urlStringАдрес картинки
thumbnailVarchar(50)ID загруженного файла
thumbnail_urlStringАдрес картинки
homepageStringСсылка на лендинг окружения
rulesVarchar(50)ID загруженного файла правил
rules_urlStringСсылка на правила акции
policyVarchar(50)ID загруженного файла политики
policy_urlStringСсылка на политику конфиденциальности
faqVarchar(50)ID загруженного файла вопросов
faq_urlStringСсылка на вопросы/ответы

Флаги и доступы

ПараметрТип данныхОписание
whitelist_idStringID белого списка для доступа к окружению. Ссылается на файл со списком разрешенных пользователей, загруженный в отдельном разделе. Если поле пустое – ограничения отсутствуют
blacklist_idStringID черного списка. Ссылается на файл со списком заблокированных пользователей. Пользователи из черного списка не имеют доступа к окружению
is_multiplayerBooleanФлаг признака сетевой игры (используется для игровых механик)
multiplayer_nodeStringНода мультиплеер сервера
multiplayer_keyStringКлюч авторизации сетевого нода

Примечание: Белые и черные списки хранятся как отдельные файлы с уникальными идентификаторами, которые загружаются в специальном разделе системы.

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

ПараметрТип данныхОписание
privateJSONДополнительные приватные параметры и ключи (для внутреннего использования системой)
additionalJSONДополнительные опциональные параметры. Используется для задания кастомных параметров, которых нет в стандартной структуре данных. Позволяет расширять функционал без изменения схемы базы данных

Пример заполнения Environment

environment_id: accelera

status: active

stand: production

is_visible: true

salt: salt123

name: Accelera Loyalty

categories: ["loyalty", "cashback"]
groups: ["accelera_loyalty"]
title: Лояльность Accelera

short_description: Лояльность в сфере B2B

full_description: Полное описание окружения
disclaimer: Дисклеймер

whitelist_id: ID белого списка
blacklist_id: ID черного списка
is_multiplayer: false

private: {}
additional: {}

Примеры API-запросов

Создание нового окружения

curl --request POST \
     --url /v1/management/environments \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "environment_id": "accelera",
  "status": "active",
  "stand": "production",
  "is_visible": true,
  "salt": "salt123",
  "name": "Accelera Loyalty",
  "title": "Лояльность Accelera",
  "categories": ["loyalty", "cashback"],
  "groups": ["accelera_loyalty"]
}
'

Получение данных об окружении

curl --request GET \
     --url /v1/management/environments/{{environment_id}} \
     --header 'accept: application/json'

Список всех окружений

curl --request GET \
     --url /v1/management/environments \
     --header 'accept: application/json'

Обновление данных об окружении

curl --request PUT \
     --url /v1/management/environments/{{environment_id}} \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "status": "inactive",
  "stand": "development",
  "name": "Updated Name"
}
'

Примечание: При обновлении можно передавать только те поля, которые нужно изменить. Поле environment_id изменить нельзя.

Удаление окружения

curl --request DELETE \
     --url /v1/management/environments/{{environment_id}} \
     --header 'accept: application/json'

Важно: При удалении окружения сущности остаются в базе данных, но становятся недоступными через API с удаленным environment_id.

Интеграция с модулем Flow

Как Environment взаимодействует с Flow:

Сценарии в модуле Flow могут вызывать API-методы для создания, изменения или удаления сущностей лояльности при выполнении определенных условий поведения клиентов.

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

  1. В сценарии Flow настраивается логика обработки событий (например, "при покупке начислить баллы")
  2. При вызове API-метода в URL запроса подставляется environment_id
  3. Система обращается к соответствующей схеме базы данных и выполняет операцию с сущностями этого окружения
  4. События из разных окружений обрабатываются изолированно друг от друга

Это позволяет одним сценарием в Flow обслуживать несколько программ лояльности, просто подставляя нужный environment_id в запросы.

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