Все кейсы

Laneflare: ИИ-диспетчер и TMS для грузоперевозчиков-экспедиторов

Laneflare — мой собственный продукт для небольших перевозчиков-экспедиторов в США. Заявки со всех бирж грузов попадают на одну доску, система подбирает подходящую машину и готовит ставку для диспетчера. Продукт, сайт и инфраструктуру спроектировал и сделал один.

Контекст

Небольшие перевозчики-экспедиторы работают на фургонах и грузовиках и находят грузы на биржах. Диспетчер следит за десятками уведомлений, сверяет каждое с тем, где стоят машины, и отвечает брокеру вручную; груз обычно достаётся первой разумной ставке. Laneflare начался как система для одного такого автопарка и вырос в продукт для перевозчиков вроде него.

Что сделано

Одна доска для всех заявок. Заявки приходят процессом каждые две минуты, у каждой — метка биржи-источника; ушедшие с биржи помечаются как истёкшие. Статусы «Доступна», «Ставка отправлена», «Забронирована», «Истекла» и отдельный вид для каждой машины.

Сначала — подходящая машина. Каждая заявка сверяется с положением водителей, радиусом поиска, типом кузова и грузоподъёмностью, в строке видна ближайшая подходящая машина. Кредитный рейтинг брокера подтягивается по номеру MC, повтор того же направления от того же брокера помечается, брокеры с низким рейтингом уходят в скрытый вид.

Ставка в два клика. «Отправить ставку» открывает заполненное письмо: получатель, тема, итоговая цена и текст. Заявка переходит в «Ставка отправлена» и хранит сумму.

От ставки до доставки. Действия заказа проводят груз через котировку, бронь, заказ и отправку; водитель получает сообщение со ссылками на карту. Подтверждение ставки и накладная собираются в PDF из заказа. Машины и грузы — на живой карте, а каждое изменение приходит на открытые экраны по WebSocket без перезагрузки.

Сайт. laneflare.com — статичная страница без фреймворка. Таблица грузов на первом экране собрана по настройкам экранов самого продукта, поэтому на странице настоящие колонки, статусы и цвета.

Как устроено

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

По дороге ускорился движок процессов: создание заказа через процесс — со 155 до 19 мс.

Каждое изменение выкатывается автоматически на собственную инфраструктуру: сборка образа обновляет тег в репозитории кластера, ArgoCD раскатывает.

Как это выглядит

laneflare.com
Сайт продукта: диспетчер пишет правило, Laneflare сверяет с ним каждое уведомление с бирж грузов
Сайт продукта: диспетчер пишет правило, Laneflare сверяет с ним каждое уведомление с бирж грузов, мобильная версия
Сайт продукта: диспетчер пишет правило, Laneflare сверяет с ним каждое уведомление с бирж грузов
Другие кейсы

Кейсы и личные проекты