От Telegram-бота к web-приложению: как я перестал бороться с Excel и начал строить систему
Привет! Меня зовут Денис, я работаю аналитиком потерь на складе. В какой-то момент я устал от постоянной работы с Excel-выгрузками и решил это автоматизировать.
В итоге всё началось с простого Telegram-бота, а закончилось полноценным web-приложением с отдельным backend, интеграциями и нормальным интерфейсом.
Сегодня хочу рассказать про сам путь: как из “скрипта под задачу” постепенно вырастает система.
Как всё начиналось
Изначально задача выглядела довольно типично: есть несколько Excel‑файлов, которые нужно регулярно обрабатывать, объединять и приводить к какому-то осмысленному виду.
Процесс был утомительный и плохо масштабировался.
В какой-то момент я понял: я работаю не аналитиком, а интерфейсом между Excel-файлами.
Яприкинул: на такие операции уходит около 5 часов в день — это примерно 150 часов в месяц.
Если перевести это в деньги (пусть даже условные 500 ₽/час), получается около 75 000 ₽ в месяц на чистую рутину.
Поэтому я сделал максимально простой MVP — Telegram‑бота на Python, который принимает файлы и возвращает готовый результат.
Это было быстрое и довольно удачное решение. Не нужно было делать интерфейс, пользователи уже в Telegram, а вся логика оставалась у меня под контролем.
Но довольно быстро начали проявляться ограничения.
Почему Telegram перестал быть достаточным
Проблема оказалась не в боте как таковом, а в том, что он стал выполнять роль, для которой изначально не предназначен.
Когда логика усложнилась, стало заметно:
файлы начали упираться в лимиты (20 МБ для telegram)
процесс обработки стал «чёрным ящиком»
не хватало нормального интерфейса
стало сложнее развивать функциональность
Постоянные проблемы с доступом в РФ. (спасибо РКН)
В какой‑то момент стало понятно, что Telegram — это отличный вход, но плохое ядро системы.
Именно тогда я начал выносить логику наружу.
Переход к web-приложению
Я не переписывал всё с нуля. Скорее, постепенно «вытаскивал» ответственность из бота в отдельный backend.
Telegram остался как интерфейс, но теперь он просто отправляет задачи в систему.
Появился web‑интерфейс, через который можно:
загружать файлы
видеть статус обработки
управлять процессом
И вот здесь проект впервые начал ощущаться как система, а не как скрипт.
Архитектура

Если описать словами, то получилось разделение на несколько уровней:
backend занимается всей обработкой данных и бизнес‑логикой,
web‑часть отвечает за взаимодействие с пользователем,
а интеграции (Google Sheets, Яндекс.Диск) закрывают вопросы хранения и передачи данных.
Важно, что Telegram теперь — просто один из клиентов системы.
Это сильно упростило развитие: можно менять интерфейс, не трогая логику, и наоборот.
Предвидя вопросы в плане «зачем так усложнять, почему бы просто не подключиться напрямую к БД??» отвечаю: — Это невозможно из‑за политики компании. Для такой автоматизации нужен доступ к Proxy, через который можно читать БД. А получить его в моей текущей должности нет возможности.
Отдельно про большие файлы
Один из переломных моментов — работа с ограничениями Telegram.
Когда файлы перестали помещаться, я добавил интеграцию с Яндекс.Диском через OAuth. Вместо отправки файла бот принимает ссылку, backend скачивает данные и обрабатывает их уже без ограничений платформы.
На практике это оказалось намного стабильнее и даже быстрее.
UX, о котором обычно забывают
Когда делаешь «внутренний инструмент», есть соблазн не думать об интерфейсе вообще.
Я тоже сначала так делал.
Но после появления web‑части стало очевидно, что даже простые вещи сильно влияют на восприятие:
индикатор обработки, понятные кнопки, адекватное поведение на мобильных устройствах.
Это не про «красоту», а про то, насколько системой вообще хочется пользоваться каждый день.
Среда разработки: неожиданный поворот
Отдельно хочу рассказать про то, как я всё это разрабатывал.
Раньше я писал в PyCharm, и в целом это до сих пор отличный инструмент, особенно когда нужно копаться в данных, дебажить и что‑то исследовать.
Но в процессе этого проекта я перешёл на Cursor — редактор с встроенными AI‑агентами.
И это сильно поменяло процесс разработки.
Часть задач я просто перестал делать руками:
генерация boilerplate‑кода
простые рефакторинги
обвязка для новых фич
Агентам удобно делегировать именно такие вещи, и это ускоряет разработку.
При этом есть нюанс: для ресёрча данных и глубокого анализа PyCharm по ощущениям всё ещё удобнее. Cursor больше раскрывается именно в разработке архитектуры и web‑части.
Сейчас это выглядит как гибридный подход:
что‑то делается через агентов, что‑то — вручную, в более «классической» среде.
Думаю дальше попробовать Claude Code и n8n (там можно в логику обработку данных добавлять ИИ) как альтернативу — интересно сравнить подходы.
Что в итоге получилось
Если оглянуться назад, проект прошёл довольно типичный путь:
сначала это был простой инструмент «под задачу»,
потом он начал обрастать логикой,
а затем пришлось задуматься об архитектуре.
Результат: сэкономленные 150ч в месяц команды аналитиков.
Ключевой сдвиг произошёл в момент, когда Telegram перестал быть центром системы.
После этого стало возможным нормально развивать продукт: добавлять интерфейсы, интеграции и новые сценарии без ощущения, что всё сейчас сломается.
Что я из этого вынес
Главное — не пытаться сразу строить идеальную архитектуру.
Рабочий путь оказался таким: сначала быстрое решение, потом постепенное выделение ответственности и только потом — осознанная структура.
И ещё один важный момент — инструменты разработки реально влияют на скорость и подход. Переход к AI‑агентам оказался не хайпом, а вполне практичной историей.
Что дальше
Сейчас хочется двигаться в сторону:
добавления аналитики поверх данных,
BI‑аналитика в web,
docker.
Если интересно, могу потом отдельно рассказать про деплой, инфраструктуру или внутреннюю логику обработки данных.
Интересно ли будет разобрать архитектуру проекта подробнее — с кодом, схемами и решениями, которые я принимал по ходу разработки?
Полезные ссылки и стек
Проект в открытом доступе:
GitHub: https://github.com/Anniegard/bot‑mont‑shk
Web‑версия приложения:
https://anniland.ru/
Предыдущая статья (с чего всё начиналось):
https://habr.com/ru/articles/1007960/
Текущий стек проекта:
Python (backend), pandas (обработка данных), Telegram Bot API, Google Sheets API, OAuth (Яндекс.Диск), web‑интерфейс (frontend + API‑слой)
