Логистика ERP / CRM

InterRail

ERP и CRM платформы, построенные с нуля для полной автоматизации бизнес-процессов международной железнодорожной логистической компании — бухгалтерия, управление договорами, отслеживание KPI и обработка документов с ИИ.

Обзор

InterRail — набор ERP и CRM систем, которые я построил с нуля для международной компании железнодорожных грузоперевозок, работающей в Центральной Азии и России. До этих инструментов команда отслеживала заказы, контракты и KPI в таблицах. Теперь всё — от запроса через отгрузку до финансового расчёта — живёт в одном месте, используется ежедневно в 6+ странах.

Что я сделал

  • Построил оба ERP-бэкенда с нуля на Django — все модели данных, REST API и асинхронные фоновые задачи для компании, отслеживающей железнодорожные грузы по Центральной Азии.

  • Владел всеми тремя фронтендами Vue 3 — CRM для администраторов, панелью отслеживания и Telegram мини-приложением — включая многоязычную поддержку и сквозные тесты.

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

  • Создал конвейер документов, который разбирает PDF железнодорожных накладных, таблицы и файлы Word в структурированные записи — экономя часы ручного ввода данных на каждую отгрузку.

Архитектура

Две независимые полностековые системы — одна для ERP Центральной Азии, другая для платформы отслеживания — каждая следует одному шаблону: Django REST бэкенд с поддержкой WebSocket в реальном времени, PostgreSQL, Redis и воркер Celery для фоновых задач, всё в Docker Compose. Vue 3 SPA обращаются к своим бэкендам через JWT-аутентификацию, а MinIO обрабатывает хранилище файлов, чтобы документы накладных оставались доступными без раздувания базы данных.

Под капотом

  • Учёт договоров и актов с автоматическими сигналами завершения: когда все позиции акта заполнены, фоновая задача автоматически помечает его как выполненный — никому не нужно помнить о ручном закрытии. Сигналы Django синхронизируют денормализованные итоги в записи компании без дорогостоящих запросов повторной агрегации.

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

  • Извлечение накладных с помощью ИИ: конвейер документов диспетчеризирует по типу файла — PDF, таблица или Word — извлекает текст в рамках безопасных ограничений размера и передаёт ИИ для создания структурированных записей накладных. Сотрудники перешли от ручного ввода 30+ полей на документ к проверке вывода ИИ и нажатию кнопки подтверждения.

Чему я научился

  • Охват ERP всегда расширяется — важнейшим инженерным решением было чёткое разделение каждой подсистемы (договора, заказы, финансы), чтобы новые требования не каскадировали повсюду.

  • Добавление слоя ИИ к обработке документов выявило, что узкое место — не точность извлечения, а качество данных выше по потоку. Мусор на входе — мусор на выходе, даже с хорошими моделями.

Технологии

Фронтенд

  • Vue 3
  • Vuex 4
  • Vue Router 4
  • Bootstrap 5
  • ApexCharts
  • Leaflet
  • Playwright

Бэкенд

  • Python 3.11
  • Django 4.1
  • Django REST Framework 3.14
  • Daphne/ASGI
  • Celery 5.3
  • openai-agents

Данные и поиск

  • PostgreSQL 14
  • Redis 7
  • Elasticsearch 7
  • MinIO

Инфраструктура и инструменты

  • Docker Compose
  • Docker Swarm
  • GitHub Actions
  • ruff
  • mypy