Модульная CRM/ERP-платформа: спроектирована и сделана мной с ИИ-агентами
Модульная CRM/ERP на замену коробочному порталу у дистрибьютора медтехники. Анализ, архитектура, реализация и доводка — мои; основной код писали ИИ-агенты под моим контролем. Развёрнута на сервере заказчика пилотом.
45Django-приложений в модульном монолите
5.5 wk359 коммитов, один автор
72файла тестов; API 1С и мобилки покрыты
Собственная CRM/ERP, задуманная как замена разросшейся коробки: идёт пилот
Было
Продажи, склад, сервис и документы жили в портале с разросшимся набором надстроек; любые изменения требовали правок в этом наборе.
Сделал
Сам провёл анализ, спроектировал и построил модульную систему — клиенты и сделки, договоры, склад, закупки, доставка, почта, чат; код писали ИИ-агенты под моим контролем.
Стало
За 5,5 недели разработки собрано ядро системы и развёрнут пилот; он идёт в отдельном направлении компании — продаже металлообрабатывающих станков (3 пользователя).
Контекст и масштаб
Июнь–август 2026. Около 140 тыс. строк Python, ~220 моделей данных, ~110 API-представлений, 26 фоновых задач; мобильный клиент на Flutter, десктоп на Electron, расширение для 1С. Пилот на сервере заказчика с августа: 3 пользователя, импортирована клиентская база (~150 компаний), рабочих сделок единицы.
Задача
Продажи, склад, сервис и документы были разнесены по доработанному Bitrix24, ~30 приложениям портала и отдельным сервисам; обмен с 1С встал (см. кейс Bitrix24). Компания зависела от кода, которым не управляла.
Анализ и альтернативы
Варианты: дальше дорабатывать Bitrix24 (закрытый коннектор 1С, модули подрядчиков, растущая нагрузка процессов), купить другую коробку (та же проблема интеграции) или построить свою платформу с путём миграции из Bitrix24. Выбрано: строить — и параллельно стабилизировать Bitrix24, чтобы бизнес не вставал.
Архитектура
Люди
Продажи, склад, сервис
Выездные инженеры (мобилка)
Система
Веб-приложениеDjango · HTMX · REST · WebSocket
Фоновые воркерыCelery · beat
База данныхPostgreSQL 16
Брокер и каналыRedis 7
Сервер документовOnlyOffice
Мобильный и десктоп-клиентыFlutter · Electron
Внешние системы
1С (учёт)
Bitrix24 (источник миграции)
Операторы ЭДО
LLM API
Почта, push
Основные потоки данных
Доменные события пишутся в outbox в той же транзакции; 1С забирает их по REST и подтверждает каждое.
Данные Bitrix24 импортируются один раз по REST или напрямую из его БД, идемпотентно через карту идентификаторов.
Правила процессов и оркестратор «Секретарь» превращают доменные события в задачи ролей.
Мобильные клиенты входят через собственный OIDC-провайдер платформы (PKCE) и синхронизируют офлайн-изменения.
Ключевые решения и компромиссы
Модульный монолит, а не микросервисы. Один автор, одна граница транзакций, одна выкладка. 45 приложений с явными границами оставляют возможность разделить позже.
Transactional outbox для 1С. 1С сама забирает и подтверждает события, портал никогда не шлёт вслепую. Цена — нужно своё расширение на стороне 1С.
Процессы как данные. Движок процессов с триггерами и роботами: изменение процесса не требует релиза.
ИИ-помощник за судьёй (в работе). Рубрика, проверка фактов и сухой прогон перед любой записью; права проверяет ядро, а не модель.
Что сделано
Ядро CRM: компании, контакты, лиды, сделки, канбан, роли и оргструктура, мультиорганизация, история изменений.
Договоры, задачи, календарь; склад с серийниками и партиями, закупки, приёмка, отгрузка, маршруты доставки, производство.
Почта, чат на WebSocket, уведомления, BI-дашборды, печатные формы docx, импорт.
Папка .ai/ с правилами, дорожной картой, handoff и спецификациями держала ИИ-агентов последовательными на 359 коммитах.
Результат
Работающий пилот: развёрнут со всеми миграциями, в ежедневную работу ещё не введён; следующий шаг — перенести из Bitrix24 первый живой процесс.
Что сделал бы иначе
Я бы до наращивания ширины согласовал с пользователями рамки пилота и первый живой процесс: 45 приложений за 5,5 недели с агентами сделать несложно, медленная часть — внедрение.