🎫

Тикет-система для IT-отдела в Telegram

для музейного комплекса в Москве: заявки, учёт техники, база знаний и аналитика

Учёт заявок в IT-отдел через Telegram без Jira: SLA, закрытие с подтверждения сотрудника, оценки 1–10, IT-реестр с шифрованием паролей, учёт компьютерной техники, база знаний и отчёты руководителю. Python, aiogram 3, MariaDB.

В продакшенеNDA
4 роли
сотрудник, администратор, руководитель, владелец — у каждой свой интерфейс
30 мин
норматив реакции на новую заявку, дальше эскалация в чат, админам и владельцу
1–10
оценка сотрудника после закрытия: качество поддержки измеримо
Тикет-система DevUnit Lab в Telegram: пульт администратора с очередью заявок, SLA, учётом техники и отчётами
Тикет-система DevUnit Lab в Telegram: пульт администратора с очередью заявок, SLA, учётом техники и отчётами

Задача

Заявки в IT-отдел приходили отовсюду: в личку системному администратору, в общий чат, голосом в коридоре. Часть терялась, часть делалась дважды, никто не знал, кто чем занят и сколько времени уходит на поддержку. К концу месяца руководству нечего было показать, кроме слов «работали много».

Вторая часть боли — учёт объекта. На площадке с десятками отделов доступы к роутерам, камерам и Wi-Fi жили в блокноте и в переписке, «кто за каким компьютером сидит» помнил один человек, а перед вводом домена и лицензионным аудитом пришлось бы обходить все кабинеты.

Заказчик, музейный комплекс в Москве, хотел один канал приёма заявок внутри Telegram, без внешней тикет-системы вроде Jira, с учётом техники и цифрами для руководителя.

Решение

Help Desk Bunker — тикет-система для внутреннего IT-отдела, целиком живущая в Telegram. Что реализовано:

  • заявки с полным жизненным циклом: приоритет, SLA, время визита, пауза, отчёт о закрытии, оценка 1–10;
  • закрытие подтверждает сотрудник, а не исполнитель;
  • четыре роли с разными интерфейсами: сотрудник, системный администратор, руководитель, владелец;
  • IT-реестр доступов с шифрованием паролей и журналом просмотров;
  • база знаний, статьи которой рождаются из отчётов о закрытии;
  • учёт объекта: подразделения, помещения, рабочие места, техника, склад расходников, QR-метки на столы;
  • программа для ПК, которая сама собирает паспорт компьютера;
  • аналитика предприятия, дашборд руководителя, утренний дайджест, месячный отчёт с CSV;
  • рассылки, переписка сотрудника с IT вне заявок, еженедельный дамп базы владельцам, перезапуск из Telegram;
  • необязательный ИИ-помощник на Gemini как первая линия поддержки, по умолчанию выключен.

Как это устроено

Жизненный цикл заявки и SLA в Telegram-боте

Сотрудник оформляет заявку мастером из четырёх шагов: категория, место, фото, описание. Если за ним закреплено рабочее место, оно предлагается кнопкой. Карточка приходит в чат IT-отдела и перерисовывается на месте при каждой смене статуса, поэтому лента дублей не растёт. Статусы: новая, принята, в работе, пауза, ожидает подтверждения, переоткрыта, закрыта, отклонена. «Принята» и «в работе» разделены намеренно: время работы засекается с момента, когда исполнитель действительно приступил.

Приоритет задаёт срок решения — SLA (норматив времени на реакцию и решение). Просроченные заявки подсвечиваются в очереди, попадают в раздел SLA и в дайджест. Перед визитом бот напоминает исполнителю за 30, 15, 10 и 5 минут, сотруднику — один раз за 10 минут. Заявки без реакции эскалируются каждые 15 минут в рабочее время.

IT-реестр: Fernet-шифрование паролей и журнал показов

IT-реестр хранит доступы к роутерам, коммутаторам, камерам, серверам, Wi-Fi, хостингам и почте. Пароля в базе нет — только шифротекст Fernet (симметричное шифрование из библиотеки cryptography). Причина конкретная: бот раз в неделю отправляет дамп базы в Telegram, и без шифрования пароли уехали бы открытым текстом. Пароль показывается отдельным сообщением, которое бот удаляет через минуту; каждый показ записывается в журнал. Без ключа шифрования реестр пароли не принимает вовсе. Руководитель в реестр не попадает.

Учёт техники, рабочие места и QR-метки

Учёт объекта ведётся с телефона: подразделения, помещения и рабочие места заводятся пачкой, по строке на запись, дубли не создаются, записи не удаляются, а гасятся. Техника — четвёртое измерение со своим жизненным циклом: паспорт (производитель, модель, серийный и инвентарный номер, гарантия, сеть, ОС, офис), кнопка «Обслужил» с интервалом до следующего раза, поиск по серийнику, IP и MAC, вложения к конкретному ПК.

Заявка привязывается к конкретному устройству, поэтому в аналитике есть отчёт «по технике»: повторяющиеся отказы одной единицы — довод за замену, а не за очередной ремонт. QR-метки на столы печатаются листом на A4; сканирование ведёт в бота, ставит сотрудника «за этот стол» и даёт кнопку «Заявка с этого места». Склад расходников списывается прямо на шаге закрытия заявки, а отчёт «Расход за период» даёт цифру для закупки.

База знаний из отчётов о закрытии

Сразу после мини-отчёта бот предлагает сохранить решение статьёй: симптомы берутся из описания сотрудника дословно, чтобы искать статью его словами. Главный вход в базу — мастер заявки: после выбора категории показываются до трёх готовых решений, и ответ «помогло» закрывает диалог без заявки. Такие случаи считаются отдельно в сводке предприятия — это заявки, которых не случилось.

Аналитика предприятия

Один движок, разные права: /analytics у администратора, /dashboard у руководителя. Сводка за период, критические узлы (индекс риска по истории заявок с учётом просрочек и возвратов), нагрузка IT, структура по категориям, рейтинг обращений, просрочки SLA, выгрузка CSV. Отчёт за месяц уходит 1-го числа, утренний дайджест предупреждает о плановом обслуживании техники, кончающихся расходниках и истекающих доступах VPN.

Программа для ПК: агент без установки

Один файл, батч-обёртка с PowerShell внутри, запускается на Windows 10/11 без прав администратора и никуда не подключается. Он собирает имя ПК, серийник, ОС с активацией через лицензионный сервис, железо, сеть, принтеры, установленные программы, локальные учётки, почтовые профили и базы 1С, спрашивает у человека телефоны и пароли и кладёт отчёт JSON на рабочий стол. Пароли шифруются на компьютере сотрудника (AES-256, ключ под RSA-OAEP), бот расшифровывает их и перекладывает в IT-реестр. Повторный отчёт с той же машины даёт дифф: пропала планка памяти, сменился IP, появились программы. Есть тихий режим для запуска по сети или из планировщика.

aiogram 3 и SQLAlchemy async

Бот написан на aiogram 3, роли подставляются через middleware, незаконченные диалоги живут в Redis и переживают перезапуск. База — MariaDB, 20 таблиц, 16 миграций Alembic; при взятии заявки строка блокируется, чтобы два администратора не взяли одну заявку. Docker Compose поднимает MariaDB и Redis с healthcheck, миграции применяются автоматически. Планировщик APScheduler ведёт напоминания, эскалации, дайджест, месячный отчёт и еженедельный дамп базы.

Результат

  • Все обращения проходят через один канал и сохраняются в базе, а не в переписке.
  • Заявка не закрывается без подтверждения сотрудника; качество поддержки измеряется оценкой 1–10.
  • Заявки без реакции и просрочки SLA поднимаются ботом сами: эскалация, дайджест, раздел SLA.
  • Доступы к инфраструктуре хранятся в зашифрованном виде с журналом просмотров.
  • Паспорта компьютеров собирает программа, а не обход кабинетов; повторный отчёт показывает, что изменилось.
  • Руководитель получает месячный отчёт и дашборд без доступа к заявкам.

Технологии: что и зачем

  • Python 3.13 и aiogram 3 — асинхронный бот, все меню на inline-кнопках.
  • SQLAlchemy 2.0 async и Alembic — работа с базой и миграции схемы без потери данных.
  • MariaDB — хранение заявок, сотрудников, учёта объекта и реестра в отдельном контейнере.
  • Redis — хранилище незаконченных диалогов, переживающее перезапуск бота.
  • APScheduler — напоминания о визите, эскалация, дайджест, месячный отчёт, дамп базы.
  • cryptography (Fernet) — шифрование паролей IT-реестра.
  • Docker Compose — единый способ запуска с healthcheck-зависимостями между сервисами.

Статус

Версия 2.24.0 от 29 сентября 2026 года, в продакшене у заказчика, развитие продолжается. По плану из репозитория: автотесты переходов статусов и прав ролей, бэкапы вне Telegram, мониторинг живости, автоотчёты через ИИ. Программа для ПК рассчитана на Windows, бот — на одну организацию и один чат IT. Другие детали заказчика не раскрываются.

Вопросы по проекту

Как организовать учёт заявок в IT-отдел через Telegram без отдельной системы?
Сотрудник оформляет заявку в боте за четыре шага: категория, место, фото, описание. Карточка с кнопками приходит в чат IT-отдела и перерисовывается при каждой смене статуса. Весь цикл — приоритет, SLA, визит, отчёт, закрытие, оценка — проходит там же и сохраняется в базе MariaDB.
Может ли администратор закрыть заявку без ведома сотрудника?
Нет. После отметки «решено» заявка переходит в ожидание, и только ответ сотрудника закрывает её. Если он отвечает «не решено», заявка переоткрывается. После закрытия сотрудник ставит оценку от 1 до 10, а исполнитель оставляет мини-отчёт: как решил, что задействовал, сколько времени ушло.
Как работает SLA в Telegram-боте?
Приоритет выставляется при взятии заявки и задаёт норматив решения. Норматив реакции на новую заявку по умолчанию 30 минут. Просроченные заявки подсвечиваются в очереди, попадают в раздел SLA и в утренний дайджест, а заявки без реакции эскалируются: сначала в чат, потом администраторам лично, потом владельцу.
Как вести учёт компьютерной техники и рабочих мест в том же боте?
В учёте объекта четыре измерения: подразделения, помещения, рабочие места и техника. У единицы техники есть паспорт, история обслуживания и привязка к столу. Программа для ПК сама собирает серийный номер, ОС, активацию, сеть и установленные программы, а QR-метка на столе ведёт в бота и показывает, кто за этим местом сидит.
Безопасно ли хранить пароли от роутеров и камер в Telegram-боте?
В базе лежит не пароль, а шифротекст Fernet, ключ хранится только в окружении сервера. Пароль показывается отдельным сообщением, которое бот удаляет через минуту, а каждый показ записывается в журнал с именем и датой. Руководитель в реестр не попадает. Доступы, потеря которых останавливает предприятие, в бота класть не рекомендуется.
Что получает руководитель?
Отдельный дашборд без доступа к заявкам: сводка за период, критические узлы, нагрузка IT, просрочки SLA и выгрузка CSV без персональных контактов. Отчёт за месяц приходит 1-го числа автоматически, утренний дайджест — в рабочие дни.

Ещё по этому направлению

Нужно похожее?

Расскажите о задаче — покажем, как решали такое, и прикинем объём работ.