← Все работы Дмитрий Никитин

Разработка · интеграция с CRM

Товарная панель для магазина цветов

Магазин «Флорист и Бариста» вёл ассортимент в Bitrix24, но увидеть каталог целиком было негде — особенно с телефона. Сделал отдельную панель, которая читает торговый каталог напрямую и открывает его за две секунды вместо двадцати.

2 сек загрузка каталога вместо 20
×10 ускорение против прошлой попытки
0 дублирующих баз — источник данных один
Роль
Разработка сервиса
Стек
Python, FastAPI, Pydantic, Jinja2
Интеграция
Bitrix24 REST по входящему вебхуку
Статус
Работает
Каталог товаров в панели управления Экран загрузки магазина «Флорист и Бариста»

Задача

Ассортимент живёт в Bitrix24, но добраться до него в рабочих условиях почти невозможно. Главная боль — мобильное приложение: посмотреть в нём каталог целиком нельзя, а продавцу нужно именно это — быстро найти позицию, проверить цену и остаток, стоя у прилавка или собирая заказ.

Нужен был отдельный взгляд на те же данные: дерево разделов, розничные и закупочные цены, остатки по вариациям — без дублирования базы и ручной синхронизации.

Почему предыдущая попытка не взлетела

Похожую панель пробовали сделать до меня, и она упёрлась в скорость: каждый товар запрашивался у Bitrix24 отдельно, и открытие каталога занимало около 20 секунд. Инструментом, который думает двадцать секунд, никто не пользуется — проще открыть десктоп и потерпеть.

Причина не в Bitrix24, а в способе обращения к нему. Когда на каждую позицию идёт свой запрос, время складывается из сотен сетевых задержек, и каждая из них по отдельности выглядит незаметной.

Решение

Сервис на FastAPI подключается к Bitrix24 через входящий вебхук и читает торговый каталог методами catalog.*. Своей базы у него нет — это принципиально: источник правды остаётся один, расхождению взяться неоткуда.

Как получилось 2 секунды вместо 20

Ускорение дали не оптимизации по мелочи, а смена самого способа общения с Bitrix24 — keep-alive вместо нового соединения на каждый вызов и батчинг вместо поштучных запросов.

В сумме открытие каталога сократилось с двадцати секунд до примерно двух — то есть панелью стало можно пользоваться в реальной работе, а не «когда есть время подождать».

Как устроено внутри

Код разделён на слои: работа с REST Bitrix24 и разбор ответов, доменная логика каталога (сортировка, дерево разделов, форматирование цен и остатков) и HTTP-слой с шаблонами. Домен не знает про HTTP, а HTTP не знает про формат ответов Bitrix24 — благодаря этому изменения в API поставщика не расползаются по всему проекту.

Python FastAPI REST API 1С-Битрикс Bitrix24 API Keep-alive Батчинг

Нужна похожая работа — сайт, реклама или аналитика? Расскажу, как это будет выглядеть у вас.