Все кейсы

Эпизод 01 · Python / CRM

Бот, который не «забыл записать»

Lead-бот для турагентства: вытягивает из клиента направление, даты, людей, бюджет и телефон — без «а вы же писали вчера в чат». Потом аккуратно сдаёт lead админу и в MDT. Код на GitHub, не на веру.

FSM → CRM

структура вместо «ну примерно Турция»

2 канала

Telegram и VK, одна логика — меньше дубляжа

pytest

тесты, Docker и «можно открыть и потыкать»

Контекст · почему всё горело

Свободная переписка — враг нормального lead

Клиент пишет как умеет: «хотим в Египет где-то в мае ну или июне человек 3–4 бюджет так». Менеджеру нужны поля и телефон — внятно, а не «где-то в чате». Ручной перевод «из чата в таблицу» — олимпийский вид спорта с высоким шансом потерять детали.

Бот не заменяет менеджера (пока). Он просто собирает достаточный и проверенный набор данных, пока заявка ещё не стала квестом «кто что имел в виду».

Путь lead'а (без лирики)

Telegram Flask webhook FSM-диалог Валидация SQLite + админ MDT CRM

Решение · что сделал

Пошаговый сценарий вместо «напишите всё одним сообщением»

Стек простой и злой: Python + Flask. Конечный автомат ведёт клиента по шагам, валидирует телефон, даты, людей и бюджет — и только потом сохраняет заявку. Никаких «а можно просто текстом?»

  • FSM и навигация. Направление, даты, люди, бюджет, телефон. Есть «Назад» и «Отмена» — потому что люди передумают, это норма.
  • Хранение и админка. SQLite: сессии и leads. Админ получает уведомления, а не медитирует в чате.
  • MDT (МойДокументы.Туризм). Lead/preorder уходит в фоне: внешний API не держит пользователя в заложниках «секундочку…».
  • Контактные данные. Согласие перед телефоном, `/privacy`, `/delete` — lead для заявки, без «навсегда в чате».
Один сценарий — Telegram и VK. CRM получает одинаковые поля, а не два диалекта «как получилось».

Финал · что можно проверить

Не «я сделал бота», а репозиторий

Webhook, FSM, валидация, модели SQLite, CRM-клиент, privacy, pytest, Docker — всё лежит открыто. Можно не верить мне. Можно клонировать.

Есть ещё версия под MAX с той же бизнес-логикой. Спойлер: мессенджер меняется, желание получить нормальный lead — нет.

Стек

  • Python
  • Flask
  • Telegram / VK
  • SQLite
  • MDT CRM
  • pytest
  • Docker

Живой код

Вот он. Не презентация.

Структура, webhook, автомат, тесты, MDT. Если найдёте баг — поздравляю, вы в теме. Если нет — тоже нормально, pytest уже постарался.