Magnum: уведомления и LMS

Два потока уведомлений на одном бэкенде. Первый — про обучение: интеграция с LMS Moko и Magnum Space, чтобы сотрудники реально проходили назначенные курсы. Второй — рассылочный инструмент, через который HR говорит с конкретным магазином, отделом или офисом, а не со всей компанией сразу. Интересная часть проекта — LMS. Платформы не отдают события, поэтому всю логику «у тебя новый курс / срок через три дня / срок прошёл» собирает сама система уведомлений.

Напоминание о курсе Magnum в Telegram
Админка рассылок Magnum с таргетингом по магазинам и отделам
Проблема

Обучение назначали. Обучение не заканчивали.

LMS умела назначить курс, но не умела никого подгонять. Сотрудник забывал. Руководитель не видел, кто отстаёт. Дедлайны срывались — обычно тихо.

Плюс не было нормального способа отправить сообщение «всем в этом магазине» или «всем в этом отделе». HR координировал такие рассылки руками через руководителей и чаты.

  • У LMS нет push-событий — всё было либо polling, либо незаметно.
  • Сотрудники срывали сроки, потому что их никто не напоминал в нужный момент.
  • У руководителя не было видимости, кто из его команды не закрыл курс.
  • Массовые внутренние коммуникации жили в личных чатах руководителей.
Разрыв между назначением и завершением обучения
Решение

Движок уведомлений, который сам строит себе события.

Мы синхронизируем LMS по расписанию, дифаем состояние и генерируем события, которых платформа не отдаёт. Дальше работает движок правил: уведомление при назначении курса, повторы каждые 7 дней пока курс открыт, уведомление о завершении и эскалация руководителю, если дедлайн прошёл.

На стороне рассылок — админка, в которой HR выбирает аудиторию: магазин, отдел, офис, список номеров — и отправляет сообщение в Telegram и WhatsApp одновременно.

Поток уведомлений Magnum: синхронизация LMS, правила, доставка в мессенджеры

Синхронизировать LMS

Регулярный джоб тянет назначения и статусы из Moko и Magnum Space, собирает события, которых платформы не отдают, и кормит ими нотификатор.

Напоминать без перегруза

Сообщение при назначении. Повтор каждые 7 дней пока курс открыт. Сообщение о завершении. Уведомление о просроченном сроке с пингом руководителю.

Эскалировать в нужный момент

Просроченные дедлайны уходят и сотруднику, и его руководителю — разговор уходит из инбокса HR.

Рассылать с таргетингом

HR собирает сообщение в админке и выбирает аудиторию по магазину, отделу, офису или списку номеров. Один шаг, два канала.

Работать в Telegram и WhatsApp

Один и тот же payload, оба канала — берётся тот, которым сотрудник уже пользуется.

Техническая часть

Хороший полинг — и всё остальное становится простым.

LMS отдавала снимки статусов, не события. Поэтому тяжёлая часть — на нашей стороне: забирать достаточно часто, дифать дёшево и считать диф основным источником правды для всего, что идёт ниже. Когда события чистые, правила напоминаний и маршрутизация по каналам делаются просто.

На рассылочной стороне переиспользуется тот же слой доставки. Админка превращает «этот отдел, этот офис» в список номеров, который уходит в тот же пайплайн Telegram + WhatsApp.

Периодическая синхронизация с Moko и Magnum Space, диф статусов и генерация событий.
Движок правил напоминаний: назначение, повторы каждые 7 дней, завершение, просрочка.
Эскалация руководителю, если сотрудник пропускает дедлайн.
Сегментированные рассылки с таргетингом по магазинам, отделам, офисам и спискам номеров.
Общий слой доставки для Telegram и WhatsApp.
Python backendTelegramWhatsAppMoko LMSMagnum Space LMSКастомная админка

Что изменилось

Обучение перестаёт тихо проседать

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

HR говорит с нужной комнатой

Таргетированные рассылки заменяют цепочки «перешли в свой магазин». Сообщение доходит до тех, кому оно было адресовано.

Один пайплайн, два канала

Telegram и WhatsApp работают на одном бэкенде — новый шаблон, новая аудитория или новое правило настраиваются один раз.

Обсудим ваш проект.

Начать с пары деталей

Отвечаем в течение одного рабочего дня. На первом созвоне Азамат подключается лично: честно разбираем объём работ, бюджет и риски с человеком, который отвечает за поставку.

Техническое задание (необязательно)