Автоматизация и шаблоны

Платформа работает, даже когда в кабинете никого нет

Встроенный планировщик сжигает баллы, отправляет рассылки по расписанию, пересчитывает сегменты, ведёт сценарии, делает резервные копии и следит за собственным здоровьем. Каждая задача — консольная команда, которую можно запустить и вручную.

задач по расписанию
24
консольных команд
54
событий уведомлений
33

Планировщик

Задачи, которые выполняются сами

Планировщик работает отдельным сервисом. Ежедневные задачи привязаны к времени на часах, поэтому перезапуск не выполнит их дважды. У каждой задачи есть блокировка, и две копии планировщика не столкнутся.

Схема сценария с шагами триггера, паузы, условия и действия
ЗапускЧто делает
каждый часСжигает баллы с истёкшим сроком
каждый часВыполняет плановое процентное сгорание бонусов
каждые 5 минутЗачисляет бонусы, у которых наступила дата активации
каждую минутуСнимает просроченные резервы бонусов и возвращает баланс
каждую минутуСнимает неподтверждённые блокировки списания
каждый часВыключает правила с закончившимся сроком действия
каждый часОбрабатывает событийные правила, перенесённые из PremiumBonus
каждые 5 минутОтправляет рассылки, время которых наступило
каждый часПересчитывает состав динамических сегментов
каждую минутуПродолжает сценарии, у которых закончилась пауза
каждый часЗапускает сценарии дня рождения и неактивности
каждый часСохраняет RFM-срез на конец месяца и отправляет его администраторам
ежедневно в 02:50Удаляет логотипы, которые не использует ни одна анкета
каждые 15 минутЗабирает каталоги из учётной системы и сайта
каждые 5 минутУдаляет просроченные коды заказов маркетплейсов
ежедневно в 02:30Удаляет журналы вебхуков старше 30 дней
каждые 5 минутЗапускает резервную копию, когда наступает её время
каждую минутуПроверяет здоровье платформы, пишет историю и поднимает алерты
ежедневно в 02:40Удаляет закрытые алерты старше срока хранения
каждые 15 минутПеререгистрирует вебхук бота алертов при сбое
ежедневно в 01:00Создаёт секции следующих месяцев для заказов, движений баллов и журналов
ежедневно в 02:15Обновляет статистику планировщика по нагруженным таблицам
каждую минутуПереносит накопленное в Redis использование ключей в базу
каждые 6 часовУдаляет просроченные токены сброса пароля

Шаблоны уведомлений

Готовые сообщения на каждое событие

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

СобытиеКаналы
Вход и безопасность
Код регистрацииE-mail MAX Push SMS Telegram
Код входа в кабинетE-mail MAX Push SMS Telegram
Код подтвержденияE-mail MAX Push SMS Telegram
Подтверждение e-mailE-mail
Сброс пароляE-mail SMS
Пароль изменёнE-mail
Код смены телефонаSMS
Телефон изменёнSMS
Баллы и уровни
Начислены баллыE-mail MAX Push SMS Telegram
Списаны баллыE-mail MAX Push SMS Telegram
Код списанияE-mail MAX Push SMS Telegram
Баллы скоро сгорятE-mail MAX Push SMS Telegram
Баллы сгорелиE-mail Push SMS Telegram
Повышение уровняE-mail MAX Push SMS Telegram
Понижение уровняE-mail Push SMS Telegram
Выдан бонусный пакетE-mail
Получен персональный бонусE-mail
Открыта наградаE-mail MAX Push Telegram
Награда полученаE-mail SMS
Вовлечение и маркетинг
ПриветствиеE-mail SMS Telegram
День рожденияE-mail Push SMS Telegram
Годовщина в программеE-mail Push Telegram
Давно не заходилиE-mail SMS Telegram
Сообщение рассылкиE-mail Push SMS Telegram
Специальное предложениеE-mail Push SMS Telegram
Покупки и сотрудники
Чек покупкиE-mail
ВозвратE-mail SMS
Заказ отменёнE-mail SMS Telegram
Ежемесячный RFM-отчёт администраторамE-mail
Приветствие новой компанииE-mail
Сброс пароля сотрудникаE-mail
Пароль сотрудника изменёнE-mail
Профиль изменён сотрудникомE-mail

Telegram

Два бота: для покупателей и для эксплуатации

Бот компании привязывает чат Telegram к участнику в одно касание: просит поделиться номером телефона, находит участника в программе и дальше присылает коды, баланс и сообщения рассылок.

Бот алертов платформы присылает инциденты в чат дежурных и отвечает на команды.

  • /status — текущее состояние каждого компонента
  • /problems — только открытые алерты
  • /help — список команд

Консоль

Все команды и что они делают

Команды без расписания — инструменты оператора: импорт, перенос из PremiumBonus и 1С, смена ключей, восстановление и очистка.

КомандаЧто делаетЗапуск
Баллы и вознаграждения
app:points:expireСжигает баллы с истёкшим срокомкаждый час
app:bonus:burnВыполняет плановое процентное сгорание бонусовкаждый час
app:bonus:activate-grantsЗачисляет бонусы, у которых наступила дата активациикаждые 5 минут
app:bonus-reserves:expireСнимает просроченные резервы бонусов и возвращает баланскаждую минуту
app:redemption:expire-holdsСнимает неподтверждённые блокировки списаниякаждую минуту
app:rules:deactivate-expiredВыключает правила с закончившимся сроком действиякаждый час
app:pb:process-triggersОбрабатывает событийные правила, перенесённые из PremiumBonusкаждый час
app:orders:backfill-applied-rulesФиксирует на старых заказах правила, которые дали баллы, с проверкой пересчётавручную
Маркетинг и аналитика
app:campaigns:execute-scheduledОтправляет рассылки, время которых наступилокаждые 5 минут
app:segments:rebuildПересчитывает состав динамических сегментовкаждый час
app:segments:reassign-tiersПереназначает уровни, привязанные к сегментувручную
app:scenarios:process-delaysПродолжает сценарии, у которых закончилась паузакаждую минуту
app:scenarios:process-scheduled-triggersЗапускает сценарии дня рождения и неактивностикаждый час
app:analytics:rfm:monthlyСохраняет RFM-срез на конец месяца и отправляет его администраторамкаждый час
app:analytics:backfill-tier-historyЗаполняет историю уровней для участников с уже назначенным уровнемвручную
Участники, компании и импорт
app:members:regenerate-cardsПеревыпускает номера карт по шаблону компаниивручную
app:members:backfill-registration-sourceУточняет источник регистрации по каналу ключа интеграциивручную
app:import:premium-bonusПереносит участников, балансы и историю из PremiumBonusвручную
app:import:resume-stalledВозобновляет импорт, остановившийся на серединевручную
app:pb:import-rulesПереносит правила начисления из PremiumBonusвручную
app:pb:resync-memberПовторно синхронизирует одного участника из PremiumBonusвручную
app:onec:importЗагружает данные, выгруженные из 1Свручную
app:onec:check-duplicatesНаходит дубли участников, пришедших из 1Свручную
app:tenant:purge-membersУдаляет участников и историю компании, сохраняя настройкивручную
app:tenant:purge-catalogУдаляет каталог компании для повторной загрузкивручную
app:tenant:deleteУдаляет компанию со всеми даннымивручную
app:registration-forms:import-logosПереносит логотипы анкет в базу данныхвручную
app:registration-forms:prune-logosУдаляет логотипы, которые не использует ни одна анкетаежедневно в 02:50
Каталог, магазины и вебхуки
app:catalog:syncЗабирает каталоги из учётной системы и сайтакаждые 15 минут
app:mp-order-codes:expireУдаляет просроченные коды заказов маркетплейсовкаждые 5 минут
app:webhooks:emit-samplesОтправляет по одному образцу каждого события вебхукавручную
app:webhooks:cleanup-logsУдаляет журналы вебхуков старше 30 днейежедневно в 02:30
Резервные копии
app:backup:dispatchЗапускает резервную копию, когда наступает её времякаждые 5 минут
app:backup:databaseДелает дамп базы, ротирует копии и выгружает в S3вручную
app:backup:restoreВосстанавливает платформу из резервной копиивручную
app:backup:tenantДелает копию данных одной компаниивручную
app:backup:restore-tenantВосстанавливает одну компанию из её копиивручную
Эксплуатация платформы
app:health:tickПроверяет здоровье платформы, пишет историю и поднимает алертыкаждую минуту
app:health:cleanup-alertsУдаляет закрытые алерты старше срока храненияежедневно в 02:40
app:health:telegram-webhook-ensureПеререгистрирует вебхук бота алертов при сбоекаждые 15 минут
app:health:telegram-webhookРегистрирует вебхук бота алертоввручную
app:health:telegram-pollЗапускает бота алертов без вебхукавручную
app:telegram:pollЗапускает ботов компаний без вебхукавручную
app:outbox:relayПубликует сообщения транзакционного outbox в брокервручную
app:partitions:createСоздаёт секции следующих месяцев для заказов, движений баллов и журналовежедневно в 01:00
app:db:analyzeОбновляет статистику планировщика по нагруженным таблицамежедневно в 02:15
app:pos-keys:flush-last-usedПереносит накопленное в Redis использование ключей в базукаждую минуту
app:tokens:cleanupУдаляет просроченные токены сброса паролякаждые 6 часов
app:secrets:rekeyПерешифровывает хранимые секреты новым ключомвручную
app:notifications:sandboxУправляет белым списком получателей на тестовых стендахвручную
app:translations:importЗагружает переводы интерфейсавручную
app:geo:importЗагружает справочник городоввручную
app:seedНаполняет стенд разработки демо-даннымивручную
app:load-test:seedСоздаёт большой набор данных для нагрузочных тестоввручную