От 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‑слой)