F
Fand_igor

Бот приёмной кампании для MAX с интеграцией с 1С и админ-панелью

Самостоятельно проработал идею и реализовал бота для мессенджера MAX как отдельный цифровой сервис для приёмной кампании вуза. Проектировал не только пользовательские сценарии общения с ботом, но и всю прикладную обвязку вокруг него: серверную архитектуру, хранение состояний диалога, интеграцию с 1С, обработку конкурсных списков, панель администрирования, конфигурацию, логирование и документацию для интеграции.

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

Контекст проекта

Проект развивался как самостоятельная инициатива с прикладной целью:

  • упростить для абитуриента доступ к ключевой информации приёмной кампании через мессенджер;
  • сократить путь до нужного сервиса и снизить нагрузку на поддержку;
  • вынести часть сценариев из веб-кабинета в более быстрый и привычный канал общения;
  • подготовить платформу, которую можно расширять новыми сервисами без полной переработки архитектуры.

Технически это не просто бот, а полноценное Node.js-приложение с веб-сервером, админ-панелью, БД, Redis, логированием, импортом данных и интеграционным слоем.

Что было реализовано

  • Реализовал бота для MAX на Node.js и TypeScript с поддержкой webhook и polling.
  • Построил единый процесс, который одновременно обслуживал бот, webhook и веб-панель администратора на Express.
  • Спроектировал пользовательские сценарии общения с ботом и структуру меню для приёмной кампании.
  • Реализовал регистрацию и авторизацию абитуриента через номер телефона с валидацией, проверкой в локальной БД и запросом в 1С.
  • Добавил сценарии навигации по сервисам приёмной кампании: заявления, конкурсные списки, личный кабинет, полезные ссылки, обращения об ошибках.
  • Реализовал сценарии изменения пользовательских данных через бот, включая обновление email и ИНН.
  • Построил логику диалогов как управляемую машину состояний с хранением активных этапов общения в БД.
  • Реализовал отдельный контур conversation, где бот сохранял шаги сценариев, промежуточные данные и состояние текущей операции пользователя.
  • Сделал сценарий обращений в поддержку с созданием обращения и последующим добавлением сообщений в уже открытый тред.
  • Реализовал отдельное хранение пользователей, ролей, логов, состояний, сообщений, обращений и конкурсных списков в MySQL.
  • Добавил импорт конкурсных списков из JSON с разбором файлов, нормализацией структуры и сохранением в отдельные таблицы.
  • Реализовал отображение конкурсных групп пользователя, сортировку по приоритету и детальный просмотр выбранной группы.
  • Интегрировал бот с 1С для получения данных об абитуриенте, статусах заявлений, расписании экзаменов, результатах, достижениях, договорах и доступе к внутренним системам.
  • Реализовал обратные сценарии отправки изменений из бота во внешнюю систему, включая обновление email и ИНН.
  • Подготовил сервисный слой интеграции с 1С через HTTP API с централизованной обработкой запросов и ошибок.
  • Сделал админ-панель с авторизацией, просмотром состояния сервисов, управлением конфигурацией, импортом JSON, запуском миграций и служебными сценариями сопровождения.
  • Добавил кэш и централизованную конфигурацию через Redis, чтобы управлять параметрами приложения и режимами работы.
  • Реализовал логирование в файлы и БД для действий пользователей, сценариев бота и ошибок интеграции.
  • Подготовил миграции и сиды для развёртывания проекта как отдельного сервиса, а не локального прототипа.
  • Описал варианты интеграции бота с внешним личным кабинетом и 1С через нормализованные JSON-контракты.
  • Подготовил отдельную документацию по интеграции, вариантам запросов и рекомендуемой архитектуре обмена между ботом, ЛК и 1С.
  • Отдельно прорабатывал вопросы безопасности, поведения webhook, защиты админ-панели, хранения конфигурации и эксплуатационных рисков.

Что было важно технически

  • Бот проектировался не как набор жёстко прошитых команд, а как прикладной сервис с расширяемой серверной частью.
  • Диалоги были вынесены в модель состояний, поэтому сценарии регистрации, обращения и изменения данных не зависели от одного конкретного сообщения и могли жить как управляемые пошаговые процессы.
  • Веб-сервер и бот были объединены в одном приложении, что упростило развёртывание, сопровождение и доступ к административным инструментам.
  • Структура БД проектировалась под реальные сценарии эксплуатации: пользователи, роли, логи, разговорные состояния, очереди сообщений, обращения, конкурсные списки и вспомогательные сущности.
  • Для конкурсных списков был реализован отдельный слой импорта и нормализации данных, чтобы бот не зависел от сырого формата выгрузки.
  • Интеграция с 1С была вынесена в отдельный сервисный слой, что позволило изолировать внешние запросы от сценариев интерфейса.
  • Архитектурно была предусмотрена дальнейшая замена прямой интеграции с временными источниками на нормализованный API другого проекта, без полной переработки логики бота.
  • Админка проектировалась не как декоративный интерфейс, а как эксплуатационный инструмент для конфигурации, диагностики и обслуживания сервиса.

Что было сделано на уровне проектирования

  • Самостоятельно продумывал общую идею бота как отдельного интерфейса для сервисов приёмной кампании.
  • Определял состав сценариев, структуру меню, поведение пользователя на каждом шаге и границы между ботом, личным кабинетом и 1С.
  • Проектировал контракты интеграции и структуру JSON-ответов, чтобы бот мог работать с нормализованными данными, а не с внутренней схемой 1С.
  • Формировал рекомендации по архитектуре обмена, где бот общается с сервисным слоем ЛК, а не напрямую с чужой БД или бизнес-логикой.
  • Подготавливал документацию для интеграции и сопровождения проекта, чтобы его можно было развивать как полноценный сервис.

Что показывает проект

  • Умение не просто писать бота, а проектировать самостоятельный цифровой продукт вокруг мессенджера.
  • Опыт построения серверной архитектуры для чат-бота с админкой, БД, состояниями диалога, импортом данных и внешними интеграциями.
  • Умение переводить сложные прикладные сценарии приёмной кампании в понятные пользовательские шаги внутри мессенджера.
  • Опыт интеграции с 1С и проектирования промежуточных API-контрактов для обмена данными между системами.
  • Опыт продумывания эксплуатационной части: конфигурация, миграции, логирование, безопасность, диагностика и обслуживание.
  • Способность самостоятельно формировать идею продукта, разложить её на технические контуры и довести до рабочей реализации.

Технологии

  • Node.js
  • TypeScript
  • Express
  • EJS
  • MySQL
  • Knex
  • Redis
  • MAX Bot API
  • Axios
  • Docker
  • PM2
  • 1С API integration

Моя роль

Моя роль была полной: самостоятельно проработал идею сервиса, спроектировал пользовательские сценарии, архитектуру и модель данных, реализовал бота на TypeScript, интеграцию с 1С, импорт конкурсных списков, хранение состояний диалогов, админ-панель, конфигурацию, логирование и документацию по интеграции между ботом, личным кабинетом и внешними сервисами.

Практическая ценность проекта

Этот кейс показывает не только работу с ботами, но и умение строить прикладной сервис целиком:

  • самостоятельная проработка идеи и продуктового сценария;
  • реализация бота как полноценного серверного приложения;
  • интеграция с 1С и внешними системами;
  • проектирование диалоговых сценариев и состояния разговоров;
  • разработка админ-панели и эксплуатационного контура;
  • подготовка API-контрактов и интеграционной документации;
  • проектирование архитектуры с заделом на дальнейшее развитие.