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

Задача
Заявки в 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 без отдельной системы?
Может ли администратор закрыть заявку без ведома сотрудника?
Как работает SLA в Telegram-боте?
Как вести учёт компьютерной техники и рабочих мест в том же боте?
Безопасно ли хранить пароли от роутеров и камер в Telegram-боте?
Что получает руководитель?
Ещё по этому направлению
Финансовый ассистент: учёт денег из PDF-выписок в Telegram
собственный продукт: бот и веб-дашборд, выписки четырёх банков, Gemini
Tech Poly VPN: биллинг VPN-подписок в Telegram
собственный продукт: оплата по СБП, выдача ключей в Marzban, резервный бот во ВКонтакте
Брендирование электронных полисов ОСАГО в Telegram
для аварийных комиссаров: контакты на бланке, данные и QR-код не тронуты
Нужно похожее?
Расскажите о задаче — покажем, как решали такое, и прикинем объём работ.