Кейс: TenderBot — платформа для управления строительными тендерами
Задача клиента
Индонезийской строительной компании требовалась система, которая наведет порядок в ручном и хаотичном процессе поиска подрядчиков. Нужно было создать единую точку входа для менеджеров, автоматизировать подбор исполнителей по специализации и рейтингу, а также стандартизировать сбор коммерческих предложений.
Решение от Flowcore
Мы спроектировали и разработали многокомпонентную тендерную систему, центральным интерфейсом которой стал Telegram-бот. Через него менеджеры создают тендеры, подрядчики получают персонализированные предложения и отправляют отклики, а администраторы управляют ролями и базой участников.
Архитектура построена с упором на надежность, асинхронность и удобство для нетехнических сотрудников: Google Sheets используется как понятная админ-панель для справочников, а Google Drive — как единое хранилище проектной документации.
Ключевые реализованные возможности:
- Пошаговое создание тендеров: Менеджеры формируют заявки через FSM-сценарий с подтверждениями, кнопками "Назад", множественным выбором и пагинацией.
- Иерархия специализаций: Реализована древовидная структура из 35+ категорий работ в PostgreSQL. Система умеет раскрывать родительские категории и точно подбирать подрядчиков.
- Автоматический подбор подрядчиков: Бот выбирает релевантных исполнителей из базы по специализации, рейтингу и доступным данным компании.
- Google Drive для документации: Для каждого тендера создается стандартизированная структура папок, куда загружаются исходные документы и сметы BoQ от подрядчиков.
- Персональные отклики подрядчиков: Подрядчики получают подходящие тендеры, отправляют цену, сроки, комментарии и прикрепляют смету прямо через Telegram.
- Синхронизация с Google Sheets: APScheduler запускает автоматическую синхронизацию администраторов, менеджеров и подрядчиков при старте и по расписанию.
- Ролевая модель: Интерфейсы и права администратора, менеджера и подрядчика разделены через кастомные фильтры Aiogram.
Технические детали
Бэкенд реализован на Python 3.11, Aiogram 3 и SQLAlchemy 2.0 в асинхронном режиме. PostgreSQL хранит тендеры, подрядчиков, специализации, роли и статусы откликов. Фоновые задачи синхронизации выполняются через APScheduler.
Для безопасной работы с Google Drive внедрена OAuth 2.0-аутентификация. Бот работает с диском от имени пользователя, использует его квоту и не упирается в ограничения сервисных аккаунтов. Проект полностью контейнеризирован через Docker и Docker Compose для быстрого развертывания на сервере.
Результат
Заказчик получил автономную систему, которая сокращает запуск тендера с нескольких часов до 5-10 минут. Вся документация хранится в единой структуре Google Drive, подрядчики получают релевантные предложения, а менеджеры видят прозрачную историю заявок, статусов и откликов.
Стек технологий
Python 3.11, Aiogram 3, SQLAlchemy 2.0, PostgreSQL, APScheduler, Google Sheets API, Google Drive API, OAuth 2.0, Docker, Docker Compose, Git.