Маршрутизация
Маршруты Симулятор
Оператор

Заказы

Загрузка...
Загрузка...

Маршруты

Нажмите "Оптимизировать" для
построения маршрутов
—
Все Черновик Утверждён Архив
Выберите фильтры и нажмите
для загрузки истории

Настройки

Справка

Быстрый старт

Основной рабочий процесс в 5 шагов. Обновлено 07.04.2026

1
Выберите дату

«Сегодня» / «Завтра» или произвольная дата. Заказы загрузятся автоматически из 1С.

2
Проверьте заказы

Используйте фильтры: «Заморозка» / «Обычные», направления, поиск. Справа от поиска — общая сумма в рублях. Разверните панель (кнопка ↗) для просмотра в 2-3 колонки.

3
Оптимизируйте

Нажмите «Оптимизировать». Система распределит заказы по машинам с учётом веса, интервалов доставки и дорожной сети. Замороженные заказы — только на рефрижераторы.

4
Утвердите маршруты

На вкладке «Маршруты» проверьте результат: точки, вес, ETA, расстояние. Скройте ненужные маршруты кнопкой-глазом для удобства. Нажмите «Утвердить» для фиксации.

5
Экспортируйте

В «Истории» скачайте маршрутный лист в PDF или Excel с ETA и интервалами доставки.

Заказы и фильтры

Панель заказов

Левая панель показывает все заказы на выбранную дату. Каждая карточка содержит: название контрагента, адрес, вес, количество коробок, сумму в рублях и направление (цветной бейдж).

Фильтры

  • Все / Заморозка / Обычные — фильтр по типу заказа. Замороженные отмечены снежинкой ❄
  • Направления — раскрывающийся список зон доставки. Каждая зона имеет свой цвет
  • Поиск — поиск по названию контрагента или адресу

Сумма

Справа от поиска отображается общая сумма заказов в рублях. Внизу фильтров — количество заказов, вес (кг), ящики, число замороженных.

Развернуть панель

Кнопка ↗ в заголовке «Заказы» расширяет панель на 60% экрана. Карточки выстраиваются в несколько колонок. Повторное нажатие (↙) — сворачивает обратно. Правую панель маршрутов тоже можно свернуть кнопкой > для увеличения карты.

Карточка заказа

Клик по карточке раскрывает подробности: контрагент, номер документа 1С, комментарий, список товаров с весом.

Импорт заказов из 1С

Автоматический импорт

Cron-задача запускается каждые 30 минут: первый запуск в 16:55, затем в 17:25, 17:55 и так далее до 22:55. Заказы выгружаются из 1С в JSON-файл, передаются через WinSCP на TrueNAS, затем синхронизируются на сервер и загружаются через API.

Ручной импорт

Нажмите кнопку «Импорт из 1С» на панели заказов и выберите JSON-файл, выгруженный из 1С. Файл должен содержать массив заказов с полями: номер, контрагент, адрес, вес.

Отчёт об импорте

После импорта отображается отчёт:

  • imported_orders — количество загруженных заказов
  • new_delivery_points — новые точки доставки (созданы автоматически)
  • geocoding_pending — точки, ожидающие геокодирования

Повторный импорт

При повторном импорте на ту же дату все заказы полностью перезаписываются. Это нормальное поведение — последний импорт всегда актуален.

История импортов

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

Точки доставки и геокодирование

Создание точек

Точки доставки создаются автоматически из адресов в заказах 1С. Система пытается найти координаты (геокодировать) каждый адрес через Яндекс Geocoder и Nominatim (OSM).

Значки геокодирования

✓ Проверено вручную — координаты подтверждены оператором
Я exact Яндекс нашёл точное совпадение — адрес определён верно
Я number Яндекс нашёл приблизительно (дом) — может потребоваться ручная корректировка
Я street Яндекс нашёл приблизительно (улица) — рекомендуется проверить
N Nominatim (OpenStreetMap) — альтернативный геокодер, точность может варьироваться
— Нет координат — точка не будет участвовать в маршруте, требуется ручная корректировка

Известная особенность

Некоторые «адреса» из 1С на самом деле являются названиями договоров или контрагентов, а не реальными адресами. Такие записи невозможно геокодировать — для них нужно вручную указать координаты.

Оптимизация маршрутов

Как это работает

Солвер VROOM решает задачу маршрутизации (VRP), а OSRM рассчитывает реальные расстояния и время по дорожной сети Приволжского ФО. Маршруты рисуются по дорогам, не прямыми линиями.

Заморозка и мульти-рейсы

Замороженные заказы (определяются автоматически по названию товара) оптимизируются отдельно и назначаются только на машины с рефрижератором. Каждая машина может выполнить несколько рейсов в день.

Внешняя доставка (районы)

Заказы в зоны «Каменский район», «Кузнецк», «Ломов», «Мокшан» не участвуют в оптимизации — они доставляются наёмными машинами. Такие заказы отмечены значком ↗ и отображаются в списке, но выводятся отдельным блоком «Внешняя доставка» в панели маршрутов с указанием зоны, количества и веса.

ETA и интервалы доставки

При оптимизации VROOM рассчитывает ETA (расчётное время прибытия) для каждой остановки. Если у точки доставки задан интервал доставки (например, 06:30–08:40), солвер учитывает это ограничение. Оба значения сохраняются и отображаются в маршрутных листах.

Автопарк

Транспорт Грузоподъёмность
Газель-1 1500 кг
Газель-2 1500 кг
ВИС-1 700 кг

Депо

Все маршруты начинаются и заканчиваются: ул. Металлистов, 7

Нераспределённые заказы

Если суммарный вес превышает вместимость или не удаётся уложиться во временные окна, часть заказов останется нераспределённой (жёлтое предупреждение). Повторная оптимизация заменяет только черновики — утверждённые маршруты сохраняются.

Видимость маршрутов

Кнопка-глаз на каждой карточке скрывает/показывает маршрут на карте. Кнопки «Все» / «Скрыть все» управляют видимостью всех маршрутов сразу.

Карточки маршрутов

По умолчанию свёрнуты — видно название машины, кол-во остановок, вес, загрузку. Клик раскрывает полную информацию: водитель, статус, список остановок с ETA.

Сводная таблица

Над карточками — компактная таблица сравнения всех маршрутов: машина, остановки, кг, км, минуты, загрузка %. Итоговая строка внизу. Перегруз подсвечен красным.

Загрузка: вес и время

Каждый маршрут показывает две полосы загрузки:

  • Вес — отношение суммарного веса к грузоподъёмности машины
  • Время — (время в дороге + обслуживание на точках) / рабочий день

Время обслуживания: 10 мин обычные точки, 15 мин заморозка. Рабочий день: 05:00–16:00 (660 мин). Настраивается через переменные окружения.

Предупреждения

  • Нераспределённые заказы — жёлтый баннер. Клик раскрывает список с причинами (нет координат и т.д.)
  • Нет водителя — оранжевый ⚠ на маршрутах без назначенного водителя
  • Перегруз — красная полоса загрузки при >95%
  • Без координат — красный счётчик «⚠ N без координат» в строке итогов заказов

Настройки оптимизации

Параметры задаются в .env и перечитываются при перезапуске:

SERVICE_MIN_REGULAR=10     # минут на обычную точку
SERVICE_MIN_FROZEN=15      # минут на заморозку
WORK_DAY_START_HOUR=5      # начало рабочего дня
WORK_DAY_END_HOUR=16       # конец рабочего дня

История и экспорт

Вкладка «История»

Правая панель → вкладка «История». Показывает все утверждённые и архивные маршруты. Фильтры: период дат, водитель, машина, статус (Черновик / Утверждён / Архив).

Карточки маршрутов

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

Развёрнутый маршрут

При раскрытии карточки:

  • Список остановок с номерами, весом, интервалом доставки и ETA
  • Маршрут отрисовывается на карте по дорогам
  • Кнопки: PDF, Excel, Переназначить водителя

Экспорт PDF

Маршрутный лист для водителя: дата, машина, водитель, таблица остановок с колонками: №, Контрагент, Адрес, ETA, Интервал, Вес, Ящики. Итоги внизу.

Экспорт Excel

Два листа: «Сводка» (общие данные) и «Остановки» (детальная таблица с направлениями).

Жизненный цикл маршрута

Черновик → оптимизация создаёт маршрут. Можно переоптимизировать.
Утверждён → оператор подтвердил. Маршрут зафиксирован, не перезаписывается.
Архив → автоматически ночью или вручную. Хранится в истории бессрочно.

Для администратора

API-ключ для cron

Ключ для автоматического импорта настраивается в файле .env:

SERVICE_API_KEY=ваш_ключ

Cron-скрипт

Скрипт автоимпорта:

/srv/apps/logistics/scripts/import-cron.sh

Расписание в crontab:

10 18-23 * * * /srv/apps/logistics/scripts/import-cron.sh

Синхронизация данных

Данные из 1С синхронизируются через rsync с TrueNAS:

TrueNAS → /srv/apps/logistics/data/

Полный конвейер:

1С → JSON → WinSCP → TrueNAS → rsync → API

Управление транспортом и водителями

Добавление и изменение машин/водителей — через API или seed-скрипт:

python scripts/seed-data.py

Логи

Для диагностики ошибок геокодирования и импорта:

docker compose logs app

Советы

Когда импортировать

Финальный импорт — после 21:00, когда все заказы оформлены в 1С. Автоимпорт работает каждые 30 минут с 16:55 до 22:55.

Проверяйте геокодирование

Точки без координат (—) не попадут в маршрут. Проверьте перед оптимизацией.

Повторная оптимизация

Можно запускать многократно — заменяются только черновики. Утверждённые маршруты защищены от перезаписи. Пустые утверждённые маршруты (без остановок) удаляются автоматически.

Развернуть панели

Кнопка ↗ расширяет панель заказов — удобно для работы с большим списком. Кнопка > сворачивает правую панель маршрутов, освобождая место для карты.

Заморозка

Замороженные заказы определяются автоматически по ключевым словам в товарах. Фильтр ❄ позволяет быстро отделить заморозку от обычных заказов. Оптимизация заморозки — отдельной кнопкой.

Мобильная версия

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