От ручного заполнения документов к автоматизации: как собрать генератор шаблонных договоров в Telegram на Python
florid696 41 минуту назад От ручного заполнения документов к автоматизации: как собрать генератор шаблонных договоров в Telegram на Python Средний 4 мин 1.7K Python * Ретроспектива Recovery Mode Коммерческие отделы...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. florid696 41 минуту назад От ручного заполнения документов к автоматизации: как собрать генератор шаблонных договоров в Telegram на Python Средний 4 мин 1. 7K Python * Ретроспектива Recovery Mode Коммерческие отделы ежедневно тратят много времени на ручное создание однотипных документов: копирование реквизитов из переписки, подстановка ФИО в нужном падеже, расчет графиков платежей, НДС и сумм прописью. Одна пропущенная цифра в ИНН или ошибка в склонении должности, и договор возвращается на доработку, а это задержка сделки.
В этой статье я покажу как собрал на Python Telegram-бота, который превращает 15-30 минут работы в ворде (борьбой с выравниваниями, шрифтами, отступами и пр. ) в 5-минутный диалог. Никаких сложных CRM, никаких конструкторов с долгим обучением.
Технические детали
Только async, последовательное управление состояниями, регулярные выражения и генерация готовых Word-файлов. Архитектура решенияИнтерфейс: Telegram Bot (python-telegram-bot v20+, асинхронный режим)Управление состояниями: явное хранение шагов диалога в оперативной памяти с поддержкой возврата на предыдущий вопросПарсер реквизитов: регулярные выражения + правила для автоматического определения типа субъекта (ИП или ООО)Генератор документа: docxtpl + шаблон . docx с динамическими блоками и вставкой внешних приложенийЗапуск: облачный хостинг, секреты передаются через переменные окружения, корректное завершение работы при перезапуске Ключевые технические решенияTelegram, очевидно, не сохраняет контекст переписки.
А мне было необходимо собрать все ответы пользователя за итерацию, чтобы их аккуратно перенести в шаблон документа (предварительно размеченный). Для первой рабочей версии я реализовал явную машину состояний в оперативной памяти: каждый шаг фиксируется в словаре user_data, а также реализовал команду возврата (/back), которая откатывает индексы и ответы пользователя. Это нужно для исправления ошибок ввода, которые часто видно сразу.
То есть можно откатиться на шаг назад и исправить ответ. py (фрагмент) async def handle_back(update: Update, context: ContextTypes. DEFAULT_TYPE): chat_id = update.
Отраслевые последствия
id state = user_data. get(chat_id) if not state: return step = state. get("step if step == "main_flow": f_idx = state.
get("flow_idx", 0) if f_idx > 0: # Удаляем текущий ответ, откатываем индекс curr_key = FLOW_STEPS state. pop(curr_key, None) state = f_idx - 1 # Пропускаем лишние шаги, если они были скрыты логикой prev_key = FLOW_STEPS] if prev_key == "pay_date_3" and state. get("payment_type == "50/50": state -= 1 prev_key = FLOW_STEPS] await update.
reply_text(QUESTIONS)Парсинг реквизитовМенеджеры присылают реквизиты в произвольном виде: кто-то копирует из 1С, кто-то из мессенджера, кто-то копирует со скриншота с распознаванием текста. Парсер вытаскивает ИНН, ОГРН/ОГРНИП, КПП, расчётный и корреспондентский счета, БИК, email и адрес, автоматически определяя статус субъекта.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





