Новый виток вводимых ограничений ведет к кратному росту числа клиентов в онлайн-ритейле. Для того, чтобы справиться с растущими объемами, компании e-commerce сегмента массово внедряют различные проекты по автоматизации привычных процессов. Одним из таких все чаще становится внедрение Transportation Management system (TMS) — это общее название для технологий, которые позволяют автоматизировать управление таксопарком компании и дают возможность компании масштабироваться за счёт оптимизации грузоперевозок.

Подобную систему можно как приобрести у внешних разработчиков, так и создать самим. Сергей Оленцов, product owner TMS «Утконос Онлайн», рассказал об опыте компании в разработке собственной TMS-системы и о том, как ее можно дополнить с помощью внешних решений для усиления бизнес-процессов компании.
Что такое TMS и какие задачи она решает?

TMS — это система, которая с помощью предиктивных алгоритмов рассчитывает загрузку машин под конкретные интервалы и равномерно распределяет машины по маршрутам под каждый из интервалов.

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

С помощью TMS компании могут:

сократить время обработки заказа;
оптимизировать логистику;
обеспечить равномерную загрузку машин;
увеличить точность попадания в интервал;
сократить объем ручных операций в три раза;
избавиться от пиковых интервалов и сделать равномерную нагрузку в течение суток.

Из чего состоит функционал TMS

Если раскладывать по полочкам, то функционал TMS состоит из следующих этапов:

1. Обработка входящего заказа

Покупатель выбирает товары и адрес доставки, сайт запрашивает у TMS интервалы.

15 топ-менеджеров, которые вывели свои компании на лидирующие позиции в рейтинге ESG.

2. Определение параметров заказа

TMS определяет сегмент доставки, зоны и кластер. Затем сервис раскладки (Layout Service, LS) заказов по коробам завершает работу и отдает полученный результат в TMS.

3. Оценка доступных ресурсов

TMS выбирает машины из списка доступных и пересчитывает их маршруты. TMS умеет работать с любым типом, маркой и моделью транспортного средства.

4. Выбор подходящего интервала заказа

TMS передает сайту доступные интервалы, клиент выбирает нужный. Затем выбранный интервал возвращается в TMS.

5. Размещение заказа

Оценка ресурсов в выбранном клиентом интервале, оптимизация по пробегу, фиксируется новая точка в маршруте.

Как повысить эффективность TMS с помощью внешних решений

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

Одни из таких решений стали технологии нашего партнера «Яндекс.Маршрутизации». С помощью алгоритмов компании мы усилили нашу разработку в части процесса планирования маршрутов. Сейчас этот процесс выглядит следующим образом.

В течение дня TMS набирает данные о заказах, а в момент, когда заполненность автомобилей достигает отметки выше 70%, либо по триггеру (примерно раз в час) все принятые заказы отправляются на внешний сервис в «Яндекс.Маршрутизацию».

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

После этого мы отправляем в систему новые, более плотные значения маршрутов.

За счет регулярной маршрутизации происходит уплотнение и высвобождение около 10-20 % ресурсов, что позволяет нам предлагать клиентам доставку с возможностью выбора двухчасового временного интервала для получения заказа.

Объясним на примере: наш внутренний алгоритм TMS предлагает отправить на маршруты 20 водителей. Система посчитала их автомобили полностью укомплектованными, поэтому на внешний сервер «Яндекса» уходит информация о 20 машинах. В результате второго этапа обработки это число сокращается до 17-18 автомобилей. Таким образом мы получаем еще 2-3 машины, доступных для заполнения.

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

Качественные изменения
Как улучшились показатели, насколько оптимизировались процессы, где удалось сэкономить и перераспределить ресурсы

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

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

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

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

Разработка TMS

Наша команда разработки состояла из product owner’a, трех backend-разработчиков, одного frontend-разработчика, аналитика и тестировщика.

Сам подход к разработке TMS выглядел так:

1. Формулируем цель проекта

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

2. Выбираем язык разработки

Изначально TMS писали на Java, но впоследствии было принято решение переписать все на Python, более быстрый в освоении и более удобный для работы с массивами данных, а специалистов, работающих с ним, намного больше.

3. Прописываем архитектуру системы

Важно заранее понимать, как блоки, из которых состоит система, будут взаимодействовать между собой, чтобы обеспечить их бесперебойное взаимодействие.

4. Пишем код

Прописываем взаимодействие всех блоков системы и складываем их в единое целое.

5. Тестируем

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

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

Кстати, еще одно преимущество Python заключается в том, что он позволил не строить административный интерфейс с нуля, а подключить готовый фреймворк — это позволило нам не тратить много времени на frontend-разработку в этом направлении.Что важно помнить при разработке TMS

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