Бот приёмной кампании для 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-контрактов и интеграционной документации;
- проектирование архитектуры с заделом на дальнейшее развитие.