Подробности
Задача
Компании — участнику выставки требовался понятный способ собирать контакты посетителей стенда. Человек должен был перейти в Telegram по QR-коду, получить презентацию и заполнить короткую анкету. Системе было важно сохранять источник обращения, не создавать повторные заявки и работать независимо от готовности CRM.
Что сделано
- Собрана пошаговая анкета: имя, должность и передача собственного номера через штатную кнопку Telegram.
- Настроена отправка PDF-презентации; при временно недоступном файле анкета продолжает работу.
- Добавлены отдельные QR-ссылки для стендов, входной зоны и менеджеров.
- Сохраняются первый и последний источники, а также история повторных переходов.
- Повторное заполнение обновляет существующую запись. Защита от дублей учитывает Telegram ID и нормализованный телефон.
- Для администратора реализованы статистика и экспорт лидов в Excel с ограничением доступа по Telegram ID.
- Подготовлен модуль Bitrix24: поиск совпадений, создание и обновление записей, фиксация ошибок и повторная синхронизация.
- До подключения CRM данные надёжно сохраняются локально в SQLite; ошибка внешней системы не отменяет сохранение лида.
- Проект развернут на VPS с автозапуском через systemd, отдельным пользователем сервиса и ограничениями ресурсов.
Результат
Получился единый сценарий сбора лидов: QR-ссылка → презентация → анкета → подтверждённый контакт → статистика и экспорт. Источники обращений остаются в истории, а повторные визиты не создают бесконтрольные дубли.
154 автоматических теста прошли на Windows и повторно на Ubuntu без ошибок и пропусков. Проверены форма, дедупликация, источники, экспорт, локальное сохранение и обработка сбоев интеграций.
Границы проверки
Авторизация Telegram и запуск polling на VPS проверены. Сценарии анкеты тестировались с подменой Telegram API. Прохождение анкеты реальным посетителем и доставка клиентского PDF отдельно не подтверждались. Модуль Bitrix24 подготовлен, но подключение к реальной CRM ещё не выполнялось.
Инструменты и роль
Инструменты: Python, aiogram 3, SQLAlchemy 2, SQLite, httpx, openpyxl, pytest, Ubuntu и systemd.
Роль: разработка, тестирование и развёртывание на сервере.