Глоссарий¶
Единый словарь терминов CM Ocean Loyalty. Определения соответствуют реальной модели данных
ядра-леджера loyalty-billing и доменной логике начисления/списания. Термины, относящиеся к
дорожной карте, помечены явно.
Как читать
Многие операции выражены в минорных единицах (целые *_minor, amount_minor): балл
хранится как целое число минорных долей согласно precision валюты баллов — это исключает
ошибки округления в проводках двойной бухгалтерии.
Базовые понятия¶
| Термин | Определение |
|---|---|
| Программа лояльности (ПЛ) | Совокупность правил начисления и списания баллов, акций и уровней, по которым клиент накапливает и тратит ценность. Базовые правила программы задаёт активная конфигурация программы. |
| Участник / клиент | Физлицо, участвующее в программе. Идентифицируется внешним идентификатором externalId (запись customer). Профиль клиента (golden record) ведётся во внешнем модуле MDM; модуль обращается к нему через адаптер. |
| Балл | Внутренняя «валюта» лояльности. Хранится как запись справочника currency (на стенде — PTS, «Points», precision = 2). Денежные суммы акций задаются в минорных единицах. |
Счета, баланс и леджер¶
CM Ocean Loyalty построен на двойной бухгалтерии: каждая операция — это проводка, движущая средства между счетами. Прошлое неизменяемо (леджер только дополняется, append-only).
| Термин | Определение |
|---|---|
| Счёт (account) | Запись на плане счетов (chart_of_accounts) в конкретной валюте. Хранит накопленные обороты total_debit / total_credit, из которых выводится баланс. У клиента — счёт начисленных баллов в каждой включённой валюте; у системы — служебные счета (источник начислений, списание, сгорание). |
| Леджер / проводка (ledger_entry) | Append-only журнал движений средств между счетами. Прошлое никогда не пересчитывается: изменение правила порождает новую версию, применяемую только к будущим событиям. |
| Баланс | Полная сумма баллов на счёте (накопленный итог проводок). |
| Удержано (held) | Часть баланса, зарезервированная активными удержаниями (см. hold), но ещё не списанная. |
| Доступно (available), доступный остаток | Баллы, которые может взять новая операция, не лишив подтверждения ни один активный резерв: max(0, баланс − резервы − баллы с наступившим сроком + покрытое), где покрытое — часть резервов, которую подтвердят баллы с наступившим, но ещё не сожжённым сроком. Пока таких баллов нет, это баланс − активные удержания. |
| Баллы с наступившим сроком | Баллы, срок которых уже наступил, но прогон сгорания их ещё не сжёг: они остаются на счёте, но новой операции уже недоступны. |
| Лот (account_lot) | Партия начисленных баллов со своим сроком жизни. Срок и его источник фиксируются при начислении и не пересчитываются. Списание идёт по лотам в порядке, заданном операционной конфигурацией (FIFO / LIFO / FEFO, по умолчанию FEFO). |
| Источник срока партии | Звено цепочки, из которого партия баллов получила срок: акция, запрос начисления, субсчёт, уровень клиента или валюта. Если срок не задан нигде, партия не сгорает. Фиксируется при начислении (expirySource). |
Начисление и списание¶
sequenceDiagram
participant C as Событие/чек
participant L as Леджер
C->>L: Начисление (accrual / top-up)
Note over L: баланс растёт, создаётся лот
C->>L: Hold (резерв)
Note over L: available уменьшается, проводки нет
alt подтверждено
C->>L: Commit → списание (withdraw)
else отменено / истёк срок
C->>L: Cancel → резерв снят
end
| Термин | Определение |
|---|---|
| Начисление (accrual / top-up) | Зачисление баллов клиенту: по событию/чеку, акции, ручной операцией оператора. Увеличивает баланс и создаёт лот. |
| Списание (redemption) | Уменьшение баллов клиента. Реализовано как двухфазная операция (резерв → фиксация), чтобы корректно работать с POS и внешними транзакциями. Проверяется по правилам списания активной конфигурации программы. |
| Hold (удержание / резерв) | Первая фаза списания: мягкая бронь баллов против доступного остатка (redemption_hold, статус ACTIVE), без движения в леджере. Всегда имеет срок: без явного срока действует срок по умолчанию (redemption.hold-ttl, 30 минут). |
| Commit (фиксация) | Подтверждение удержания: резерв превращается в реальное списание (withdraw) — проводка в леджере. |
| Cancel (отмена) | Снятие удержания без списания: зарезервированные баллы снова становятся доступными. |
| Сгорание (breakage) | Аннулирование остатка лота после наступления срока; сгоревшая сумма уходит на служебный счёт сгорания (по умолчанию BRK). Баллы с наступившим сроком недоступны сразу, прогон сгорания списывает их позже. |
| Сторно начисления (REVERSAL) | Отмена ранее сделанного начисления (возврат покупки, отзыв промокода) отдельным типом движения. Тратой клиента не считается и из валового «Начислено» не вычитается. |
| Возврат по чеку | Операция кассы по исходному чеку: сторнирует баллы, начисленные по чеку, пропорционально сумме возврата и уменьшает накопление для уровня. Баланс в минус не уходит: уже потраченные баллы не сторнируются. |
| Идемпотентность | Гарантия, что повтор одной и той же денежной операции не выполнится дважды. Обеспечивается заголовком Idempotency-Key: результат первой обработки сохраняется (idempotency_record) и возвращается на повторах. Дополнительный страховочный контур — уникальная бизнес-ссылка проводки (ledger_posting_reference). |
| Оптимистическая блокировка (If-Match / ETag) | Защита записей, которые правят несколько администраторов (теги, метки, черновик конфигурации программы, реестр условий акции, версия настройки карточки клиента): изменение передаёт в заголовке If-Match версию, полученную при чтении; устаревшая версия — 409 version_conflict, отсутствие заголовка — 428 version_required. |
Акции и механики¶
Канон терминологии
Механика — это шаблон (универсальная логика). Акция — это инстанс механики с конкретными параметрами. Механик — десятки (пишутся один раз), акций — много, вплоть до персональных.
| Термин | Определение |
|---|---|
| Механика (mechanic) | Шаблон акции — тип логики начисления. Справочник mechanic с параметрами механики (param_def). Реализованные коды приведены ниже. |
| Параметр-награда | Параметр механики, который задаёт размер вознаграждения: процент кэшбэка, баллы за единицу, множитель или баллы в подарок. Ставку для расчёта сервер берёт из этого параметра. |
| Акция (promotion) | Конкретный инстанс механики (promotion): период (starts_at/ends_at), параметры механики, условия (criteria_json), тип события, лимит бонуса (max_bonus_minor), бюджет (budget_minor), приоритет, группа. Имеет статус и человекочитаемый код вида PR-00001. |
| Тип события акции | Событие, на которое реагирует акция. Задаётся значением из справочника event-type (в поставке — «Покупка»). Применение акции пока всегда запускает событие покупки: движок тип события не читает. |
| Тип начисляемых баллов | Субсчёт валюты баллов программы, в который акция начисляет баллы. По умолчанию — «Акционные баллы» (PROMO). |
| Срок жизни начисляемых баллов | Срок в днях, который акция задаёт партиям начисленных ею баллов. Если поле пустое, срок берётся по цепочке: субсчёт → уровень клиента → базовый срок валюты баллов. |
| Арбитраж | Разрешение конкуренции между несколькими подходящими к событию акциями. Поле stacking (STACKABLE / нестыкуемая) определяет, складываются ли эффекты; priority задаёт порядок. |
| Версия акции | Изменение правил акции порождает новую версию (root_id — корень линии версий, revision — номер ревизии), применяемую только к будущим событиям. Прошлые начисления не пересчитываются. Параллельные правки защищены оптимистичной блокировкой (version). |
| Линия версий акции | Все версии одной акции (rootId); по ней считаются бюджет, участия и ключ дедупликации начислений — повтор события покупки не задваивает начисление после правки акции. |
| Статистика акции | Проекция результатов (promotion_stat): число применений и сумма начисленных баллов по акции; обновляется транзакционно в цикле покупки. |
| Превью акции | Чек-лист в правой колонке формы акции: «Готово к запуску: N из 6» по строкам «Механика», «Период», «Условия», «Приоритет», «Совмещение», «Ограничения». |
| Согласование запуска | Проверка акции перед запуском по принципу «четырёх глаз»: акцию готовит автор, согласует другой сотрудник с правом LOYALTY_PROMOTION_APPROVE, запускает сотрудник с правом LOYALTY_PROMOTION_ACTIVATE. Включается настройкой развёртывания. |
| Статус согласования | Состояние акции в процессе согласования, отдельное от её статуса: «В работе», «На согласовании», «Согласована», «Отклонена». |
| Метка акции | Значение справочника меток, которым акции объединяются в кампанию; носитель метки — версия акции; по меткам работают фильтр каталога и условие «участие в акциях». Справочник ведётся на собственном экране (роли LOYALTY_PROMOTION_LABEL_READ/WRITE). |
| Архив акции | Обратимый признак «убрана из рабочего списка» (archived); статус акции не меняет, но исключает её из расчёта начислений и запрещает правку. Заменил прежний статус ARCHIVED. |
Запланирована (SCHEDULED) |
Статус акции, запуск которой подтверждён, но период ещё не начался; система сама переводит акцию в «Активна» по дате начала. |
Завершена (COMPLETED) |
Терминальный статус акции после окончания периода; новой версии не получает — повторить акцию можно только копией. |
| Набор участий | Группа акций (по меткам, конкретным акциям и «Этой акции») с порогом числа участий и периодом, используемая в условии «Участие в акциях»; наборы в одной зоне соединяются логическим «И». |
| Участие | Факт применения акции к покупке клиента; фиксируется всегда, по линии версий акции, и не отменяется сторно. |
| Окно лимита участий | Период, за который считается лимит участий акции: «За всё время акции», по календарю (день, неделя, месяц — окна подряд от начала периода акции) или «За последние N дней» до покупки. |
| Битая ссылка | Ссылка условия акции на удалённый тег, метку, акцию или сегмент: черновик с ней сохранить можно, запустить акцию — нельзя, а работающая акция с ней ни к кому не применяется. |
Реализованные механики (таблица mechanic):
| Код | Название | Суть |
|---|---|---|
CASHBACK |
Кэшбэк | Процент от суммы покупки баллами |
MULTIPLIER |
Множитель | Умножение базового начисления |
GIFT |
Подарок | Фиксированное начисление за событие |
REFERRAL |
Реферальная | Начисление за приведённого друга |
UNIT_BONUS |
Начисление за единицу | Баллы за натуральный объём: количество (литры/штуки/…) × ставка |
Реферальная программа
Механика REFERRAL начисляет баллы за приведённого друга. На её основе создаются
конкретные реферальные акции (период, параметры, условия).
Условия акции и реестр условий¶
| Термин | Определение |
|---|---|
| Условия акции (условия аудитории) | Условия вкладки «Условия» акции в двух зонах («Акция применяется, если» / «Не применяется, если»): список criteria (товары, место покупки, мерчант, канал, сегменты, сумма чека, дополнительные условия), params.conditions.client (статус, уровень, баланс) и audience (теги клиента и участие в акциях). Акция применяется, если событие удовлетворяет всем включающим условиям и ни одному исключающему. |
| Настройка акции (реестр условий акции) | Экран «Администрирование → Настройка акции» и справочник условий, из которых строится вкладка «Условия» акции. В нём задаются показ и порядок коробочных условий и дополнительные условия внедрения. API — /v1/admin/promotion-criteria. |
| Коробочное условие | Условие акции, поставляемое с продуктом: «Категории товаров», «Артикулы (SKU)», «Регион», «Город», «Магазин», «Мерчант», «Канал продаж», «Сегменты клиентов», «Сумма чека». Его можно только скрыть и переставить; подпись, зоны и правило сравнения заданы продуктом. |
| Дополнительное условие | Условие акции, которое внедрение добавляет в «Настройке акции». Сравнивает переменную покупки (код purchase.<переменная>) или поле профиля клиента (код customer.<поле>) со значениями, заданными выбранным способом. |
| Переменная покупки | Произвольная пара «название — значение» (attributes) в событии покупки или чеке кассы: на весь чек или у позиции. По переменной работают дополнительные условия акции; переменная позиции главнее переменной чека. |
| Способ задать значение | Как в акции задаётся значение дополнительного условия: «Из справочника» (REF_LIST, записи справочника по коду или названию), «Ручной ввод» (MANUAL — текст, число или дата) или «Диапазон» (RANGE — число или дата, границы включительны). |
| Скрытое условие | Условие, выключенное или удалённое в «Настройке акции». Новым акциям не предлагается, но в акциях, где уже заполнено, продолжает действовать и показывается с тегом «Скрыто в настройке». Копия акции его не переносит. |
Конфигурация программы и уровни¶
| Термин | Определение |
|---|---|
| Конфигурация программы | Набор базовых правил программы лояльности: акции программы, правила списания, уровни и режим их пересчёта. Конфигураций может быть несколько, действует ровно одна — активная, остальные хранятся как черновики. Активная правится через дублирование и активацию копии (/v1/program-configs). |
| Черновик с клиентами | Бывшая активная конфигурация, по которой ещё живут клиенты — до их первой операции или пересмотра (customersCount > 0). Такой черновик открывается только для просмотра, удалить его нельзя (config_has_customers). |
| Акции программы | Акции, привязанные к конфигурации как база начисления. Привязка держится за линию версий; привязанную акцию нельзя удалить (promotion_bound_to_config). |
| Акции уровня | Акции программы, назначенные уровню в конфигурации («Акции начисления»). Хранятся в условии акции «Уровень клиента» парой «конфигурация + код уровня» и задают ставку начисления клиентам уровня. |
| Уровень (тир) | Ступень программы внутри конфигурации (loyalty_tier): порог по сумме (thresholdMinor) и/или количеству покупок (entryCount). Собственной ставки у уровня нет — начисление задают акции уровня. Уровень клиента хранится (customer_tier): повышается при покупке, когда накопление за период конфигурации достигает порога, понижается только на пересмотре или при переносе на новую активную конфигурацию. |
| Механика перехода | По чему клиент попадает на уровень (tierMetric): сумма покупок, количество покупок или оба условия сразу. |
| Скользящее окно / персональный период | Режимы пересчёта уровня (tierRecalc). Скользящее окно учитывает покупки за последние N дней с пересмотром раз в заданный интервал. Персональный период закрепляет уровень на срок с даты получения; при включённом переносе излишек переходит в новый период. |
| Пересмотр уровня | Пересчёт уровня клиента в его личную дату: понижение, удержание или продление, переход на активную конфигурацию, снятие ручного назначения. Выполняется фоновым заданием по расписанию LOYALTY_TIER_REVIEW_CRON (по умолчанию выключено). |
| Перенос системой (migration) | Переход клиента на уровень новой активной конфигурации при первой покупке или списании после активации, не дожидаясь пересмотра. Уровень может понизиться, ручное назначение снимается. В отчёте по уровням не считается ни повышением, ни понижением. |
Бизнес-день, справочники и настройки¶
| Термин | Определение |
|---|---|
| Бизнес-день (business_day) | Операционная дата, к которой привязаны операции. Открыт ровно один день; операциям проставляется его дата — это фиксирует границу для дневного отчёта. Закрытый день не переоткрывается: исправление проводится встречной операцией текущим днём. |
| Справочник (НСИ) | Набор нормативно-справочных значений. Модель гибридная: операционные справочники хранятся локально (reference_entry, generic-таблица dict_key + code + label), системные — в таблицах своих подсистем, сложные — на собственных экранах. Подключение внешнего dictionary-api сохранено, но сейчас ни один справочник из него не читается. Примеры локальных: группы акций, типы событий, каналы, причины операций, гео-регионы, типы баллов. |
| Жизненный цикл записи НСИ | Запись справочника проходит статусы DRAFT → ACTIVE → ARCHIVED (reference_entry.status); изменения фиксируются в журнале аудита (dictionary_audit: действие, оператор, время). Архивная запись не редактируется напрямую — сначала её нужно вернуть в ACTIVE. |
| Справочник со своим экраном (OWN_SCREEN) | Справочник, который ведётся не общим механизмом записей reference_entry, а своим API и своей парой ролей: теги клиентов, метки акций, сегменты клиентов, города, торговые точки, мерчанты, категории товаров и SKU. Общие ручки /v1/admin/dictionaries/** по его ключу отвечают 409 dictionary_own_screen. |
| Торговая точка | Магазин программы с кодом, городом и адресом. Код точки обязателен в событии покупки: по нему определяются точка, город и регион для условий акции. Точку не удаляют, а закрывают. |
| Мерчант (MID) | Точка приёма партнёрских платежей из справочника мерчантов: MID (уникальный код из процессинга), название, партнёр, MCC, город, состояние ACTIVE/CLOSED. По MID партнёрская транзакция находит партнёра, по нему же работают условие акции «Мерчант» и область списания субсчёта «где». |
| Каталог товаров | Собственный справочник продукта: дерево категорий до трёх уровней и товары (SKU) с категориями всех трёх уровней, брендом и настраиваемыми полями. Ведётся через API и CSV-импорт, даёт значения условиям акции «Категории товаров» и «Артикулы (SKU)». |
| Единица измерения (unit_of_measure) | Натуральная единица как данные, а не литерал: код, символ, число знаков (decimals), измерение (dimension: VOLUME/MASS/COUNT/…). Примеры: литр, кг, штука, киловатт-час. Потребитель — механика UNIT_BONUS. |
| Операционная конфигурация | Набор системных параметров леджера (системные счета, валюта баллов, порядок списания, срок резерва, часовой пояс программы), переопределяемых в БД поверх env-дефолта через GET/PUT /v1/admin/system-config, без передеплоя. |
| Часовой пояс программы | Единый пояс контура (идентификатор IANA, program.timezone). В нём интерфейс вводит и показывает даты, а сервер режет календарные сутки, датирует операции при пустом справочнике рабочих дней и выполняет расписания сгорания, предупреждений и выгрузок. Технический пояс среды исполнения — всегда UTC. |
Баллы: субсчета, сроки, причины, ручные операции¶
| Термин | Определение |
|---|---|
| Субсчёт баллов | Целевой счёт внутри карты клиента (приветственные, партнёрские, акционные баллы) со своим правилом сгорания, областью списания и местом в очереди списания; самостоятельный счёт леджера. |
| Базовый субсчёт | Субсчёт валюты с кодом BASE («Основной»), закреплённый за ней: на него попадают начисления без указанного субсчёта и на нём открываются счета клиентов. Своего срока сгорания и области списания у него нет. Заменил прежний «основной субсчёт (по умолчанию)». |
| Акционные баллы | Субсчёт PROMO балльной валюты — тип начисляемых баллов акции по умолчанию. |
| Общий срок | Режим сгорания субсчёта без своего срока: баллы живут по сроку уровня клиента или по базовому сроку жизни баллов валюты. |
| Базовый срок жизни баллов | Срок в днях, заданный у балльной валюты («Срок жизни баллов, дней»). Последнее звено цепочки, по которой определяется срок начисленных баллов. |
| Область списания | Где (мерчанты, торговые точки) и на что (товары, категории) можно тратить баллы. Значения одного вида объединяются через «или», разные виды — через «и». У субсчёта область действует при списании за покупку; у акции область пока только хранится и записывается на партию баллов при начислении. |
| Очередь списания | Порядок обхода субсчетов при списании: не хватило остатка на первом субсчёте — списание переходит на следующий по приоритету. |
| Шаг предупреждения о сгорании | Срок до сгорания (например, P7D), за который клиенту отправляется предупреждение. По каждой партии и шагу уходит ровно одно предупреждение. |
| Пробный прогон сгорания | Запуск сгорания с dryRun=true: возвращает объём, который сгорел бы, но ничего не меняет. |
| Корректировка | Снятие баллов оператором на отдельный системный счёт корректировок (CORR); отличается от траты клиента типом движения CORRECTION и отдельным счётом. |
| Пакет ручной операции (batch) | Принятый к исполнению список клиентов с одинаковыми параметрами операции (начисление, корректировка, перевод уровня, добавление или снятие тегов); выполняется чанками в фоне, имеет статус, счётчики и CSV-отчёт по batchId. |
Код отказа строки пакета (execution_*) |
Код строки пакета, отказавшей уже при выполнении, а не при проверке списка: тот же доменный код с префиксом execution_ (например, execution_insufficient_points); строка, до которой пакет не дошёл из-за сбоя, — batch_aborted. |
| Отложенное выполнение | Момент, не раньше которого будет выполнен принятый пакет ручной операции; трактуется в часовом поясе программы. |
| Причины операций | Справочник кодов причин ручных операций; причина «Прочее» требует комментария и отдельной роли (LOYALTY_OPERATION_REASON_OTHER_WRITE). |
| Базовая валюта | Единственная включённая денежная валюта программы, в которой выражаются курсы балльных валют и бюджеты акций. |
| Пара обмена | Правило обмена между двумя балльными валютами: режим курса (базовый, за единицу, пачками), округление, направление и ограничения — минимум, лимит за период, разрешённые субсчета. Операция обмена пары пока не применяет. |
| Базовый курс обмена | Курс обмена двух балльных валют, вычисленный как отношение их курсов к базовой денежной валюте. |
Клиенты, профиль и теги¶
| Термин | Определение |
|---|---|
| Настройка профиля клиента (версия настройки карточки) | Версионируемая настройка карточки клиента: карточки левой колонки, разделы и таблицы данных, атрибуты и столбцы. Одна версия активна — по ней собирается карточка у всех операторов, остальные — черновики; изменения вступают в силу активацией. |
| Атрибут клиента | Поле карточки клиента, заведённое в конфигураторе: техническое название (ключ), описание (подпись), тип данных и способ ввода. Значение вводится оператором и хранится в лояльности либо читается из колонки таблицы-источника. |
| Таблица данных по клиенту | Вкладка правой части карточки клиента, показывающая строки таблицы-источника базы данных, связанные с клиентом по колонке external_id; состав и подписи столбцов задаются в конфигураторе. |
| Вкладка продукта | Вкладка карточки клиента, содержимое которой задаёт продукт: «Счета и балансы», «Бонусные операции», «Сроки сгорания», «История уровней», «Статус клиента», «Достижения», «Рефералы», «Участие в акциях». Её нельзя удалить, но можно переименовать, переставить и перенести в другой раздел. |
| Тег клиента | Запись справочника тегов (нормализованное значение до 60 символов), присвоенная клиенту; используется в фильтре каталога клиентов и в условиях аудитории акций. |
| Справочник тегов | Единственный источник значений тегов клиента; ведётся на собственном экране под правами LOYALTY_TAG_READ/WRITE. |
| Сегмент клиентов | Группа клиентов, которую заводит и наполняет внешняя система кампаний. Используется в условии акции «Сегменты клиентов», в аудитории партнёрских предложений и в разрезе SEGMENT лимитов списания. Сегмент из условий работающей акции удалить нельзя. |
| Заливка сегмента | Загрузка состава сегмента из внешней системы кампаний (Batch Flow): сегмент регистрируется, затем приходят пачки участников, а завершение заменяет состав разом. Пока заливка не завершена, действует прежний состав. |
| Архив клиента | Обратимое скрытие клиента из основного каталога; статус клиента не меняет. |
| Мягкое удаление | Перевод клиента в статус DELETED: клиент скрыт из каталога, поиска и карточки, финансовая история сохраняется. |
| Обезличивание | Затирание полей персональных данных профиля клиента заглушками без удаления финансовой истории. |
| Тестовый клиент | Клиент с признаком «Тест»: исключается из отчётов и рассылок, контакт при создании не обязателен. |
Вовлечённость: рефералы и достижения¶
| Термин | Определение |
|---|---|
| Реферер | Клиент, пригласивший другого; владелец реферального кода. |
| Реферал (приглашённый) | Новый клиент, указавший чужой реферальный код при регистрации. |
| Реферальная связь | Запись «реферер → реферал» со статусом pending/activated, активируется первой покупкой приглашённого. |
| Достижение | Правило «условие → бейдж», настраиваемое маркетологом в каталоге достижений. |
| Бейдж | Нефинансовая награда клиенту за выполнение условия достижения; не создаёт проводку и не влияет на баланс. |
| Staff-предпросмотр (B2C) | Открытие личного кабинета конкретного участника сотрудником через параметр previewExternalId (роль LOYALTY_PROFILE_READ), не расширяет права сотрудника. |
Отчёты¶
| Термин | Определение |
|---|---|
| Глубина отчёта | Период раздела «Отчёты», отсчитываемый назад от текущего момента: 7 дней, 30 дней, 90 дней или год. Один на весь раздел и сохраняется при переключении вкладок. |
| Активный клиент (в отчётах) | Клиент, совершивший за период операцию, изменившую его бонусный счёт. Сгорание баллов активностью не считается. |
| Доля погашения | Баллы, списанные клиентами, от начисленных за период, в процентах. Сгорание и сторно в числитель не входят; если за период ничего не начислено, доля не определена (прочерк). |
| Обязательства программы | Непогашенные баллы на клиентских счетах в валюте баллов на конец периода — по проводкам леджера — и их денежная оценка по курсу баллов. |
| Выручка акции | Сумма покупок, на которых сработала акция за период, за вычетом возвратов. По строкам отчёта не складывается: покупка под двумя акциями входит в выручку каждой целиком. Если покупки были в разных валютах, величина пуста. |
| Когорта периода (реферальная программа) | Реферальные связи, созданные в выбранном периоде; доля активированных среди них читается на момент запроса. |
| Срез состояния (реферальная программа) | Величины реферальной программы на момент запроса, вне выбранного периода: всего связей, активировано, ждут первой покупки. |
Администрирование: очередь приёма, аудит и доступ¶
| Термин | Определение |
|---|---|
| Очередь приёма (command intake) | Асинхронный вход команд изменения баланса (начисление/списание/резерв): приём подтверждается сразу, исполнение идёт отдельным обработчиком поверх очереди command_inbox. |
| Команда в разборе (PARKED) | Команда очереди приёма, неисполнимая в принципе или исчерпавшая попытки — ждёт решения оператора («Вернуть в работу» или «Отменить»). |
| Очередь исходящих | Таблица в БД, куда событие для внешних систем (смена уровня, уведомление клиенту) пишется в той же транзакции, что и сам факт. В брокер его отправляет отдельный отправитель; доставка «не менее одного раза». |
| Журнал аудита | Сквозной автоматический журнал write-операций, доменных событий и обращений к персональным данным (просмотр/поиск/выгрузка). |
| Вид обращения (PII access kind) | Одно из: CHANGE (изменение), READ (просмотр карточки), SEARCH (поиск), EXPORT (выгрузка). |
| Печать журнала (audit seal) | Периодический отпечаток (HMAC) диапазона записей журнала аудита плюс отпечаток предыдущей печати — цепочка, делающая подделку записи задним числом обнаружимой. |
| Реестр сотрудников | Список сотрудников, который бэкенд собирает из токенов входа: имя, логин и роли LOYALTY_*. В него попадают только люди с ролями продукта, входившие хотя бы раз. По реестру подписываются авторы («ФИО (логин)» у автора конфигурации программы) и строится список сотрудников для согласования акции (GET /v1/users). |
| Группа LOYALTY_ADMINS | Группа Keycloak, которая объединяет все роли LOYALTY_*, кроме технических (LOYALTY_INTEGRATION_READ, LOYALTY_EXCHANGE_READ/WRITE, LOYALTY_SEGMENT_INTAKE). Это стартовый полный набор оператора и администратора. |
| SIEM | Внешняя система мониторинга событий безопасности заказчика (KUMA, MaxPatrol, ArcSight, QRadar и подобные), в которую может передаваться поток журнала аудита. |
| CEF | Common Event Format — формат полезной нагрузки событий безопасности поверх syslog, которым журнал аудита передаётся в SIEM. |
| GCRA | Generic Cell Rate Algorithm — алгоритм ограничения частоты запросов, используемый общим фильтром интеграционного периметра. |
| DTP | Процесс переливки витрин данных в целевую БД заказчика в рамках регламентного обмена данными. |
Термины дорожной карты¶
Не реализовано — в дорожной карте
Следующие понятия относятся к плановой функциональности и в текущей версии модуля отсутствуют:
- Механики-как-параметры — конфигурирование новых механик без кода.
- Сертификаты — выпуск и погашение сертификатов.
- Трансляция изменений справочников через outbox → Kafka → SDE — потоковая раздача НСИ/акций
в real-time decisioning (Apache Flink / RT-Flow/SDE); кеширование самих справочников в памяти
реплик уже реализовано (
loyalty.reference-cache.ttl).