Усилили команду платформы по автоматизации транспортной логистики

Evrone предоставил middle и senior-разработчиков для TRUCKER — IT-платформы, которая предлагает комплексные решения для управления транспортной логистикой, ЖД перевозками, двором и окнами погрузки. Мы помогли клиенту в разработке новых фич и обслуживании системы.

January 2025

Клиент

TRUCKER предоставляет решения для Грузовладельцев и Грузоперевозчиков. Флагманский продукт компании - Transportation Management System (TMS), предназначенный для управления транспортной логистикой. TMS позволяет создавать и автоматически распределять заказы между перевозчиками, выставлять их на торги, напрямую направлять заказы на партнеров; настраивать индивидуальные правила распределения и проведения торгов; управлять временными окнами через модуль цифровой очереди; отслеживать маршруты и контролировать выполнение заказов в режиме реального времени через мобильное приложение; вести сквозной документооборот с использованием электронного обмена данными (ЭДО) и реестра счетов; анализировать данные и формировать отчеты с помощью встроенного модуля. Система поддерживает мультимодальные перевозки (авто, ЖД, море, авиа) и интеграцию с ERP-системами клиентов, обеспечивая прозрачность процессов и сокращая трудозатраты.

Продукт

Это монолитное Rails-приложение, которое следует принципам Domain-Driven Design (DDD), подхода, ориентированного на моделирование бизнес-доменов. При построении системы командой TRUCKER были заложены такие архитектурные принципы как Event-Driven и CQRS. Реализованы данные подходы в том числе за счет использования библиотеки Rails Event Store и библиотек семейства dry-rb.

Разработка ведется в функциональном стиле. С одной стороны, это делает код более надежным и логически непротиворечивым, с другой — повышает требования к разработчикам. Бизнес часто выбирает императивное программирование на Ruby, что ускоряет разработку и сокращает текущие издержки. Функциональное же программирование дает положительный эффект на длинной дистанции — система получается более устойчивой и готовой к масштабированию без опасных изменений.

Сотрудники Evrone работали в большинстве внутренних команд под руководством клиента, помогая развивать и поддерживать продукт, а также разрабатывая новые фичи. Требования к квалификации сотрудников высоки, от нас на проекте работают Ruby-разработчики middle и senior уровня. Ниже расскажем, к каким задачам подключались разработчики из Evrone.

Биллинг

Биллинг в TMS построен на основе Open Source инструмента Lago. Он предлагает собственный GraphQL API, веб хуки и интерфейс для администрирования. Однако, из коробки Lago не соответствовал всем требованиям продукта TMS, команде пришлось адаптировать его к российским нормативам и построить интеграцию с отечественной 1С.

SDK для интеграций

Реализация клиентских проектов в TMS от TRUCKER построена на комплексном подходе и персонализации, поскольку бизнес-процессы в логистике, внешне схожие, в деталях могут значительно различаться. В архитектуре TMS изначально заложены 3 слоя, которые позволяют продукту быть максимально гибким в данных условиях::

  • функциональность ядра (Core)
  • клиентская кастомизация (Customer Configuration)
  • набор инструментов для общения клиентской кастомизации с ядром и наоборот (SDK).

 

При участии Evrone происходит разработка SDK для интеграций с клиентскими учетными системами. Необходимо решить 2 задачи:

  • реализовать переиспользуемые протоколы получения и отправки сообщений в SDK.
  • реализовать механизмы обработки входящих и исходящих сообщений в Customers Configurations.

Нестабильные тесты

Более 17 000 автоматических тестов для backend-части приложения помогают удерживать высокий стандарт качества. Публикация любых изменений требует сначала автоматической проверки, затем верификации от двух коллег, и снова автоматической проверки перед публикацией в продакшн.

На проекте существовала проблема Flaky-тестов. Это нестабильные тесты, которые при одинаковых условиях показывали разный результат. Каждая автоматическая проверка длится до получаса, в случае падения хотя бы одного теста публикация изменений могла задерживаться, ожидая перезапуска и успешной проверки.

Один из наших разработчиков предложил эффективное решение. Код перезапускает все тесты, выбирает те, которые упали, и перезапускает их еще несколько раз. Если ошибка повторяется — проблема в коде самого приложения. Если результат разный — проблема в коде теста и разработчик получит уведомление в мессенджере, что тест нестабилен. Так проблема обнаруживается и исправляется гораздо быстрее.

Техподдержка

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

Фича-флаги

В TRUCKER используется современный подход Continuous Delivery, при котором обновления доставляются в продакшн маленькими группами (до нескольких десятков раз в неделю). При этом, все изменения закрывают фича-флагами. Это механизм, который включает и выключает части приложения при определенных условиях. Поведение приложения меняется без перезапуска. Такой подход позволяет протестировать изменения на отдельных пользователях и группах, а затем открывать их всем. 

Цифровая очередь

Цифровая очередь — это инструмент для управления процессами погрузки и разгрузки на площадках. Система позволяет грузоотправителям и перевозчикам получать информацию о транспортных средствах, заказах и их статусах в реальном времени. Она помогает не только планировать, но и резервировать слоты для конкретных партнеров. Например, можно выделить десять слотов для компании, которая потом сама распределяет их между своими водителями. Это упрощает организацию процесса, помогает избежать простоя и делает взаимодействие между участниками логистической цепочки более удобным и эффективным.
 

Фронтенд

Одним из основных рабочих инструментов для конечного пользователя в TMS являются таблицы с большим числом строк и колонок. При этом мощность компьютеров на рабочих местах может быть ограничена. При слабых характеристиках компьютера и значительном объеме данных таблица начинала работать медленно.

Команда TRUCKER выделила одного нашего сеньор фронтенд инженера на фултайм для исследования и решения данной задачи.

Было проведено сравнение существующих решений и в итоге было принято решение реализовывать собственный компонент таблицы. Вот лишь некоторые требования: плавный горизонтальный и вертикальный скролл, возможность фиксации некоторых столбцов, динамическая ширина столбцов, раскрывающиеся строки. Теперь система учитывает разную ширину, и прокрутка происходит мягко. 

Также был обнаружен и исправлен неоптимальный рендеринг переводов (локализации) в случаях динамически вычисляемого перевода в зависимости от формы множественного числа (плюрализации). Использование встроенного механизма плюрализации библиотеки позволило ускорить рендеринг таких элементов в 2,5 раза.

Результат

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

  • Интеграция биллинговой системы.
  • Переработка функциональности цифровой очереди.
  • Оптимизация работы таблиц. 
  • Разработка функциональности групповых заказов.
  • Решение проблемы нестабильных тестов.
  • Автоматическое назначение логистов перевозчика по заданным правилам.
  • Добавление новых модальностей (море и авиа).

Групповые заказы станут доступны пользователям в начале 2025 года, разработка SDK тоже еще продолжается. 

В команде Evrone специалисты с широким опытом работы на крупных проектах, которые готовы поделиться своей экспертизой. Заполните форму, чтобы уже через неделю мы присоединились к разработке вашего продукта. 

Благодаря Evrone за несколько месяцев мы смогли существенно расширить возможности команды разработки. Специалисты Evrone за время работы стали практически частью команды и по сегодняшний день  помогают нам развивать наши продукты. Они гибко подстраиваются под наши запросы, потребности и приоритеты.
Алексей Походня
Технический директор TRUCKER
Будем на связи
Прикрепить файл
Максимальный размер файла: 8 МБ.
Допустимые типы файлов: jpg jpeg png txt rtf pdf doc docx ppt pptx.