Files
BitrixDealsBot/docs/adr/main.md
T

4.7 KiB

Архитектурные решения BitrixDealsBot

В ходе производственной практики разработано серверное приложение BitrixDealsBot, которое предоставляет менеджеру по продажам интерфейс Telegram для работы со сделками CRM Битрикс24. Разработанное решение не копирует CRM-данные в локальную базу: все сведения о сделках, контактах, компаниях, стадиях и истории запрашиваются через REST API непосредственно в момент действия пользователя. PostgreSQL хранит только данные, необходимые для идентификации пользователя Битрикс24 и его привязки к пользователю Telegram-бота, включая OAuth-токены.

В индивидуальном задании используется термин «лид», однако реализация работает с сущностью сделки и методами crm.deal.*. Команды /leads и /lead сохранены как пользовательские псевдонимы /deals и /deal, поэтому интерфейс остаётся совместимым с формулировкой задания, а в документации используется технически точное понятие «сделка».

Технологический стек

Уровень Технология Назначение
Язык Python 3.13 Серверная логика сайта и Telegram-бота
Telegram aiogram 3 Асинхронная маршрутизация команд, callback-запросов и опроса сервера
HTTP-сервер Flask 3 + Gunicorn Страница привязки пользователя Битрикс24 к конкретному аккаунту Telegram
Запросы к API httpx Синхронные и асинхронные запросы к OAuth и REST API Битрикс24
Хранилище PostgreSQL 17 + Psycopg 3 Транзакции, хранимые функции и пулы соединений
Защита Fernet + SHA-256 Шифрование OAuth-токенов и хеширование одноразовых ссылок
Развёртывание Docker Compose + nginx Изоляция процессов, миграции, HTTPS и обратное проксирование

Таблица 1. Технологический стек решения

Состав группы ADR

ADR Архитектурное решение Статус
ADR-001 Разделение приложения на сайт, Telegram-бот и базу данных Принято
ADR-002 Привязка пользователей Битрикс24 и Telegram Принято
ADR-003 Защита и обновление OAuth-токенов Принято
ADR-004 Слоистая организация Telegram-бота Принято
ADR-005 Получение списка и карточки сделки из Битрикс24 Принято
ADR-006 Изменение сделки с проверкой актуального состояния Принято
ADR-007 Развёртывание приложения с помощью Docker Compose Принято
ADR-008 Хранение интеграционных данных и разграничение доступа Принято