openapi: 3.0.3
info:
title: VRt.Universal [UV]
version: 7.11.2593
license:
name: Proprietary
url: https://veeroute.ru/
termsOfService: https://veeroute.ru/resources/terms_of_service
contact:
name: Veeroute Support Team
email: servicedesk@veeroute.com
x-logo:
url: ../images/universal.svg
backgroundColor: '#FAFAFA'
altText: VRt.Universal
description: '# Описание
Программный интерфейс для универсального планирования рейсов.
## Возможности
* Возможность забора груза из любой локации
* Возможность разгрузки в любой локации
* Парные заявки нескольких типов: `PICKUP` (погрузка), `DROP` (выгрузка)
* Одиночные заявки нескольких типов: `DROP_FROM_BOX` (выгрузка груза, который
уже находится в кузове), `PICKUP_TO_BOX` (забор груза в кузов без последующей
выгрузки), `WORK` (работа на локации без перемещения груза)
* Комплексный заказ может состоять из любого числа заявок любых типов
* Транспорт и исполнители разделены на разные сущности, при планирование происходит
оптимальное назначение исполнителя на транспорт
* У транспорта несколько отсеков - каждый из которых может вмещать груз и обладает
собственными характеристиками
* Учёт совместимости груза с транспортом по параметрам габарита груза (длина,
ширина, высота, дополнительные параметры вместимости)
* Учёт совместимостей груз-отсек транспорта (возможность учесть свойства отсека:
холодильник, термо-сумка, крепежи и т.п)
* Заявки-заменители, т.е. возможность выполнить одну из заявок-заменителей, выбор
которой происходит на основе её географического местоположения и временного окна
## Поддержка ограничений
Ограничения на **исполнителя**:
* Место старта/финиша
* Учет передвижения исполнителя до точки старта транспорта
* График доступности исполнителя - список временных окон, в которые исполнитель
может совершать перемещения и совершать работу на локациях
* Максимальная продолжительность работы исполнителя в течение заданного временного
периода
Ограничения на **транспорт**:
* Место старта/финиша
* График доступности транспорта - список временных окон, в которые транспорт может
совершать перемещения
* Максимальная протяженность маршрута
* Несколько отсеков в транспорте, каждый со своими параметрами
* Ограничение сверху на суммируемые вместимости (вес, объем, количество заказов,
количество заявок)
Ограничения на **заказ**:
* Жесткие временные окна
* Возможность указать разные допустимые окна работы локации и окна желаемого выполнения
заявки
* Учет порядка исполнения заявок в пределах маршрута
* Список желаемых временных окон выполнения с разными стоимостями для каждого
из них
## Используемые совместимости
Сущности являются совместимыми, если список свойств одной сущности полностью покрывает
список требований другой сущности (наоборот для `performer_blacklist` - списки
не должны пересекаться).
Поддерживаемые совместимости:
| Название | Требования | Свойства |
|-------------------------|----------------------------------|------------------------------|
| Заказ - Исполнитель | order.performer_restrictions | performer.performer_features
|
| Заказ - Не Исполнитель | order.performer_blacklist | performer.performer_features
|
| Груз - Отсек | order.cargo.box_restrictions | transport.box.box_features |
| Локация - Транспорт | location.transport_restrictions | transport.transport_features
|
| Транспорт - Исполнитель | transport.performer_restrictions | performer.performer_features
|
| Исполнитель - Транспорт | performer.transport_restrictions | transport.transport_features
|
| Заказ - Заказ | order.order_restrictions | order.order_features |
| Груз - Груз | cargo.cargo_restrictions | cargo.cargo_features |
Примеры бизнес правил:
| Название | Пример бизнес-правила |
|-------------------------|---------------------------------------------------------------------------------------|
| Заказ - Исполнитель | Для выполнения заказа водитель должен иметь особое
разрешение |
| Заказ - Не Исполнитель | Водитель в черном списке |
| Груз - Отсек | Для перевозки замороженной продукции необходим отсек
с особым температурным режимом |
| Локация - Транспорт | Ограничения на высоту транспорта |
| Транспорт - Исполнитель | Для грузового транспорта водитель должен иметь категорию
`C` |
| Исполнитель - Транспорт | Водителю разрешено работать только на определенном
транспорте |
| Заказ - Заказ | Нельзя перевозить рыбу и фрукты в одном отсеке |
| Груз - Груз | Два груза нельзя одновременно размещать в одном отсеке
транспорта, по очереди - можно |
## Назначения
Механизм назначений (`hardlinks`) необходим для указания требований по нахождению
заказов, исполнителя и транспорта в одном рейсе.
Назначение гарантирует нахождения сущностей в одном рейсе и не гарантирует факт
планирования сущности.
Например, если исполнитель не успевает выполнить заказ, то он не запланируется,
но назначится на рейс (попадет в `waitlist`).
Также назначение не отменяет указанные совместимости (и штрафы за нарушение совместимостей).
Например, если заказ не может быть выполнен исполнителем, он не запланируется,
но назначится на рейс (попадет в `waitlist`).
## Размещение грузов в кузове
Список способностей объекта вращаться (с шагом в 90 градусов):
* `ALL` - можно поворачивать по любой оси любое количество раз
* `YAW` - можно повернуть один раз по вертикальной оси (вокруг своей оси)
* `PITCH` - можно повернуть один раз по поперечной оси (поставить вертикально)
* `ROLL` - можно повернуть один раз по продольной оси (положить на бок)
![rotation](../images/universal_cargo_yaw_pitch_roll.svg)
## Модель рейса
Рейс описывается списком состояний исполнителя, при этом одновременно исполнитель
может находится в нескольких состояниях (например быть внутри рабочего временного
окна локации и выполнять заказ на этой же локации).
Значения флагов, отвечающих за географическое положение (одновременно может быть
несколько флагов):
* `AROUND_LOCATION` - исполнитель находится рядом с локацией - в процессе парковки
или выезда с нее.
* `INSIDE_LOCATION` - исполнитель находится на локации.
Значения флагов, отвечающих за нахождения во временных окнах (одновременно может
быть несколько флагов):
* `INSIDE_WORKING_WINDOW` - исполнитель находится внутри рабочего временного окна.
* `INSIDE_LOCATION_WINDOW` - исполнитель находится внутри времени работы локации.
* `INSIDE_EVENT_HARD_WINDOW` - исполнитель находится внутри жесткого временного
окна.
* `INSIDE_EVENT_SOFT_WINDOW` - исполнитель находится внутри мягкого временного
окна.
Значения флагов, отвечающих за действия (одновременно может быть только один флаг):
* `ON_DEMAND` - исполнитель начал работу над заявкой.
* `WAITING` - исполнитель начал ожидание.
* `RELOCATING` - исполнитель начал перемещаться к следующей остановке.
* `BREAK` - исполнитель начал на перерыв.
* `REST` - исполнитель начал длительный отдых.
* `ARRIVAL` - исполнитель начал парковку.
* `DEPARTURE` - исполнитель завершил выезд с парковки.
Значения флагов, отвечающих за логическое состояние:
* `DURING_ROUNDTRIP` - исполнитель выполняет кругорейс.
### Пример маршрута с множеством состояний в каждый момент времени
| Время | Набор активных флагов |
Локация / Заказ / Заявка / Событие | Комментарий |
|:------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------|:----------------------------------------------------------------|
| 10:00 | INSIDE_LOCATION
AROUND_LOCATION |
2 / - / - / - | Стартовая локация |
| 10:05 | AROUND_LOCATION
DEPARTURE |
2 / - / - / - | Выехали с парковки |
| 10:10 | RELOCATING
DEPARTURE |
2 / - / - / - | Едем к первому заказу |
| 10:20 | AROUND_LOCATION
ARRIVAL |
2 / - / - / - | Подъехали к первому заказу |
| 10:40 | AROUND_LOCATION
INSIDE_LOCATION
WAITING |
2 / - / - / - | Припарковались |
| 11:00 | AROUND_LOCATION
INSIDE_LOCATION
INSIDE_LOCATION_WINDOW
WAITING
INSIDE_EVENT_HARD_WINDOW |
2 / - / - / - | Дождались начала окна локации и одновременно
доступности заказа |
| 11:25 | AROUND_LOCATION
INSIDE_LOCATION
INSIDE_LOCATION_WINDOW
ON_DEMAND
INSIDE_WORKING_WINDOW
INSIDE_EVENT_HARD_WINDOW |
2 / 1 / 2 / 3 | Дождались смены исполнителя |
| 11:30 | AROUND_LOCATION
INSIDE_LOCATION
INSIDE_LOCATION_WINDOW
ON_DEMAND
INSIDE_WORKING_WINDOW
INSIDE_EVENT_HARD_WINDOW
INSIDE_EVENT_SOFT_WINDOW
| 2 / 1 / 2 / 3 | Пока работали - случилось мягкое окно |
| 11:40 | AROUND_LOCATION
INSIDE_LOCATION
INSIDE_LOCATION_WINDOW
INSIDE_WORKING_WINDOW |
2 / - / - / - | Закончили работать |
| 11:45 | AROUND_LOCATION
DEPARTURE
INSIDE_WORKING_WINDOW |
2 / - / - /- | Выехали с парковки |
| 11:45 | RELOCATING
INSIDE_WORKING_WINDOW |
- / - / - / - | Едем на следующий заказ |
## Конфигурация планирования
Для каждого планирования есть возможность указать конфигурацию планирования, которая
определяет целевую функцию, желаемое качество маршрутов и скорость расчета.
Название конфигурации планирования передается в поле `trips_settings.configuration`.
Основные конфигурации:
| Название | Задача |
|---------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **optimize_distance** | Расставить как можно больше заказов, затем
оптимизировать суммарный пробег (количество транспорта выбирается исходя из пробега),
используется по умолчанию |
| **optimize_transports** | Расставить как можно больше заказов, при этом
использовать как можно меньше транспорта, при прочих равных оптимизировать время
работы исполнителей |
| **optimize_locality_grouping** | Расставить как можно больше заказов, при этом
стремиться оптимизировать визуальную группировку маршрутов, но не их количество |
| **optimize_cars_then_distance** | Расставить как можно больше заказов, затем
оптимизировать количество транспорта, затем пробег |
| **optimize_time** | Расставить как можно больше заказов, затем
оптимизировать суммарное время работы исполнителей |
| **optimize_cars_then_time** | Расставить как можно больше заказов, затем
оптимизировать количество транспорта, затем суммарное время работы исполнителей |
| **optimize_money** | Оптимизировать величину "прибыль - затраты",
складывается из наград за заявки и расходов на исполнителей и транспорты (оптимизируемая
величина неотрицательна) |
Дополнительные конфигурации:
| Название | Задача |
|-----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **visual_grouping** | Расставить как можно
больше заказов, при этом использовать как можно меньше транспорта и маршруты должны
быть визуально сгруппированы |
| **optimize_visual_grouping** | Расставить как можно
больше заказов, затем равномерно распределить заказы с учетом зон транспортной
доступности (как visual_grouping, но визуальная группировка рассчитывается иначе)
|
| **optimize_cars_then_locality_grouping** | Расставить как можно
больше заказов, затем оптимизировать количество транспорта, затем визуальную группировку
маршрутов |
| **optimize_cars_then_single_location_grouping_sequenced** | Расставить как можно
больше заказов, затем оптимизировать количество машин, а затем надёжность |
В дополнение к существующим вариантам планирования возможно создание целевой функции
непосредственно под бизнес-процессы клиента ([запросить конфигурацию](mailto:servicedesk@veeroute.com)).
Для разработки рекомендуется использовать **optimize_cars_then_distance**, так
как данная конфигурация не требует детального подбора тарифов и стоимостей заказов.
## Валидация данных
Валидация входных данных состоит из нескольких этапов, которые описаны ниже.
### 1. Проверка по схеме
Если запрос не проходит по схеме, то планирование не запускается целиком и такая
ошибка возвращается вместе с кодом 400 в `schema_errors`.
Мы рекомендуем проверять запрос по схеме (или yaml-файлу) перед отправкой на сервер.
### 2. Проверка на логические ошибки, которые не позволяют продолжить планирование
Корректные по схеме данные проходят второй этап проверки на возможность запуска
планирования.
Пример ошибок на данном этапе - ключи, ведущие на пустые сущности, или если все
заказы несовместимы со всеми исполнителями, т.е. то, что делает задачу планирования
бессмысленной.
Данные ошибки возвращаются вместе с кодом 400 в `logical_errors`.
### 3. Проверка на логические ошибки, которые не позволяют продолжить планирование
На третьем этапе происходит проверка каждой сущности отдельно.
Все сущности, которые не прошли проверку - вырезаются из исходной задачи и не
отправляются на планирование.
В зависимости от настройки `treat_warnings_as_errors` результаты данного типа
проверки возвращаются в `warnings` вместе с кодом 400, либо вместе с результатом
планирования.
### 4. Проверки в процессе планирования
Часть проверок можно осуществить только в процессе планирования.
Например - что согласно указанным тарифам и по актуальному прогнозу пробок физически
невозможно доехать до определенной точки.
Результаты данных проверок возвращаются в `warnings` либо вместе с результатом
планирования.
## Диаграмма сущностей
![erd](../uml/universal.svg)
'
servers:
- url: https://api.edge7.veeroute.cloud
description: Окружение для интеграции и ознакомления с новой функциональностью
- url: https://api.prod7.veeroute.cloud
description: Основное окружение
security:
- ApiKeyAuth: []
tags:
- name: Plan
description: 'Планирование - создание рейсов, которые учитывают все заданные ограничения,
на основе данных о заказах, исполнителях и транспорте.
Запросы на планирования возможно выполнять в синхронном (для тестирования) и асинхронном
(для основного использования) режимах.
Чтобы получить результат работы очистки исходной задачи воспользуйтесь [очисткой
данных для планирования](#operation/run_plan_refine).
'
- name: Actualize
description: 'Актуализация рейсов - обновление планового времени выполнения заказов
с учетом фактов и без изменения порядка обьезда.
Актуализация проходит в три этапа - проверка, применение фактов, планирование
времен у невыполненных состояний рейсов.
Чтобы получить результат очистки и применения фактов к исходной задаче воспользуйтесь
[переработкой данных](#operation/run_actualize_refine).
Полученные в результате актуализации рейсы не меняют исполнителей, транспорт и
порядок выполнения заказов, содержат только те работы, которые осталось выполнить.
Заказы, которые не могут быть выполнены - остаются назначенными на исполнителя
и попадают в `waitlist`.
Очистка данных:
* Из датасета удаляются сущности, на которые не ссылаются входные рейсы - исполнители,
транспорт, назначения, заказы, факты.
* Если на одну сущность ссылается несколько фактов - учитывается только самый
поздний по полю time, если время совпадает - учитывается случайный из них.
* Удаляются все факты, которые произошли позже, чем `actualize_settings.current_time`.
Учет существующих рейсов:
* Рейсы трансформируются в назначения `hardlink` - т.е. назначенные на рейс смены
исполнителя и транспорта не могут использоваться в других рейсах.
* у заявок удаляются события-заменители и фиксируется порядок выполнения с помощью
`precedence_in_trip`, если у заявок уже был указан порядок выполнения - он будет
перезаписан.
Учет текущего времени:
* Если текущее время `actualize_settings.current_time` в данных не задано - то
используется время получения запроса сервером.
* Учитываются только те факты, которые произошли до `actualize_settings.current_time`.
* Если текущее время больше чем левая граница временных окон всех событий и смен
- то левая граница сдвигается до текущего времени.
* К правой границе временных окон всех событий и смен добавляется допустимое время
опоздания `actualize_settings.max_delay_duration`.
* Мягкие временные окна корректируются только в случае, если длительность заявки
не позволяет выполнить заказ внутри мягкого окна.
Учет факта о изменения локации `NEW_LOCATION`:
* Для учета факта в списке локаций `locations` должна находится новая локация,
которая описывает текущую координату исполнителя.
* Если рейс начался (время факта позже планового времени начала рейса) - транспорт
считается в той же локации, что и исполнитель - т.е. изменяются `start_location_key`
у исполнителя и транспорта.
* Если рейс не начался (время факта до планового времени начала рейса) - изменяется
только начальная локация исполнителя, локация транспорта остается из исходных
данных.
* При наличии нескольких фактов учитывается только самый поздний по полю `time`.
Учет факта о завершении заказа `ORDER_DONE`:
* Из данных для актуализации удаляются заказ, его заявки и связанные с ними локации.
* Груз считается выгруженным из транспорта.
Учет фактов о начале работ над заявкой `DEMAND_START`:
* На каждый рейс разрешен только один незакрытый факт `DEMAND_START` (закрывается
фактом `DEMAND_DONE`) - так как исполнитель может в один момент времени выполнять
только одну заявку, учитывается самый поздний факт по полю `time`.
* Время работы над заявкой сокращается на уже потраченное на нее время (вычисляется
как длина промежутка между фактом `DEMAND_START` и `actualize_settings.current_time`).
* Если есть факт о работе по заявке, которая противоречит плановому порядку в
указанном рейсе - будет сперва завершена эта заявка, затем продолжится выполнение
рейса согласно запланированному порядку.
* Факт о заказе имеет больший приоритет, чем факты о заявках по этому заказу (если
факты о заявках противоречат факту о заказе - они не будут учтены).
Учет фактов о частичном выполнении заказов `DEMAND_DONE`:
* Если у заказа выполнены все заявки - он считается завершенным (действия аналогичны
обработке факта `ORDER_DONE`).
* Если выполнена заявка с типом `WORK`, то заявка удаляется из заказа.
* Если выполнена заявка с типом `DROP`, то заявка и ее грузы, а также соответствующая
ей заявка с типом `PICKUP` удаляются из заказа.
* Если выполнена заявка с типом `DROP_FROM_BOX` то заявка и ее груз удаляются
из заказа.
* Если у заказа выполнена заявка с типом `PICKUP`, то соответствующие ей заявки
с типом `DROP` будут преобразованы в заявки с типом `DROP_FROM_BOX`.
* Если выполнена заявка с типом `PICKUP_TO_BOX`, то заявка и груз удаляются и
у транспорта уменьшается capacity соответствующего отсека (при это изменения совместимостей
не производится).
'
- name: Replan
description: "Перепланирование - создание новых рейсов на основе уже существующих\
\ рейсов с учетом фактов.\n\nПерепланирование проходит в несколько этапов - проверка,\
\ применение фактов и создание ограничений для планирования на базе существующих\
\ рейсов, планирование.\n\nЧтобы получить результат очистки и применения фактов\
\ к исходной задаче воспользуйтесь [переработкой данных](#operation/run_replan_refine).\n\
\nВ зависимости от настроек перепланирования - задача может быть сведена к планированию\
\ или актуализации.\n\n\n"
- name: Convert
description: 'Конвертация данных.
'
- name: System
description: 'Системные функции.
Вспомогательный функционал, общий для всех сервисов.
'
- name: XLSX Format
description: 'Описание формата VRt.Universal XLSX для импорта\экспорта данных.
Данный формат является полным отображением json-модели данных и используется для:
* исходных данных
* настроек процессов
* результатов расчета
* статистики по результату расчета
Ниже представлено описание каждого листа отдельно, **жирным** выделены ключи.
## Настройки данных
Название листа `info`.
| Название | Описание |
|-----------------|--------------------------------------------------------|
| **api_version** | Версия API Universal в момент генерации XLSX |
| **timezone** | Временной пояс, в котором указаны все времена в данных |
| docs_ru | Ссылка на документацию (RU) |
| docs_en | Ссылка на документацию (EN) |
| docs_zh | Ссылка на документацию (ZH) |
## Локации
Название листа `locations`.
Список локаций, которые используются в заказах и сменах.
| Название | Описание |
Примечание |
|---------------------------------------------|----------------------------------------------------------|------------------------------------------------------------------------------------------------------------------|
| **key** | Ключ локации, уникальный идентификатор |
Уникальный ключ в рамках расчета |
| departure_duration | Время на отъезд от локации, временной
промежуток | |
| geopoint.latitude | Географическая широта в градусах | |
| geopoint.longitude | Географическая долгота в градусах | |
| timetable.work_windows.from | Начало временного окна работы
локации | Обязательно, если указан `to`. Если список пустой
или не указан - локация работает без ограничений по времени. |
| timetable.work_windows.to | Окончание временного окна работы
локации | Обязательно, если указан `from`. Если список пустой
или не указан - локация работает без ограничений по времени. |
| compatibilities
.transport_restrictions | Список необходимых требований
к транспорту | Используется для проверки совместимости транспорта
локацией. |
| attributes | Атрибуты, используются для указания
служебной информации | Эти данные не учитываются в планировании. |
Описываемый объект:
## Исполнители
Название листа `performers`.
Список доступных исполнителей.
| Название | Описание |
Примечание |
|------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|
| **key** | Ключ
исполнителя, уникальный идентификатор | |
| own_transport_type | Тип
транспорта |
Если не указан, по умолчанию, проставляется `CAR`. |
| **shifts.key** | Ключ
смены, уникальный идентификатор | |
| shifts.start_location_key | Ключ
начальной локациями |
Если ключ не задан - то путь перформера начинается на первом заказе. |
| shifts.finish_location_key | Ключ
финальной локации |
Если ключ не задан - то путь перформера завершается на последнем заказе. |
| shifts.max_locations | Ограничение
количества уникальных локаций в одном рейсе, включая локации старта и финиша |
Если параметр не указан или указан как `null` - то количество локаций не ограничено. |
| shifts.max_stops | Ограничение
количества остановок в одном рейсе, включая локации старта и финиша |
Если параметр не указан или указан как `null` - то количество остановок не ограничено. |
| shifts.attributes | Атрибуты.
Используются для указания служебной информации |
Эти данные не учитываются в планировании. |
| shifts.availability_time.from | Начало
временного окна смены |
В которое исполнитель может выполнять работу на локациях и осуществлять перемещение
между локациями. |
| shifts.availability_time.to | Окончание
временного окна смены |
В которое исполнитель может выполнять работу на локациях и осуществлять перемещение
между локациями. |
| shifts.working_time.from | Начало
рабочего временного окна |
В которые исполнитель может выполнять работу на локациях, должно быть внутри временного
окна смены. |
| shifts.working_time.to | Окончание
рабочего временного окна |
В которые исполнитель может выполнять работу на локациях, должно быть внутри временного
окна смены. |
| shifts.tariff
.cost_per_shift | Цена
за использование смены, денежная единица |
По умолчанию: `0.001` |
| shifts.tariff
.max_penalty_cost | Максимальная
сумма штрафов, которую может получить исполнитель в рамках данной смены, денежная
единица. | Если сумма не задана или равна `null` - исполнитель не может нарушать
ограничения. |
| shifts.tariff
.constraints.stage_length | Длина
оплачиваемого периода, временной промежуток |
По умолчанию: `525960` |
| shifts.tariff
.constraints.cost_per_unit | Стоимость
внутри оплачиваемого периода, денежная единица за секунду работы |
По умолчанию: `0.001` |
| shifts.work_and_rest_rules
.first_break
.max_work_duration_sum | Суммарное
время работы, после которого необходимо сделать перерыв | |
| shifts.work_and_rest_rules
.first_break
.duration | Продолжительность
перерыва | |
| compatibilities
.performer_features | Список
свойств исполнителя |
Используется для проверки совместимости исполнителя с заказами и транспортом. |
| compatibilities
.transport_restrictions | Список
необходимых требований к транспорту |
Используется для проверки совместимости исполнителя с транспортом. |
| limits.max_work_shifts | Ограничение
на рабочую загрузку исполнителя |
Ограничение количества смен исполнителя в одном планировании. |
| attributes | Атрибуты,
используются для указания служебной информации |
Эти данные не учитываются в планировании. |
Описываемый объект:
## Транспорт
Название листа `transports`.
Список доступного транспорта.
| Название | Описание |
Примечание |
|---------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **key** | Ключ транспорта уникальный
идентификатор | |
| transport_type | Тип транспорта |
Если не указан, по умолчанию, проставляется `CAR` |
| **boxes.key** | Список отсеков транспорта,
которые могут вмещать груз |
Обязательно,если в задаче присутствуют заказы с демандами `PICKUP` и `DROP` |
| **shifts.key** | Ключ смены, уникальный идентификатор | |
| shifts.start_location_key | Ключ начальной локации. |
Если ключ не задан - то путь транспорта начинается на первом заказе |
| shifts.finish_location_key | Ключ финальной локации |
Если ключ не задан - то путь транспорта завершается на последнем заказе |
| shifts.attributes | Атрибуты. Используются для
указания служебной информации |
Эти данные не учитываются в планировании |
| shifts.availability_time.from | Начало временного окна смены |
В которое транспорт может осуществлять перемещение между локациями и использоваться
исполнителем в работах на локациях |
| shifts.availability_time.to | Окончание временного окна
смены |
В которое транспорт может осуществлять перемещение между локациями и использоваться
исполнителем в работах на локациях |
| shifts.tariff
.cost_per_shift | Цена за использование смены,
денежная единица |
По умолчанию: `0.001` |
| shifts.tariff
.max_penalty_cost | Максимальная сумма штрафов |
По умолчанию: `0`. Которую может получить транспорт в рамках данной смены, денежная
единица. Если сумма не задана или равна null - транспорт не может нарушать ограничения. |
| shifts.tariff
.constraints.stage_length | Длина оплачиваемой части
пути, в метрах |
По умолчанию: `100000000` |
| shifts.tariff
.constraints.cost_per_unit | Стоимость внутри оплачиваемой
части пути |
Денежная единица за один метр. По умолчанию: `0.001` |
| shifts.tariff
.transportation_cost.mass | Стоимость перемещения 1
единицы массы груза на 1 метр |
В условных денежных единицах |
| shifts.tariff
.transportation_cost.volume | Стоимость перемещения 1
единицы объема груза на 1 метр |
В условных денежных единицах |
| shifts.tariff
.transportation_cost.capacity_a | Стоимость перемещения 1
единицы доп.параметра A груза на 1 метр |
В условных денежных единицах |
| shifts.tariff
.transportation_cost.capacity_b | Стоимость перемещения 1
единицы доп.параметра B груза на 1 метр |
В условных денежных единицах |
| shifts.tariff
.transportation_cost.capacity_c | Стоимость перемещения 1
единицы доп.параметра C груза на 1 метр |
В условных денежных единицах |
| compatibilities
.transport_features | Список свойств транспорта |
Используется для проверки совместимости транспорта с локациями и исполнителями |
| compatibilities
.performer_restrictions | Список требований транспорта
к исполнителю |
Используется для проверки совместимости с исполнителем |
| limits.max_boxes | Ограничение максимального
количества используемых отсеков транспорта в одном рейсе |
Если параметр не указан или указан как `null` - то количество отсеков не ограничено.
Ограничение не должно превышать количество отсеков |
| limits.max_capacity.mass | Параметр дополнительно ограничивает
максимально возможную загрузку транспорта по массе суммарно по всем отсекам |
Масса в килограммах, применимо только если у транспорта больше одного отсека,
параметр не должен быть меньше вместимости любого отсека. |
| limits.max_capacity.volume | Параметр дополнительно ограничивает
максимально возможную загрузку транспорта по объему суммарно по всем отсекам |
Объем в кубических метрах, применимо только если у транспорта больше одного отсека,
параметр не должен быть меньше вместимости любого отсека. |
| limits.max_capacity.capacity_a | Параметр дополнительно ограничивает
максимально возможную загрузку транспорта по доп.параметру A суммарно по всем
отсекам | Дополнительный параметр вместимости (A) для измерения грузов и отсеков
в альтернативных единицах измерения. Например, для учета грузов в штуках (у груза
данный параметр равен единице, у отсека - максимальному количеству вмещаемых грузов)
|
| limits.max_capacity.capacity_b | Параметр дополнительно ограничивает
максимально возможную загрузку транспорта по доп.параметру B суммарно по всем
отсекам | Дополнительный параметр вместимости (B) для измерения грузов и отсеков
в альтернативных единицах измерения. |
| limits.max_capacity.capacity_c | Параметр дополнительно ограничивает
максимально возможную загрузку транспорта по доп.параметру C суммарно по всем
отсекам | Дополнительный параметр вместимости (C) для измерения грузов и отсеков
в альтернативных единицах измерения. |
| attributes | Атрибуты, используются для
указания служебной информации |
Эти данные не учитываются в планировании. |
Описываемый объект:
## Кузова
Название листа `transports.boxes`.
Список отсеков транспорта, которые могут вмещать груз.
Таблица обязательна, если в расчете есть заказы с заявками типов `PICKUP` и `DROP`.
В описании отсеков обязательны те поля, которые описывают грузы.
| Название | Описание |
Примечание |
|-----------------------------------------------|-----------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **key** | Ключ отсека |
Уникальный идентификатор, используется для идентификации размещения грузов по
отсекам. |
| capacity.mass | Масса, кг |
Ограничение по массе, которое может единовременно находиться в отсеке |
| capacity.volume | Объем, м3 |
Ограничение по объему, которое может единовременно находиться в отсеке |
| capacity.capacity_a | Дополнительный параметр вместимости
(A) | Для измерения грузов и отсеков в альтернативных единицах измерения. Например,
для учета грузов в штуках (у груза данный параметр равен единице, у отсека - максимальному
количеству вмещаемых грузов) |
| capacity.capacity_b | Дополнительный параметр вместимости
(B) | Для измерения грузов и отсеков в альтернативных единицах измерения. |
| capacity.capacity_c | Дополнительный параметр вместимости
(C) | Для измерения грузов и отсеков в альтернативных единицах измерения. |
| compatibilities
.width | Ширина в метрах | |
| compatibilities
.height | Высота в метрах | |
| compatibilities
.length | Длина в метрах | |
| compatibilities
.box_features | Список свойств отсека |
По оценивается возможность перевозки груза в данном отсеке |
| limits
.max_one_cargo_capacity.mass | Масса в килограммах |
Ограничение по полям `capacity` для одного груза |
| limits
.max_one_cargo_capacity.volume | Объем в кубических метрах |
Ограничение по полям `capacity` для одного груза |
| limits
.max_one_cargo_capacity.capacity_a | Дополнительный параметр вместимости
(A) | Ограничение по полям `capacity` для одного груза |
| limits
.max_one_cargo_capacity.capacity_b | Дополнительный параметр вместимости
(B) | Ограничение по полям `capacity` для одного груза |
| limits
.max_one_cargo_capacity.capacity_c | Дополнительный параметр вместимости
(C) | Ограничение по полям `capacity` для одного груза |
Описываемый объект:
## Заказы
Название листа `orders`.
Список заказов.
| Название | Описание |
Примечание |
|----------------------------------------------------|---------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|
| **key** | Ключ заказа |
Повторяющийся ключ заказа означает заявки одного заказа |
| **cargos.key** | Список грузов |
Может содержать один груз для `DROP`, список для `PICKUP`, пустой для `WORK`. |
| **demands.key** | Ключ заявки, уникальный
идентификатор | |
| demands.demand_type | Тип заявки |
Загрузка - `PICKUP`, выгрузка - `DROP`, работа на локации - `WORK`. |
| demands.target_cargos | Список ключей грузов |
Для `PICKUP`, один ключ груза для `DROP`, пустой ключ для `WORK` |
| demands.precedence_in_trip | Приоритет внутри рейса |
0 - приоритет не учитывается. По умолчанию: `0`. |
| demands.precedence_in_order | Приоритет внутри заказа |
0 - приоритет не учитывается. По умолчанию: `0`. |
| demands
.possible_events.key | Ключ события, уникальный
идентификатор | Описание объекта временного окна и локаций,
в котором возможно выполнение заявки |
| demands
.possible_events.location_key | Ключ локации, в которой
возможно данное событие | |
| demands
.possible_events.duration | Время выполнения события | |
| demands
.possible_events.reward | Вознаграждение за выполнение
данного события | |
| demands
.possible_events.hard_time_window.from | Начало жесткого временного
окна | |
| demands
.possible_events.hard_time_window.to | Конец жесткого временного
окна | |
| demands
.possible_events.soft_time_window.from | Начало мягкого временного
окна | |
| demands
.possible_events.soft_time_window.to | Конец мягкого временного
окна | |
| demands
.attributes | Атрибуты. Используются
для указания служебной информации | Эти данные не учитываются в планировании. |
| compatibilities
.order_features | Список свойств заказа | |
| compatibilities
.order_restrictions | Список требований к заказу,
выполняемому в этом же рейсе | |
| compatibilities
.performer_restrictions | Список необходимых требований
к исполнителю | Используется для проверки совместимости исполнителя
и заказа (работы). |
| compatibilities
.performer_blacklist | Список требований, наличие
которых у исполнителя не допустимо | Используется для проверки совместимости исполнителя
и заказа (работы). Данный список не должен пересекаться с `performer_restrictions`
|
| attributes | Атрибуты, используются
для указания служебной информации | Эти данные не учитываются в планировании. |
Описываемый объект:
## Грузы
Название листа `orders.cargos`.
Список грузов. Может содержать один груз для `DROP`, список для `PICKUP`, пустой
для `WORK`.
Таблица не обязательна, если все заявки имеют тип `WORK`.
| Название | Описание |
Примечание |
|-----------------------------------------|-----------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **key** | Ключ груза, уникальный идентификатор | |
| capacity.mass | Масса в килограммах | |
| capacity.volume | Объем в кубических метрах | |
| capacity.capacity_a | Дополнительный параметр вместимости
(A) | Для измерения грузов и отсеков в альтернативных единицах измерения. Например,
для учета грузов в штуках (у груза данный параметр равен единице, у отсека - максимальному
количеству вмещаемых грузов). |
| capacity.capacity_b | Дополнительный параметр вместимости
(B) | |
| capacity.capacity_c | Дополнительный параметр вместимости
(C) | |
| compatibilities
.width | Ширина в метрах |
Используется для проверки вместимости в отсек транспорта по ширине. |
| compatibilities
.height | Высота в метрах |
Используется для проверки вместимости в отсек транспорта по высоте |
| compatibilities
.length | Длина в метрах |
Используется для проверки вместимости в отсек транспорта по длине |
| compatibilities
.rotation | Список способностей объекта вращаться |
Шаг вращения 90 градусов. Если список пустой - объект вращать запрещено. Доступные
значения: `ALL`, `YAW`, `PITCH`, `ROLL` |
| compatibilities
.box_restrictions | Список требования к отсеку транспорта | |
| compatibilities
.cargo_features | Список свойств груза |
Используется для проверки совместимости груза с другими грузами. Несовместимые
грузы не могу находится одновременно в одном отсеке транспорта |
| compatibilities
.cargo_restrictions | Список необходимых требований к грузу |
Используется для проверки совместимости груза с другими грузами. Несовместимые
грузы не могу находится одновременно в одном отсеке транспорта |
Описываемый объект:
## Назначения
Название листа `hardlinks`.
Список назначений.
Описываемый объект:
## Рейсы
Название листа `trips`.
Список рейсов.
Описываемый объект:
## Факты
Название листа `facts`.
Список фактов.
Описываемый объект:
## Настройки планирования
Название листа `plan_settings`.
Настройки планирования.
Описываемый объект:
## Настройки актуализации
Название листа `actualize_settings`.
Настройки актуализации.
Описываемый объект:
## Настройки перепланирования
Название листа `replan_settings`.
Настройки перепланирования.
Описываемый объект:
## Общая статистика
Название листа `total_statistics`.
Общая статистика.
Описываемый объект:
'
externalDocs:
description: Сайт компании Veeroute
url: https://veeroute.ru/
paths:
/universal/plan/calculation-async:
post:
tags:
- Plan
summary: Планирование (ASYNC)
description: 'Запуск планирования рейсов - после загрузки и проверки данных
возвращается идентификатор расчета `process_code`.
С помощью `process_code` можно узнать [состояние расчета](#operation/read_plan_state)
и [получить результат](#operation/read_plan_result),
a также [отменить расчет](#operation/cancel_plan_calculation) и [удалить временные
данные](#operation/delete_plan_result) (иначе они автоматически удалятся по
ttl, указанному в настройках расчета).
'
operationId: run_plan_calculation_async
x-process-type: PLAN
requestBody:
description: Запуск асинхронного планирования.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/plan_task'
examples:
PlanTaskTokyo:
$ref: '#/components/examples/PlanTaskTokyo'
PlanTaskMoscow:
$ref: '#/components/examples/PlanTaskMoscow'
PlanTaskDenver:
$ref: '#/components/examples/PlanTaskDenver'
PlanTaskBerlin:
$ref: '#/components/examples/PlanTaskBerlin'
PlanTaskBeijing:
$ref: '#/components/examples/PlanTaskBeijing'
responses:
'200':
description: Расчет успешно добавлен в очередь
content:
application/json:
schema:
$ref: '#/components/schemas/calculation_async_result'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/plan/calculation:
post:
tags:
- Plan
summary: Планирование (SYNC)
description: 'Синхронный метод для создания рейсов.
Данный метод рекомендуется только для тестового использования и ручного запуска
расчетов на небольшом объеме данных.
Для боевой среды рекомендуется использовать [асинхронный метод](#operation/run_plan_calculation_async).
'
operationId: run_plan_calculation
x-process-type: PLAN
requestBody:
description: Новый запрос на планирование.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/plan_task'
examples:
PlanTaskTokyo:
$ref: '#/components/examples/PlanTaskTokyo'
PlanTaskMoscow:
$ref: '#/components/examples/PlanTaskMoscow'
PlanTaskDenver:
$ref: '#/components/examples/PlanTaskDenver'
PlanTaskBerlin:
$ref: '#/components/examples/PlanTaskBerlin'
PlanTaskBeijing:
$ref: '#/components/examples/PlanTaskBeijing'
responses:
'200':
description: Расчет успешно завершен
content:
application/json:
schema:
$ref: '#/components/schemas/plan_result'
examples:
PlanResultTokyo:
$ref: '#/components/examples/PlanResultTokyo'
PlanResultMoscow:
$ref: '#/components/examples/PlanResultMoscow'
PlanResultDenver:
$ref: '#/components/examples/PlanResultDenver'
PlanResultBerlin:
$ref: '#/components/examples/PlanResultBerlin'
PlanResultBeijing:
$ref: '#/components/examples/PlanResultBeijing'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
x-codeSamples:
- lang: Python
source: 'from vrt_lss_universal import *
from vrt_lss_universal.apis import *
from vrt_lss_universal.models import *
# settings
HOST = ''https://api.edge7.veeroute.cloud'' # production env https://api.prod7.veeroute.cloud''
TOKEN = ''PASTETOKENHERE''
# create client
configuration = Configuration()
configuration.host = HOST
configuration.access_token = TOKEN
client = ApiClient(configuration)
# create api instances
system_api = SystemApi(client)
plan_api = PlanApi(client)
# run check
check_response = system_api.check()
print(check_response)
# run sync calculation
task = PlanTask(...)
result = plan_api.run_plan_calculation(task)
print(result)'
/universal/plan/calculation-async/{process_code}:
delete:
tags:
- Plan
summary: Отмена расчета
description: Отмена процесса планирования по идентификатору расчета.
operationId: cancel_plan_calculation
x-process-type: TRACE
parameters:
- $ref: '#/components/parameters/process_code'
responses:
'204':
description: Расчет успешно отменен
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/plan/state/{process_code}:
get:
tags:
- Plan
summary: Состояние расчета
description: Получение состояния расчета по идентификатору расчета.
operationId: read_plan_state
x-process-type: NOTRACE
parameters:
- $ref: '#/components/parameters/process_code'
responses:
'200':
$ref: '#/components/responses/200'
'202':
$ref: '#/components/responses/202'
'299':
$ref: '#/components/responses/299'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/plan/result/{process_code}:
get:
tags:
- Plan
summary: Получение результата
description: Получение результата планирования по идентификатору расчета.
operationId: read_plan_result
x-process-type: TRACE
parameters:
- $ref: '#/components/parameters/process_code'
responses:
'200':
description: Расчет успешно завершен
content:
application/json:
schema:
$ref: '#/components/schemas/plan_result'
examples:
PlanResultTokyo:
$ref: '#/components/examples/PlanResultTokyo'
PlanResultMoscow:
$ref: '#/components/examples/PlanResultMoscow'
PlanResultDenver:
$ref: '#/components/examples/PlanResultDenver'
PlanResultBerlin:
$ref: '#/components/examples/PlanResultBerlin'
PlanResultBeijing:
$ref: '#/components/examples/PlanResultBeijing'
'202':
description: Расчет в процессе, возвращены промежуточные результаты
content:
application/json:
schema:
$ref: '#/components/schemas/plan_result'
examples:
PlanResultMoscow:
$ref: '#/components/examples/PlanResultMoscow'
'299':
description: Расчет завершен, в процессе расчета возникли проблемы
content:
application/json:
schema:
$ref: '#/components/schemas/plan_result'
examples:
PlanResultMoscow:
$ref: '#/components/examples/PlanResultMoscow'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
delete:
tags:
- Plan
summary: Удаление результата
description: Удаление результата по идентификатору расчета.
operationId: delete_plan_result
x-process-type: TRACE
parameters:
- $ref: '#/components/parameters/process_code'
responses:
'204':
description: Успешное выполнение - результат расчета удален
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/plan/validation:
post:
tags:
- Plan
summary: Валидация данных
description: Проверка данных для планирования перед использованием.
operationId: run_plan_validation
x-process-type: VALIDATE
requestBody:
description: Данные, которые необходимо проверить.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/plan_task'
examples:
PlanTaskTokyo:
$ref: '#/components/examples/PlanTaskTokyo'
PlanTaskMoscow:
$ref: '#/components/examples/PlanTaskMoscow'
PlanTaskDenver:
$ref: '#/components/examples/PlanTaskDenver'
PlanTaskBerlin:
$ref: '#/components/examples/PlanTaskBerlin'
PlanTaskBeijing:
$ref: '#/components/examples/PlanTaskBeijing'
responses:
'200':
description: Проверка данных успешно завершена
content:
application/json:
schema:
$ref: '#/components/schemas/validate_result'
examples:
ValidateResultExample:
$ref: '#/components/examples/ValidateResultExample'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/plan/refine:
post:
tags:
- Plan
summary: Очистка данных
description: Очистка данных для планирования перед расчетом.
operationId: run_plan_refine
x-process-type: VALIDATE
requestBody:
description: Данные, которые необходимо очистить.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/plan_task'
examples:
PlanTaskMoscow:
$ref: '#/components/examples/PlanTaskMoscow'
responses:
'200':
description: Очистка успешно завершена
content:
application/json:
schema:
$ref: '#/components/schemas/refine_result'
examples:
RefineResultMoscow:
$ref: '#/components/examples/RefineResultMoscow'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/plan/statistics:
post:
tags:
- Plan
summary: Расчет статистики по рейсам
description: 'Расчет статистики по существующим рейсам
'
operationId: generate_plan_statistics
x-process-type: VALIDATE
requestBody:
description: Новый запрос.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/statistics_task'
examples:
GeneratePlanStatisticsMoscow:
$ref: '#/components/examples/GeneratePlanStatisticsMoscow'
responses:
'200':
description: Расчет успешно завершен
content:
application/json:
schema:
$ref: '#/components/schemas/plan_result'
examples:
PlanResultTokyo:
$ref: '#/components/examples/PlanResultTokyo'
PlanResultMoscow:
$ref: '#/components/examples/PlanResultMoscow'
PlanResultDenver:
$ref: '#/components/examples/PlanResultDenver'
PlanResultBerlin:
$ref: '#/components/examples/PlanResultBerlin'
PlanResultBeijing:
$ref: '#/components/examples/PlanResultBeijing'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/actualize/calculation-async:
post:
tags:
- Actualize
summary: Актуализация (ASYNC)
description: 'Запуск актуализации существующих рейсов - после загрузки и проверки
данных возвращается идентификатор расчета `process_code`.
С помощью `process_code` можно узнать [состояние расчета](#operation/read_actualize_state),
[получить результат](#operation/read_actualize_result),
a также [отменить расчет](#operation/cancel_actualize_calculation) и [удалить
временные данные](#operation/delete_actualize_result) (иначе они автоматически
удалятся по ttl, указанному в настройках расчета).
Задачу на актуализацию можно трансформировать в задачу на планирование с помощью
[переработки данных](#operation/run_actualize_refine).
'
operationId: run_actualize_calculation_async
x-process-type: PLAN
requestBody:
description: Запуск асинхронного процесса актуализации.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/actualize_task'
examples:
ActualizeTaskMoscow:
$ref: '#/components/examples/ActualizeTaskMoscow'
responses:
'200':
description: Расчет успешно добавлен в очередь
content:
application/json:
schema:
$ref: '#/components/schemas/calculation_async_result'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/actualize/calculation:
post:
tags:
- Actualize
summary: Актуализация (SYNC)
description: 'Синхронный метод для актуализации существующих рейсов.
Данный метод рекомендуется только для тестового использования и ручного запуска
расчетов на небольшом объеме данных.
Для боевой среды рекомендуется использовать [асинхронный метод](#operation/run_actualize_calculation_async).
'
operationId: run_actualize_calculation
x-process-type: PLAN
requestBody:
description: Новый запрос на актуализацию.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/actualize_task'
examples:
ActualizeTaskMoscow:
$ref: '#/components/examples/ActualizeTaskMoscow'
responses:
'200':
description: Расчет успешно завершен
content:
application/json:
schema:
$ref: '#/components/schemas/plan_result'
examples:
ActualizeResultMoscow:
$ref: '#/components/examples/ActualizeResultMoscow'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/actualize/calculation-async/{process_code}:
delete:
tags:
- Actualize
summary: Отмена расчета
description: Отмена процесса актуализации по идентификатору расчета.
operationId: cancel_actualize_calculation
x-process-type: TRACE
parameters:
- $ref: '#/components/parameters/process_code'
responses:
'204':
description: Расчет успешно отменен
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/actualize/state/{process_code}:
get:
tags:
- Actualize
summary: Состояние расчета
description: Получение состояния расчета по идентификатору расчета.
operationId: read_actualize_state
x-process-type: NOTRACE
parameters:
- $ref: '#/components/parameters/process_code'
responses:
'200':
$ref: '#/components/responses/200'
'202':
$ref: '#/components/responses/202'
'299':
$ref: '#/components/responses/299'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/actualize/result/{process_code}:
get:
tags:
- Actualize
summary: Получение результата
description: Получение результата актуализации по идентификатору расчета.
operationId: read_actualize_result
x-process-type: TRACE
parameters:
- $ref: '#/components/parameters/process_code'
responses:
'200':
description: Расчет успешно завершен
content:
application/json:
schema:
$ref: '#/components/schemas/plan_result'
examples:
ActualizeResultMoscow:
$ref: '#/components/examples/ActualizeResultMoscow'
'202':
description: Расчет в процессе, возвращены промежуточные результаты
content:
application/json:
schema:
$ref: '#/components/schemas/plan_result'
examples:
ActualizeResultMoscow:
$ref: '#/components/examples/ActualizeResultMoscow'
'299':
description: Расчет завершен, в процессе расчета возникли проблемы
content:
application/json:
schema:
$ref: '#/components/schemas/plan_result'
examples:
ActualizeResultMoscow:
$ref: '#/components/examples/ActualizeResultMoscow'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
delete:
tags:
- Actualize
summary: Удаление результата
description: Удаление результата по идентификатору расчета.
operationId: delete_actualize_result
x-process-type: TRACE
parameters:
- $ref: '#/components/parameters/process_code'
responses:
'204':
description: Успешное выполнение - результат расчета удален
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/actualize/validation:
post:
tags:
- Actualize
summary: Валидация данных
description: Проверка данных для актуализации перед использованием.
operationId: run_actualize_validation
x-process-type: VALIDATE
requestBody:
description: Данные, которые необходимо проверить.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/actualize_task'
examples:
ActualizeTaskMoscow:
$ref: '#/components/examples/ActualizeTaskMoscow'
responses:
'200':
description: Проверка данных успешно завершена
content:
application/json:
schema:
$ref: '#/components/schemas/validate_result'
examples:
ValidateResultExample:
$ref: '#/components/examples/ValidateResultExample'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/actualize/refine:
post:
tags:
- Actualize
summary: Переработка данных
description: Учет фактов, рейсов и очистка данных для актуализации перед расчетом
- в результате возвращается задача для планирования.
operationId: run_actualize_refine
x-process-type: VALIDATE
requestBody:
description: Данные, которые необходимо переработать.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/actualize_task'
examples:
ActualizeTaskMoscow:
$ref: '#/components/examples/ActualizeTaskMoscow'
responses:
'200':
description: Переработка успешно завершена
content:
application/json:
schema:
$ref: '#/components/schemas/refine_result'
examples:
RefineResultMoscow:
$ref: '#/components/examples/RefineResultMoscow'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/replan/calculation-async:
post:
tags:
- Replan
summary: Перепланирование (ASYNC)
description: "Запуск перепланирования рейсов - изменение существующих и создание\
\ новых рейсов на основе произошедших фактов и данных о заказах, исполнителях\
\ и транспорте.\n \nПосле загрузки и проверки данных возвращается идентификатор\
\ расчета `process_code`.\n\nС помощью `process_code` можно узнать [состояние\
\ расчета](#operation/read_replan_state) и [получить результат](#operation/read_replan_result),\n\
a также [отменить расчет](#operation/cancel_replan_calculation) и [удалить\
\ временные данные](#operation/delete_replan_result) (иначе они автоматически\
\ удалятся по ttl, указанному в настройках расчета).\n\nЗадачу на перепланирование\
\ можно трансформировать в задачу на планирование с помощью [переработки данных](#operation/run_replan_refine).\n"
operationId: run_replan_calculation_async
x-process-type: PLAN
requestBody:
description: Запуск асинхронного перепланирования.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/replan_task'
examples:
ReplanTaskMoscow:
$ref: '#/components/examples/ReplanTaskMoscow'
responses:
'200':
description: Расчет успешно добавлен в очередь
content:
application/json:
schema:
$ref: '#/components/schemas/calculation_async_result'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/replan/calculation:
post:
tags:
- Replan
summary: Перепланирование (SYNC)
description: 'Синхронный метод для перепланирования существующих рейсов.
Данный метод рекомендуется только для тестового использования и ручного запуска
расчетов на небольшом объеме данных.
Для боевой среды рекомендуется использовать [асинхронный метод](#operation/run_replan_calculation_async).
'
operationId: run_replan_calculation
x-process-type: PLAN
requestBody:
description: Новый запрос на перепланирование.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/replan_task'
examples:
ReplanTaskMoscow:
$ref: '#/components/examples/ReplanTaskMoscow'
responses:
'200':
description: Расчет успешно завершен
content:
application/json:
schema:
$ref: '#/components/schemas/plan_result'
examples:
ReplanResultMoscow:
$ref: '#/components/examples/ReplanResultMoscow'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
x-codeSamples:
- lang: Python
source: 'from vrt_lss_universal import *
from vrt_lss_universal.apis import *
from vrt_lss_universal.models import *
# settings
HOST = ''https://api.edge7.veeroute.cloud'' # production env https://api.prod7.veeroute.cloud''
TOKEN = ''PASTETOKENHERE''
# create client
configuration = Configuration()
configuration.host = HOST
configuration.access_token = TOKEN
client = ApiClient(configuration)
# create api instances
system_api = SystemApi(client)
plan_api = PlanApi(client)
# run check
check_response = system_api.check()
print(check_response)
# run sync calculation
task = ReplanTask(...)
result = plan_api.run_replan_calculation(task)
print(result)'
/universal/replan/calculation-async/{process_code}:
delete:
tags:
- Replan
summary: Отмена расчета
description: Отмена процесса планирования по идентификатору расчета.
operationId: cancel_replan_calculation
x-process-type: TRACE
parameters:
- $ref: '#/components/parameters/process_code'
responses:
'204':
description: Расчет успешно отменен
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/replan/state/{process_code}:
get:
tags:
- Replan
summary: Состояние расчета
description: Получение состояния расчета по идентификатору расчета.
operationId: read_replan_state
x-process-type: NOTRACE
parameters:
- $ref: '#/components/parameters/process_code'
responses:
'200':
$ref: '#/components/responses/200'
'202':
$ref: '#/components/responses/202'
'299':
$ref: '#/components/responses/299'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/replan/result/{process_code}:
get:
tags:
- Replan
summary: Получение результата
description: Получение результата перепланирования по идентификатору расчета.
operationId: read_replan_result
x-process-type: TRACE
parameters:
- $ref: '#/components/parameters/process_code'
responses:
'200':
description: Расчет успешно завершен
content:
application/json:
schema:
$ref: '#/components/schemas/plan_result'
examples:
ReplanResultMoscow:
$ref: '#/components/examples/ReplanResultMoscow'
'202':
description: Расчет в процессе, возвращены промежуточные результаты
content:
application/json:
schema:
$ref: '#/components/schemas/plan_result'
examples:
ReplanResultMoscow:
$ref: '#/components/examples/ReplanResultMoscow'
'299':
description: Расчет завершен, в процессе расчета возникли проблемы
content:
application/json:
schema:
$ref: '#/components/schemas/plan_result'
examples:
ReplanResultMoscow:
$ref: '#/components/examples/ReplanResultMoscow'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
delete:
tags:
- Replan
summary: Удаление результата
description: Удаление результата перепланирования по идентификатору расчета.
operationId: delete_replan_result
x-process-type: TRACE
parameters:
- $ref: '#/components/parameters/process_code'
responses:
'204':
description: Успешное выполнение - результат расчета удален
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/replan/validation:
post:
tags:
- Replan
summary: Валидация данных
description: Проверка данных для перепланирования перед использованием.
operationId: run_replan_validation
x-process-type: VALIDATE
requestBody:
description: Данные, которые необходимо проверить.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/replan_task'
examples:
ReplanTaskMoscow:
$ref: '#/components/examples/ReplanTaskMoscow'
responses:
'200':
description: Проверка данных успешно завершена
content:
application/json:
schema:
$ref: '#/components/schemas/validate_result'
examples:
ValidateResultExample:
$ref: '#/components/examples/ValidateResultExample'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/replan/refine:
post:
tags:
- Replan
summary: Переработка данных
description: Учет фактов, рейсов и очистка данных для перепланирования перед
расчетом - в результате возвращается задача для планирования.
operationId: run_replan_refine
x-process-type: VALIDATE
requestBody:
description: Данные, которые необходимо переработать.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/replan_task'
examples:
ReplanTaskMoscow:
$ref: '#/components/examples/ReplanTaskMoscow'
responses:
'200':
description: Переработка успешно завершена
content:
application/json:
schema:
$ref: '#/components/schemas/refine_result'
examples:
RefineResultMoscow:
$ref: '#/components/examples/RefineResultMoscow'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/convert/json-to-xlsx:
post:
tags:
- Convert
summary: JSON >> XLSX
description: Используется для конвертации данных в формат [VRt.Universal XLSX](#tag/XLSX-Format).
operationId: run_convert_json_to_xlsx
x-process-type: CONVERT
parameters:
- $ref: '#/components/parameters/timezone'
requestBody:
description: Запрос на конвертацию в XLSX.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/universal_data'
examples:
ConvertTaskMoscow:
$ref: '#/components/examples/ConvertTaskMoscow'
responses:
'200':
description: Успешное выполнение
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/file_xlsx'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'403':
$ref: '#/components/responses/403'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/convert/xlsx-to-json:
post:
tags:
- Convert
summary: XLSX >> JSON
description: 'Используется для конвертации данных из формата [VRt.Universal
XLSX](#tag/XLSX-Format) в формат VRt.Universal JSON.
'
operationId: run_convert_xlsx_to_json
x-process-type: CONVERT
requestBody:
description: Запрос на конвертацию в JSON.
required: true
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/file_xlsx'
responses:
'200':
description: Успешное выполнение
content:
application/json:
schema:
$ref: '#/components/schemas/universal_data'
examples:
ConvertTaskMoscow:
$ref: '#/components/examples/ConvertTaskMoscow'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'403':
$ref: '#/components/responses/403'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/convert/json-to-thrift:
post:
tags:
- Convert
summary: JSON >> THRIFT
description: Используется для конвертации входных данных в формат THRIFT.
operationId: run_convert_json_to_thrift
x-process-type: CONVERT
requestBody:
description: Запрос на конвертацию в THRIFT.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/universal_data'
examples:
ConvertTaskMoscow:
$ref: '#/components/examples/ConvertTaskMoscow'
responses:
'200':
description: Успешное выполнение
content:
text/plain:
schema:
$ref: '#/components/schemas/file_text'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'403':
$ref: '#/components/responses/403'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/system/check:
get:
tags:
- System
summary: Проверка доступности
description: Проверка доступности сервиса.
operationId: check
x-process-type: NOTRACE
security: []
responses:
'200':
description: Успешное выполнение
content:
application/json:
schema:
$ref: '#/components/schemas/check_result'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/system/version:
get:
tags:
- System
summary: Получение версии сервиса
description: Получение версии сервиса.
operationId: version
x-process-type: NOTRACE
security: []
responses:
'200':
description: Успешное выполнение
content:
application/json:
schema:
$ref: '#/components/schemas/version_result'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/file/{filename}:
get:
tags:
- System
summary: Получение документации
description: Получение файла с документацией на этот сервис.
operationId: file
x-process-type: NOTRACE
security: []
parameters:
- $ref: '#/components/parameters/filename'
responses:
'200':
description: Успешное выполнение
content:
text/html:
schema:
$ref: '#/components/schemas/file_html'
text/plain:
schema:
$ref: '#/components/schemas/file_json'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
components:
securitySchemes:
ApiKeyAuth:
description: "Для [аутентификации](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication)\
\ клиента \nиспользуется [JWT токен](https://ru.wikipedia.org/wiki/JSON_Web_Token),\
\ \nкоторый необходимо указывать в заголовке для каждого запроса в формате:\n\
\n`Authorization: Bearer `.\n\nУникальный токен для пользовательского\
\ аккаунта необходимо получить с помощью VRt.Account API.\n"
type: http
scheme: bearer
bearerFormat: JWT
schemas:
geopoint:
description: Географическая точка.
type: object
additionalProperties: false
properties:
latitude:
description: Широта в градусах.
type: number
format: double
minimum: -90
maximum: 90
example: 55.692789
longitude:
description: Долгота в градусах.
type: number
format: double
minimum: -180
maximum: 180
example: 37.554554
required:
- latitude
- longitude
time_duration:
description: Продолжительность временного отрезка в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
type: string
format: duration
x-custom-format: duration
pattern: ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$
minLength: 3
maxLength: 16
default: PT0S
example: PT1H45M
time_window:
description: Временное окно.
type: object
additionalProperties: false
nullable: true
properties:
from:
description: Дата и время в соответствии с [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6).
type: string
format: date-time
example: '2024-11-21T09:30:00+03:00'
to:
description: Дата и время в соответствии с [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6).
type: string
format: date-time
example: '2024-11-21T19:45:00Z'
required:
- from
- to
capacity_limit:
description: Ограничения вместимости.
type: object
additionalProperties: false
nullable: true
properties:
mass:
description: Масса в килограммах.
type: number
format: double
minimum: 0
maximum: 1000000000
example: 10
volume:
description: Объем в кубических метрах.
type: number
format: double
minimum: 0
maximum: 1000000000
example: 2
capacity_a:
description: Дополнительный параметр (A) для измерения грузов и отсеков
в альтернативных единицах измерения.
type: number
format: double
minimum: 0
maximum: 1000000000
example: 1
capacity_b:
description: Дополнительный параметр (B) для измерения грузов и отсеков
в альтернативных единицах измерения.
type: number
format: double
minimum: 0
maximum: 1000000000
example: 2
capacity_c:
description: Дополнительный параметр (C) для измерения грузов и отсеков
в альтернативных единицах измерения.
type: number
format: double
minimum: 0
maximum: 1000000000
example: 3
required:
- mass
- volume
- capacity_a
- capacity_b
- capacity_c
capacity_cost:
description: Стоимость за элемент вместимости.
type: object
additionalProperties: false
nullable: true
properties:
mass:
description: Стоимость за килограмм, в условных денежных единицах.
type: number
format: double
minimum: 0
maximum: 1000000
example: 11
volume:
description: Стоимость за кубический метр, в условных денежных единицах.
type: number
format: double
minimum: 0
maximum: 1000000
example: 22
capacity_a:
description: Стоимость за единицу дополнительного параметра (A), в условных
денежных единицах.
type: number
format: double
minimum: 0
maximum: 1000000
example: 11
capacity_b:
description: Стоимость за единицу дополнительного параметра (B), в условных
денежных единицах.
type: number
format: double
minimum: 0
maximum: 1000000
example: 22
capacity_c:
description: Стоимость за единицу дополнительного параметра (C), в условных
денежных единицах.
type: number
format: double
minimum: 0
maximum: 1000000
example: 31
required:
- mass
- volume
- capacity_a
- capacity_b
- capacity_c
location_cargos_limit:
description: 'Ограничение способности локации обрабатывать грузы.
'
type: object
additionalProperties: false
nullable: false
properties:
capacity:
$ref: '#/components/schemas/capacity_limit'
description: Значение пропускной способности.
penalty:
$ref: '#/components/schemas/capacity_cost'
description: Штраф за нарушение `capacity`.
required:
- capacity
- penalty
location_cargos_limit_function:
description: 'Функция, описывающее ограничение способности локации обрабатывать
грузы и штрафы за нарушение ограничений. Штрафы суммируются независимо за
каждую подходящую часть функции.
'
type: array
uniqueItems: false
nullable: false
minItems: 0
maxItems: 5
items:
$ref: '#/components/schemas/location_cargos_limit'
location_transports_limit:
description: 'Ограничение способности локации обслуживать транспорт.
'
type: object
additionalProperties: false
nullable: false
properties:
count:
description: Количество транспорта, в среднем обслуживаемого за указанное
временное окно.
type: number
format: double
minimum: 0
maximum: 15001
example: 2
penalty:
description: Штраф за нарушение `count`.
type: number
format: double
minimum: 0
maximum: 1000000
example: 2000
required:
- count
- penalty
location_transports_limit_function:
description: 'Функция, описывающее ограничение способности локации обслуживать
транспорт и штрафы за нарушение ограничений. Штрафы суммируются независимо
за каждую подходящую часть функции.
'
type: array
uniqueItems: false
nullable: false
minItems: 0
maxItems: 5
items:
$ref: '#/components/schemas/location_transports_limit'
location_limit:
description: 'Ограничение на пропускную способность локации в определенный временной
промежуток.
'
type: object
additionalProperties: false
properties:
key:
description: Ключ ограничения, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: location_limit_constraint_01
time_window:
$ref: '#/components/schemas/time_window'
description: Временное окно действия ограничения.
min_cargos:
$ref: '#/components/schemas/location_cargos_limit_function'
description: 'Минимальная пропускная способность перемещения грузов, которую
необходимо обеспечить. Несоблюдение параметра штрафуется.
'
max_cargos:
$ref: '#/components/schemas/location_cargos_limit_function'
description: 'Максимальная пропускная способность перемещения грузов. Превышение
параметра штрафуется.
'
min_transports:
$ref: '#/components/schemas/location_transports_limit_function'
description: 'Минимально допустимое количество транспорта, в среднем обслуживаемого
за указанное временное окно. Несоблюдение параметра штрафуется.
'
max_transports:
$ref: '#/components/schemas/location_transports_limit_function'
description: 'Максимально допустимое количество транспорта, в среднем обслуживаемого
за указанное временное окно. Превышение параметра штрафуется.
'
required:
- key
- time_window
location_limit_list:
description: 'Список ограничений пропускной способности внутри рабочего окна
локации. Временные окна ограничений не могут пересекаться и суммарно должны
равняться `work_window`.
'
type: array
uniqueItems: false
minItems: 0
maxItems: 100
items:
$ref: '#/components/schemas/location_limit'
location_timetable_element:
description: 'Локация - уникальное географическое местоположение объекта с параметрами
доступности.
'
type: object
additionalProperties: false
properties:
work_window:
$ref: '#/components/schemas/time_window'
description: Временное окно доступности локации.
limits:
$ref: '#/components/schemas/location_limit_list'
required:
- work_window
location_timetable:
description: 'Расписание работы локации - временные окна доступности и ограничения
на пропускную способность. Если список пустой или не указан - локация работает
без ограничений.
'
type: array
uniqueItems: false
minItems: 0
maxItems: 30
items:
$ref: '#/components/schemas/location_timetable_element'
compatibility_tag:
description: Тег, используемый для определения [совместимости](#section/Opisanie/Ispolzuemye-sovmestimosti).
type: string
minLength: 1
maxLength: 256
example: B1
compatibility_tag_list:
description: 'Список тегов которые определяют свойство или требование.
'
type: array
minItems: 0
maxItems: 1000
uniqueItems: true
default: []
items:
$ref: '#/components/schemas/compatibility_tag'
location_compatibilities:
description: '[Совместимости](#section/Opisanie/Ispolzuemye-sovmestimosti) локации
с транспортом.
'
type: object
additionalProperties: false
nullable: true
properties:
transport_restrictions:
description: 'Список необходимых требований к транспорту. Используется для
проверки совместимости транспорта с локацией.
'
$ref: '#/components/schemas/compatibility_tag_list'
name:
description: Название, информационное поле.
type: string
minLength: 0
maxLength: 128
default: ''
example: X1-ABC
attribute:
description: Атрибут.
type: object
additionalProperties: false
properties:
key:
description: Ключ атрибута.
type: string
minLength: 1
maxLength: 100
example: attribute_name
value:
description: Значение атрибута.
type: string
minLength: 0
maxLength: 2000
example: X51
required:
- key
- value
attributes:
description: Атрибуты. Используются для указания служебной информации.
type: array
minItems: 0
maxItems: 1000
uniqueItems: true
default: []
items:
$ref: '#/components/schemas/attribute'
location:
description: 'Локация - уникальное географическое местоположение объекта с параметрами
доступности.
'
type: object
additionalProperties: false
properties:
key:
description: Ключ локации, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: location_01
geopoint:
$ref: '#/components/schemas/geopoint'
arrival_duration:
$ref: '#/components/schemas/time_duration'
description: Время на подъезд (парковку) на локации, в формате [ISO 8601
duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
departure_duration:
$ref: '#/components/schemas/time_duration'
description: Время на отъезд от локации, в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
timetable:
$ref: '#/components/schemas/location_timetable'
compatibilities:
$ref: '#/components/schemas/location_compatibilities'
name:
$ref: '#/components/schemas/name'
attributes:
$ref: '#/components/schemas/attributes'
required:
- key
- geopoint
demand_type:
description: "Тип заявки:\n * `PICKUP` - загрузка\n * `DROP` - выгрузка\n\
\ * `WORK` - работа на локации\n * `PICKUP_TO_BOX` - загрузка в кузов\n\
\ * `DROP_FROM_BOX` - выгрузка из кузова\n"
nullable: false
type: string
enum:
- PICKUP
- DROP
- WORK
- PICKUP_TO_BOX
- DROP_FROM_BOX
example: WORK
cargo_list:
description: "Список ключей грузов, зависит от типа заявки, в которой находятся\
\ грузы:\n * `PICKUP` - список ключей\n * `DROP` - один ключ\n * `WORK`\
\ - пустой список\n * `PICKUP_TO_BOX` - один ключ\n * `DROP_FROM_BOX` -\
\ один ключ\n"
type: array
minItems: 0
maxItems: 1000
uniqueItems: true
items:
description: Ключ груза.
type: string
minLength: 1
maxLength: 1024
example:
- cargo01
possible_event:
description: 'Возможное событие. Объединяет географическую локацию и временное
окно, в которое возможно выполнение заявки.
'
type: object
additionalProperties: false
properties:
key:
description: Ключ события, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: event_1
location_key:
description: Ключ локации, в которой возможно данное событие.
type: string
minLength: 1
maxLength: 1024
example: location_01
duration:
$ref: '#/components/schemas/time_duration'
description: Длительность выполнения события, в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
reward:
description: Вознаграждение за выполнение данного события.
type: number
format: double
minimum: 0
maximum: 2000000000
default: 1000.1
example: 199.9
hard_time_window:
$ref: '#/components/schemas/time_window'
description: 'Жесткое временное окно, внутри которого должно произойти событие.
Длительность окна не может быть меньше длительности выполнения события
`duration`. Не может быть нарушено при планировании.
'
soft_time_window:
$ref: '#/components/schemas/time_window'
default: null
description: 'Мягкое временное окно, внутри которого желательно выполнение
события. Длительность окна не может быть меньше длительности выполнения
события `duration`. Не должно выходить за пределы жесткого временного
окна `hard_time_window`. Если не задано или равно `null` - считается равным
жесткому временному окну. Может быть нарушено при планировании.
'
required:
- key
- location_key
- hard_time_window
demand:
description: Заявка на единичное действие с грузом (загрузка / выгрузка) или
работу на локации.
type: object
additionalProperties: false
properties:
key:
description: Ключ заявки, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: demand_1
demand_type:
$ref: '#/components/schemas/demand_type'
target_cargos:
$ref: '#/components/schemas/cargo_list'
precedence_in_trip:
description: Приоритет внутри рейса, 0 - приоритет не учитывается.
type: integer
format: int32
minimum: 0
maximum: 15001
example: 1
default: 0
precedence_in_order:
description: Приоритет внутри заказа, 0 - приоритет не учитывается.
type: integer
format: int32
minimum: 0
maximum: 15001
example: 1
default: 0
possible_events:
description: Список временных окон и ключей локаций, в которых возможно
выполнение заявки.
type: array
uniqueItems: true
minItems: 1
maxItems: 25
items:
$ref: '#/components/schemas/possible_event'
name:
$ref: '#/components/schemas/name'
attributes:
$ref: '#/components/schemas/attributes'
required:
- key
- demand_type
- possible_events
capacity:
description: Характеристики вместимости.
type: object
additionalProperties: false
nullable: true
properties:
mass:
description: Масса в килограммах.
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 10
volume:
description: Объем в кубических метрах.
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 2
capacity_a:
description: 'Дополнительный параметр (A) для измерения грузов и отсеков
в альтернативных единицах измерения. Например, для учета грузов в штуках
(у груза данный параметр равен единице, у отсека - максимальному количеству
вмещаемых грузов).
'
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 1
capacity_b:
description: 'Дополнительный параметр (B) для измерения грузов и отсеков
в альтернативных единицах измерения.
'
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 2
capacity_c:
description: 'Дополнительный параметр (C) для измерения грузов и отсеков
в альтернативных единицах измерения.
'
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 3
cargo_rotation_type:
description: "Способность груза вращаться с шагом в 90 градусов вокруг осей:\n\
\ * `ALL` - любых осей.\n * `YAW` - вокруг оси Z.\n * `PITCH` - вокруг\
\ оси Y.\n * `ROLL` - вокруг оси X.\n"
type: string
enum:
- ALL
- YAW
- PITCH
- ROLL
default: ALL
example: ALL
cargo_rotation:
description: "Список способностей объекта вращаться (с шагом в 90 градусов):\n\
\ * `ALL` - можно поворачивать по любой оси любое количество раз\n * `YAW`\
\ - можно повернуть один раз по вертикальной оси (вокруг своей оси)\n * `PITCH`\
\ - можно повернуть один раз по поперечной оси (поставить вертикально)\n \
\ * `ROLL` - можно повернуть один раз по продольной оси (положить на бок)\n\
\nЕсли список пустой - объект вращать запрещено.\n\nПодробнее про [размещение\
\ грузов в кузове](#section/Opisanie/Razmeshenie-gruzov-v-kuzove)."
type: array
minItems: 0
maxItems: 4
uniqueItems: true
default: []
items:
$ref: '#/components/schemas/cargo_rotation_type'
example:
- ALL
cargo_compatibilities:
description: '[Совместимости](#section/Opisanie/Ispolzuemye-sovmestimosti) груза
с отсеком транспорта и другими грузами.
'
type: object
additionalProperties: false
nullable: true
properties:
width:
description: Ширина в метрах, используется для проверки вместимости в отсек
транспорта.
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 1
height:
description: Высота в метрах, используется для проверки вместимости в отсек
транспорта.
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 0.3
length:
description: Длина в метрах, используется для проверки вместимости в отсек
транспорта.
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 2.2
rotation:
$ref: '#/components/schemas/cargo_rotation'
box_restrictions:
description: 'Список необходимых требований к отсеку транспорта, в котором
может перевозиться этот груз.
'
$ref: '#/components/schemas/compatibility_tag_list'
cargo_features:
description: 'Список свойств груза. Используется для проверки совместимости
груза с другими грузами. Несовместимые грузы не могу находится одновременно
в одном отсеке транспорта.
'
$ref: '#/components/schemas/compatibility_tag_list'
cargo_restrictions:
description: 'Список необходимых требований к грузу. Используется для проверки
совместимости груза с другими грузами. Несовместимые грузы не могу находится
одновременно в одном отсеке транспорта.
'
$ref: '#/components/schemas/compatibility_tag_list'
cargo:
description: 'Груз. Вне зависимости от размеров груз может перемещаться только
внутри отсека транспорта.
'
type: object
additionalProperties: false
properties:
key:
description: Ключ груза, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: cargo01
capacity:
$ref: '#/components/schemas/capacity'
description: Аддитивные меры груза.
compatibilities:
$ref: '#/components/schemas/cargo_compatibilities'
target_box_key:
description: 'Ключ отсека транспорта, в котором уже находится груз. Применимо
только для груза, который находится в заявке с типом `DROP_FROM_BOX`.
Для других типов заявок ключ должен быть пустым.
'
type: string
minLength: 1
maxLength: 1024
nullable: true
default: null
example: box01
required:
- key
order_compatibilities:
description: '[Совместимости](#section/Opisanie/Ispolzuemye-sovmestimosti) заказа
с исполнителями и другими заказами.
'
type: object
additionalProperties: false
nullable: true
properties:
order_features:
description: 'Список свойств заказа. Используется для проверки совместимости
заказа с другими заказами. Несовместимые заказы не могу находится в одном
рейсе.
'
$ref: '#/components/schemas/compatibility_tag_list'
order_restrictions:
description: 'Список требований к заказу, выполняемому в этом же рейсе.
Используется для проверки совместимости заказа с другими заказами. Несовместимые
заказы не могу находится в одном рейсе.
'
$ref: '#/components/schemas/compatibility_tag_list'
performer_restrictions:
description: 'Список необходимых требований к исполнителю, который может
выполнить данный заказ.
'
$ref: '#/components/schemas/compatibility_tag_list'
performer_blacklist:
description: 'Список требований, наличие которых у исполнителя не допустимо.
Данный список не должен пересекаться с `performer_restrictions`.
'
$ref: '#/components/schemas/compatibility_tag_list'
order:
description: Заказ на перемещение груза, содержит список заявок.
type: object
additionalProperties: false
properties:
key:
description: Ключ заказа, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: order01
demands:
description: Список заявок.
type: array
uniqueItems: true
minItems: 1
maxItems: 1000
items:
$ref: '#/components/schemas/demand'
cargos:
description: 'Список грузов, на которые ссылаются заявки данного заказа.
Список должен быть пустой, если все заявки заказа имеют тип `WORK`.
'
type: array
uniqueItems: true
minItems: 0
maxItems: 1000
default: []
items:
$ref: '#/components/schemas/cargo'
compatibilities:
$ref: '#/components/schemas/order_compatibilities'
name:
$ref: '#/components/schemas/name'
attributes:
$ref: '#/components/schemas/attributes'
required:
- key
- demands
performer_tariff_constraint:
description: Оплачиваемый промежуток времени - составная часть тарифа.
type: object
additionalProperties: false
properties:
stage_length:
description: Длина оплачиваемого периода, в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
type: string
format: duration
x-custom-format: duration
pattern: ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$
minLength: 3
maxLength: 16
default: P30D
example: P1DT8H30M20S
cost_per_unit:
description: 'Стоимость внутри оплачиваемого периода, денежная единица за
секунду работы.
'
type: number
format: double
minimum: 0.001
maximum: 10000
default: 0.001
example: 5.05
performer_tariff:
description: Тариф, определяет стоимость и временные ограничения смены.
type: object
additionalProperties: false
properties:
cost_per_shift:
description: Цена за использование смены, денежная единица.
type: number
format: double
minimum: 0.001
maximum: 1000000
default: 0.001
example: 2000
constraints:
description: Список составных частей тарифа.
type: array
minItems: 1
maxItems: 100
uniqueItems: false
items:
$ref: '#/components/schemas/performer_tariff_constraint'
default:
- stage_length: PT30D
cost_per_unit: 0.001
max_penalty_cost:
description: 'Максимальная сумма штрафов, которую может получить исполнитель
в рамках данной смены, денежная единица. Если параметр не указан или указан
как null - исполнитель может нарушать без ограничений.
'
type: number
format: double
nullable: true
default: null
minimum: 0
maximum: 1000000
example: 2000
time_duration_null:
description: Продолжительность временного отрезка в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
type: string
format: duration
x-custom-format: duration
pattern: ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$
minLength: 3
maxLength: 16
nullable: true
default: null
example: PT2H12M34.3S
rest:
description: Условие наступления и характеристики отдыха.
type: object
additionalProperties: false
nullable: true
properties:
relocating_duration_sum:
$ref: '#/components/schemas/time_duration'
description: Суммарное время перемещения между локациями, не позже которого
необходимо остановиться на длительных отдых, в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
operating_duration_sum:
$ref: '#/components/schemas/time_duration_null'
description: Суммарное время выполнения рейса (без учета ожидания), не позже
которого необходимо остановиться на длительных отдых, в формате [ISO 8601
duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
duration:
$ref: '#/components/schemas/time_duration'
description: Продолжительность перерыва, в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
required:
- relocating_duration_sum
- duration
rest_rules:
description: Правила учета отдыха.
type: object
additionalProperties: false
nullable: true
properties:
consecutive:
$ref: '#/components/schemas/rest'
description: Условие наступления и характеристики последовательных остановок
на отдых.
required:
- consecutive
break:
description: Условие наступления и характеристики перерыва.
type: object
additionalProperties: false
nullable: true
properties:
relocating_duration_sum:
$ref: '#/components/schemas/time_duration'
description: Суммарное время перемещения между локациями, не позже которого
необходимо сделать перерыв, в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
operating_duration_sum:
$ref: '#/components/schemas/time_duration_null'
description: Суммарное время выполнения рейса (без учета ожидания), не позже
которого необходимо сделать перерыв, в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
duration:
$ref: '#/components/schemas/time_duration'
description: Продолжительность перерыва, в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
required:
- relocating_duration_sum
- duration
break_rules:
description: Правила учета перерывов.
type: object
additionalProperties: false
nullable: true
properties:
first:
description: Условие наступления и характеристики первого перерыва.
$ref: '#/components/schemas/break'
consecutive:
description: Условие наступления и характеристики последующих за первым
перерывов.
$ref: '#/components/schemas/break'
relocating_duration_type:
description: Тип учета времени перемещения между локациями (суммарная или
непрерывная).
type: string
nullable: false
enum:
- TOTAL
- CONTINUOUS
default: TOTAL
example: CONTINUOUS
required:
- first
work_and_rest_rules:
description: 'Режим труда и отдыха исполнителя.
'
type: object
additionalProperties: false
nullable: true
properties:
rest_rules:
$ref: '#/components/schemas/rest_rules'
break_rules:
$ref: '#/components/schemas/break_rules'
reset_location_keys:
description: Список ключей локаций, при нахождении в которых сбрасываются
счетчики для перерывов и отдыхов.
type: array
uniqueItems: false
minItems: 0
maxItems: 15001
items:
description: Ключ локации, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: location_01
ignore_location_keys:
description: Список ключей локаций, пребывание на которых не учитывается
в счетчике суммарного времени выполнения рейса.
type: array
uniqueItems: false
minItems: 0
maxItems: 15001
items:
description: Ключ локации, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: location_01
performer_shift:
description: 'Рабочая смена исполнителя, которая определяет доступность ресурса
для планирования внутри его временного окна доступности.
'
type: object
additionalProperties: false
properties:
key:
description: Ключ смены, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: shift01
availability_time:
$ref: '#/components/schemas/time_window'
description: Временное окно смены, в которое исполнитель может выполнять
работу на локациях и осуществлять перемещение между локациями.
working_time:
$ref: '#/components/schemas/time_window'
description: Рабочее временное окно, в которые исполнитель может выполнять
работу на локациях, должно быть внутри временного окна смены.
start_location_key:
description: 'Ключ начальной локациями. Если ключ не задан - то рейс начинается
на первом заказе.
'
type: string
minLength: 1
maxLength: 1024
nullable: true
default: null
example: start_location_01
finish_location_key:
description: 'Ключ финальной локации. Если ключ не задан - то рейс завершается
на последнем заказе.
'
type: string
minLength: 1
maxLength: 1024
nullable: true
default: null
example: finish_location_01
max_locations:
description: 'Ограничение количества уникальных локаций в одном рейсе, включая
локации старта и финиша. Если параметр не указан или указан как null
- то количество локаций не ограничено.
'
type: integer
format: int32
minimum: 1
maximum: 1000
nullable: true
default: null
example: 15
max_stops:
description: 'Ограничение количества остановок в одном рейсе, включая локации
старта и финиша. Если параметр не указан или указан как null - то количество
остановок не ограничено.
'
type: integer
format: int32
minimum: 1
maximum: 1000
nullable: true
default: null
example: 15
tariff:
$ref: '#/components/schemas/performer_tariff'
work_and_rest_rules:
$ref: '#/components/schemas/work_and_rest_rules'
name:
$ref: '#/components/schemas/name'
attributes:
$ref: '#/components/schemas/attributes'
required:
- key
- availability_time
- working_time
transport_type:
description: "Типы транспорта:\n * `CAR` - легковой автомобиль\n * `TRUCK_1500`\
\ - грузовой автомобиль с разрешенной массой не более 1500 кг\n * `TRUCK_3000`\
\ - грузовой автомобиль с разрешенной массой не более 3000 кг\n * `TRUCK_5000`\
\ - грузовой автомобиль с разрешенной массой не более 5000 кг\n * `TRUCK_10000`\
\ - грузовой автомобиль с разрешенной массой не более 10000 кг\n * `TRUCK_20000`\
\ - грузовой автомобиль с разрешенной массой не более 20000 кг\n * `TRUCK_10000_L75_H35_W24_6000`\
\ - грузовой автомобиль с разрешенной массой не более 10000 кг, габаритами\
\ 7.5 x 3.5 x 2.4 метров, допустимой нагрузкой на ось 6000 кг\n * `TRUCK_18000_L95_H40_W26_11000`\
\ - грузовой автомобиль с разрешенной массой не более 18000 кг, габаритами\
\ 9.5 x 4.0 x 2.6 метров, допустимой нагрузкой на ось 11000 кг\n * `TRUCK_26000_L120_H40_W26_8000`\
\ - грузовой автомобиль с разрешенной массой не более 26000 кг, габаритами\
\ 12.0 x 4.0 x 2.6 метров, допустимой нагрузкой на ось 8000 кг\n * `TRUCK_GARBAGE_1`\
\ - грузовой автомобиль для перевозки мусора (тип 1) \n * `TRUCK_GARBAGE_2`\
\ - грузовой автомобиль для перевозки мусора (тип 2)\n * `TUK_TUK` - моторикша\n\
\ * `BICYCLE` - велосипед\n * `PEDESTRIAN` - пешеход \n * `PUBLIC_TRANSPORT`\
\ - общественный транспорт\n * `TELEPORT` - телепорт (мгновенное перемещение\
\ между точками)\n\nРазрешенная масса - это масса снаряженного транспорта\
\ с грузом и водителем, установленная предприятием-изготовителем в качестве\
\ максимально допустимой.\n"
type: string
enum:
- CAR
- TRUCK_1500
- TRUCK_3000
- TRUCK_5000
- TRUCK_10000
- TRUCK_20000
- TRUCK_10000_L75_H35_W24_6000
- TRUCK_18000_L95_H40_W26_11000
- TRUCK_26000_L120_H40_W26_8000
- TRUCK_GARBAGE_1
- TRUCK_GARBAGE_2
- TUK_TUK
- BICYCLE
- PEDESTRIAN
- PUBLIC_TRANSPORT
- TELEPORT
default: CAR
example: CAR
feature_lifetime:
description: Время жизни тега.
type: object
additionalProperties: false
properties:
feature:
$ref: '#/components/schemas/compatibility_tag'
time_windows:
description: 'Список временных окон, внутри которых существует указанный
тег. Если на совместимость влияют несколько свойств с разными окнами -
сущности будут считаться совместимыми внутри пересечения окон. Пересечений
указанных окон по всем тегам для одного исполнителя не может быть больше
4-х.
'
type: array
minItems: 1
maxItems: 4
uniqueItems: true
items:
$ref: '#/components/schemas/time_window'
required:
- feature
- time_windows
feature_lifetime_list:
description: 'Список ограничения на время жизни тегов.
'
type: array
minItems: 0
maxItems: 100
default: []
uniqueItems: true
items:
$ref: '#/components/schemas/feature_lifetime'
performer_compatibilities:
description: '[Совместимости](#section/Opisanie/Ispolzuemye-sovmestimosti) исполнителя
с транспортом и заказами.
'
type: object
additionalProperties: false
nullable: true
properties:
performer_features:
$ref: '#/components/schemas/compatibility_tag_list'
description: 'Список свойств исполнителя. Используется для проверки совместимости
исполнителя с заказами.
'
performer_features_lifetimes:
$ref: '#/components/schemas/feature_lifetime_list'
description: 'Ограничения на время жизни свойств исполнителя. Влияет на
совместимость Исполнитель-Заказ. Совместимость действует во временные
окна, которые являются результатом пересечения временных окон всех указанных
свойств.
'
transport_restrictions:
$ref: '#/components/schemas/compatibility_tag_list'
description: 'Список необходимых требований к транспорту. Используется для
проверки совместимости транспорта с исполнителем.
'
demand_extra_duration:
description: 'Дополнительное время выполнения заявки определенным исполнителем.
'
type: object
additionalProperties: false
properties:
demand_key:
description: Ключ заявки, для событий которой необходимо увеличить время
выполнения.
type: string
minLength: 1
maxLength: 1024
example: demand01.1
additional_duration:
description: 'Дополнительное время выполнения всех событий указанной заявки
для всех смен указанного исполнителя. В формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
'
$ref: '#/components/schemas/time_duration'
required:
- demand_key
- additional_duration
performer_limits:
description: 'Ограничение на рабочую загрузку исполнителя.
'
type: object
additionalProperties: false
nullable: true
properties:
max_work_shifts:
description: Ограничение количества смен исполнителя в одном планировании.
type: integer
format: int32
minimum: 1
maximum: 31
default: 31
example: 3
demand_extra_durations:
description: 'Список заявок, на которые исполнитель потратит больше времени,
чем указано в заявке. Действует для указанной пары исполнитель-заявка
для всех смен исполнителя и всех вариантов исполнения заявки.
'
type: array
minItems: 0
maxItems: 15001
uniqueItems: true
items:
$ref: '#/components/schemas/demand_extra_duration'
performer:
description: 'Исполнитель. Выполняет заказы, используя транспорт.
'
type: object
additionalProperties: false
properties:
key:
description: Ключ исполнителя, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: performer0001
shifts:
description: Список рабочих смен исполнителя.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/performer_shift'
own_transport_type:
$ref: '#/components/schemas/transport_type'
description: Тип личного транспорта, на котором исполнитель будет добираться
до назначенного на него рабочего транспорта.
compatibilities:
$ref: '#/components/schemas/performer_compatibilities'
limits:
$ref: '#/components/schemas/performer_limits'
name:
$ref: '#/components/schemas/name'
attributes:
$ref: '#/components/schemas/attributes'
required:
- key
- shifts
transport_tariff_constraint:
description: Оплачиваемый пробег - составная часть тарифа.
type: object
additionalProperties: false
properties:
stage_length:
description: Длина оплачиваемой части пути, в метрах.
type: integer
format: int32
minimum: 1
maximum: 100000000
default: 100000000
example: 200000
cost_per_unit:
description: 'Стоимость внутри оплачиваемой части пути, денежная единица
за один метр.
'
type: number
format: double
minimum: 0.001
maximum: 10000
default: 0.001
example: 5.05
transport_tariff:
description: Тариф, определяет стоимость работы транспорта и ограничения по
пробегу за смену.
type: object
additionalProperties: false
properties:
cost_per_shift:
description: Цена за использование смены, денежная единица.
type: number
format: double
minimum: 0.001
maximum: 1000000
default: 0.001
example: 2000
constraints:
description: Список составных частей тарифа.
type: array
minItems: 1
maxItems: 100
uniqueItems: false
items:
$ref: '#/components/schemas/transport_tariff_constraint'
default:
- stage_length: 100000000
cost_per_unit: 0.001
transportation_cost:
$ref: '#/components/schemas/capacity_cost'
description: Стоимость перемещения 1 единицы меры груза на 1 метр (по каждому
полю capacity соответственно), в условных денежных единицах.
default: null
transport_shift:
description: 'Рабочая смена транспорта. Определяет доступность транспорта для
планирования. Конец смены обнуляет оставшийся в кузове груз после выполнения
заявок типов `DROP_FROM_BOX` и `PICKUP_TO_BOX`.
'
type: object
additionalProperties: false
properties:
key:
description: Ключ смены, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: shift01
availability_time:
$ref: '#/components/schemas/time_window'
description: Временное окно смены, в которое транспорт может осуществлять
перемещение между локациями и использоваться исполнителем в работах на
локациях.
start_location_key:
description: 'Ключ начальной локациями. Если ключ не задан - то путь транспорта
начинается на первом заказе.
'
type: string
minLength: 1
maxLength: 1024
nullable: true
default: null
example: start_location_01
finish_location_key:
description: 'Ключ финальной локации. Если ключ не задан - то путь транспорта
завершается на последнем заказе.
'
type: string
minLength: 1
maxLength: 1024
nullable: true
default: null
example: finish_location_01
tariff:
$ref: '#/components/schemas/transport_tariff'
name:
$ref: '#/components/schemas/name'
attributes:
$ref: '#/components/schemas/attributes'
required:
- key
- availability_time
box_compatibilities:
description: '[Совместимости](#section/Opisanie/Ispolzuemye-sovmestimosti) отсека
транспорта.
'
type: object
additionalProperties: false
nullable: true
properties:
width:
description: Ширина в метрах.
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 1
height:
description: Высота в метрах.
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 3.1
length:
description: Длина в метрах.
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 2.1
box_features:
description: 'Список свойств отсека. Используется для проверки совместимости
груза с отсеком.
'
$ref: '#/components/schemas/compatibility_tag_list'
box_limits:
description: 'Ограничения на отсек кузова.
'
type: object
additionalProperties: false
nullable: true
properties:
max_one_cargo_capacity:
$ref: '#/components/schemas/capacity'
description: Ограничение на максимальный размер одного груза.
box:
description: 'Отсек транспорта, который способен вмещать грузы.
'
type: object
additionalProperties: false
properties:
key:
description: Ключ отсека, уникальный идентификатор, используется для идентификации
размещения грузов по отсекам.
type: string
minLength: 1
maxLength: 1024
example: box01
capacity:
$ref: '#/components/schemas/capacity'
description: Вместимость отсека, которая ограничивает максимальную сумму
по всем полям `capacity` у *всех* грузов.
compatibilities:
$ref: '#/components/schemas/box_compatibilities'
limits:
$ref: '#/components/schemas/box_limits'
required:
- key
transport_compatibilities:
description: '[Совместимости](#section/Opisanie/Ispolzuemye-sovmestimosti) транспорта
с исполнителями и локациями.
'
type: object
additionalProperties: false
nullable: true
properties:
transport_features:
description: 'Список свойств транспорта. Используется для проверки совместимости
транспорта с локациями и исполнителями.
'
$ref: '#/components/schemas/compatibility_tag_list'
transport_features_lifetimes:
description: 'Ограничения на время жизни свойств транспорта. Влияет на совместимость
Транспорт-Локация. Совместимость действует во временные окна, которые
являются результатом пересечения временных окон всех указанных свойств.
'
$ref: '#/components/schemas/feature_lifetime_list'
performer_restrictions:
description: 'Список необходимых требований к исполнителю для использования
данного транспорта.
'
$ref: '#/components/schemas/compatibility_tag_list'
transport_limits:
description: 'Ограничения на загрузку транспорт.
'
type: object
additionalProperties: false
nullable: true
properties:
max_boxes:
description: 'Ограничение максимального количества используемых отсеков
транспорта в одном рейсе. Если параметр не указан или указан как null
- то количество отсеков не ограничено. Ограничение не должно превышать
количество отсеков.
'
type: integer
format: int32
nullable: true
default: null
minimum: 0
maximum: 100
example: 2
max_capacity:
$ref: '#/components/schemas/capacity'
description: 'Параметр дополнительно ограничивает максимально возможную
загрузку транспорта в целом суммарно по всем отсекам. Если параметр не
задан - загрузка ограничивается только каждым отсеком. Применимо только
если у транспорта больше одного отсека. Параметр не должен быть меньше
вместимости любого отсека.
'
transport:
description: 'Транспорт. Исполнитель использует транспорт для перемещения и
перевозки грузов.
'
type: object
additionalProperties: false
properties:
key:
description: Ключ транспорта, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: transport001
shifts:
description: Список рабочих смен транспорта.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/transport_shift'
transport_type:
$ref: '#/components/schemas/transport_type'
boxes:
description: Список отсеков транспорта, которые могут вмещать груз.
type: array
minItems: 0
maxItems: 100
uniqueItems: true
default: []
items:
$ref: '#/components/schemas/box'
compatibilities:
$ref: '#/components/schemas/transport_compatibilities'
limits:
$ref: '#/components/schemas/transport_limits'
name:
$ref: '#/components/schemas/name'
attributes:
$ref: '#/components/schemas/attributes'
required:
- key
- shifts
hardlink_element_type:
description: 'Тип сущности-цели, которая связана назначением с другими сущностями.
Может быть заказом, сменой исполнителя, сменой транспорта.
'
type: string
enum:
- ORDER
- PERFORMER_SHIFT
- TRANSPORT_SHIFT
example: ORDER
hardlink_element:
description: Элемент группы назначения.
type: object
additionalProperties: false
properties:
type:
$ref: '#/components/schemas/hardlink_element_type'
entity_key:
description: Ключ сущности-цели (соответственно заказа или смены).
type: string
minLength: 1
maxLength: 1024
example: ord0001
required:
- type
- entity_key
hardlink:
description: "Назначение, необходимое чтобы связать сущности в одну группу.\
\ Может состоять из двух сущностей или более. Пример применения:\n * назначение\
\ водителя на транспорт (связь смен исполнителя и траспорта).\n * назначение\
\ заказа на исполнителя (связь заказа со сменой исполнителя).\n * указание\
\ необходимости выполнять несколько заказов в одном рейсе (связь заказов между\
\ собой).\n"
type: object
additionalProperties: false
properties:
key:
description: Ключ назначения.
type: string
minLength: 1
maxLength: 1024
example: group01
links:
description: Список элементов группы назначения.
type: array
minItems: 2
maxItems: 1000
items:
$ref: '#/components/schemas/hardlink_element'
attributes:
$ref: '#/components/schemas/attributes'
required:
- key
- links
hardlink_list:
description: Список назначений.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/hardlink'
plan_configuration:
description: "Название конфигурации планирования.\nКонфигурация определяет цель\
\ и качество результата. \n[Перечень доступных](#section/Opisanie/Konfiguraciya-planirovaniya)\
\ конфигураций планирования."
type: string
minLength: 1
maxLength: 256
default: default
example: optimize_distance
trip_start_time_strategy:
description: "Стратегия выбора оптимального времени начала рейса:\n * `EARLIEST_FINISH`\
\ - оптимальное время начала рейса с целью пораньше завершить все заказы.\n\
\ * `LOWEST_COST` - оптимальное время рейса с целью увеличения процента попаданий\
\ в мягкие временные окна и минимизации общей стоимости рейса.\n"
type: string
enum:
- EARLIEST_FINISH
- LOWEST_COST
default: EARLIEST_FINISH
example: LOWEST_COST
trip_expectations:
description: 'Ожидания от результата расчета. Влияют на логику построения рейсов.
'
type: object
additionalProperties: false
properties:
trip_start_time_strategy:
$ref: '#/components/schemas/trip_start_time_strategy'
transport_speed_multiplier:
description: Коэффициент изменения скорости указанного типа транспорта.
type: object
additionalProperties: false
properties:
transport_type:
$ref: '#/components/schemas/transport_type'
speed:
description: Множитель средней скорости транспорта.
type: number
format: double
minimum: 0.1
maximum: 100000
example: 2.5
required:
- transport_type
- speed
transport_speed_multiplier_list:
description: Коэффициенты изменения скорости транспорта.
type: array
minItems: 0
maxItems: 16
default: []
uniqueItems: true
items:
$ref: '#/components/schemas/transport_speed_multiplier'
capacity_multiplier:
description: Коэффициенты изменения вместимости указанного типа транспорта.
type: object
additionalProperties: false
properties:
mass:
description: Множитель изменения массы.
type: number
format: double
minimum: 0
maximum: 1000
default: 1
example: 2
volume:
description: Множитель изменения объема.
type: number
format: double
minimum: 0
maximum: 1000
default: 1
example: 2
capacity_a:
description: Множитель изменения дополнительного параметра (A).
type: number
format: double
minimum: 0
maximum: 1000
default: 1
example: 2
capacity_b:
description: Множитель изменения дополнительного параметра (B).
type: number
format: double
minimum: 0
maximum: 1000
default: 1
example: 2
capacity_c:
description: Множитель изменения дополнительного параметра (C).
type: number
format: double
minimum: 0
maximum: 1000
default: 1
example: 2
transport_capacity_multiplier:
description: Коэффициенты изменения вместимости указанного типа транспорта.
type: object
additionalProperties: false
properties:
transport_type:
$ref: '#/components/schemas/transport_type'
capacity:
$ref: '#/components/schemas/capacity_multiplier'
required:
- transport_type
- capacity
transport_capacity_multiplier_list:
description: 'Коэффициенты изменения вместимости транспорта. Изменяют параметры
`capacity` у всех отсеков и `max_capacity` у транспорта.
'
type: array
minItems: 0
maxItems: 16
default: []
uniqueItems: true
items:
$ref: '#/components/schemas/transport_capacity_multiplier'
trip_assumptions:
description: 'Допущения при планировании. Предназначены для корректировки логики
планирования с помощью массового изменения входных данных.
'
type: object
additionalProperties: false
properties:
transport_speed_multipliers:
$ref: '#/components/schemas/transport_speed_multiplier_list'
transport_capacity_multipliers:
$ref: '#/components/schemas/transport_capacity_multiplier_list'
disable_compatibility:
description: 'Отключить учет совместимостей. Если указано `true` - все становится
совместимо со всем.
'
type: boolean
default: false
example: true
disable_capacity:
description: 'Отключить учет вместимостей. Если указано `true` - весь транспорт
вмещает неограниченное количество грузов.
'
type: boolean
default: false
example: true
same_order_time_window:
description: 'Использовать для расчетов одинаковое (указанное) временное
окно для заказов и заявок. Временное окно берется от начала самого раннего
до конца самого позднего окна из всех заказов и заявок.
'
type: boolean
default: false
example: true
expand_shift_time_window:
description: 'Расширить временное окно для смен исполнителей и транспорта. Левая
граница первой смены одной сущности расширяется до левой границы указанного
окна, правая до правой границы или начала следующего окна на эту же сущность.
Каждая следующая смена сдвигает правую границу до следующей смены или
до правой границы указанного окна.
'
type: boolean
default: false
example: true
compatibility_penalty:
description: Штраф за нарушение совместимости.
type: object
additionalProperties: false
properties:
tag:
$ref: '#/components/schemas/compatibility_tag'
penalty:
description: 'Штраф за нарушение совместимости по указанному свойству.
'
type: number
format: double
minimum: 0
maximum: 1000000
example: 2000
required:
- tag
- penalty
compatibility_penalty_list:
description: 'Штрафы за нарушение совместимости. При учете нарушения совместимости
транспорт-локация штраф применяется за каждую остановку и не может превышать
`max_penalty_cost` исполнителя, назначенного на рейс. Штрафуется только отсутствие
свойства, временные окна жизни свойства нельзя нарушать за штраф.
'
type: array
uniqueItems: true
minItems: 0
maxItems: 1000000
default: []
items:
$ref: '#/components/schemas/compatibility_penalty'
trip_penalties:
description: 'Штрафы при планировании - возможность нарушить часть бизнес-правил.
'
type: object
additionalProperties: false
properties:
compatibilities:
$ref: '#/components/schemas/compatibility_penalty_list'
max_locations_limits_penalty:
description: Максимально допустимая сумма штрафов за нарушение пропускной
способности локаций.
type: number
format: double
minimum: 0
maximum: 1000000000
example: 25000
default: 0
trips_settings:
description: Настройки создания рейсов.
type: object
additionalProperties: false
properties:
configuration:
$ref: '#/components/schemas/plan_configuration'
expectations:
$ref: '#/components/schemas/trip_expectations'
assumptions:
$ref: '#/components/schemas/trip_assumptions'
penalties:
$ref: '#/components/schemas/trip_penalties'
geo_provider:
description: "Поставщик геоданных:\n * `VRT` - гео-данные и пробки от Veeroute,\
\ работают по всему миру.\n\nМожет быть указан специфичный поставщик для определенного\
\ региона, доступность зависит от настроек клиента.\n"
type: string
default: VRT
minLength: 3
maxLength: 256
example: VRT
geo_settings:
description: 'Настройки использования гео-данных.
'
type: object
additionalProperties: false
properties:
geo_provider:
$ref: '#/components/schemas/geo_provider'
toll_roads:
description: Использовать платные дороги.
type: boolean
default: true
example: false
ferry_crossing:
description: Использовать паромные переправы.
type: boolean
default: true
example: false
traffic_jams:
description: Учет пробок при планировании маршрутов.
type: boolean
default: true
example: false
flight_distance:
description: 'Использовать для расчетов расстояния по прямой. Если указано
`false` - расстояния рассчитываются по дорогам. При включении данного
параметра не используется поставщик гео-данных и автоматически выключается
учет пробок (`traffic_jams`).
'
type: boolean
default: false
example: true
timezone:
description: Временная зона.
type: integer
format: int32
minimum: -12
maximum: 12
default: 0
example: 3
calculation_settings:
description: Настройки процесса расчета.
type: object
additionalProperties: false
properties:
max_calculation_time:
description: 'Максимальное время расчета. Старт отсчета начинается от времени
завершения загрузки данных на сервер и начала расчета.
'
type: string
format: duration
x-custom-format: duration
pattern: ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$
minLength: 3
maxLength: 16
default: PT20M
example: PT12M35S
max_waiting_time:
description: 'Максимальное время нахождения расчета в очереди. Старт отсчета
начинается от времени завершения загрузки данных на сервер.
'
type: string
format: duration
x-custom-format: duration
pattern: ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$
minLength: 3
maxLength: 16
default: PT20M
example: PT2H
result_ttl:
description: 'Время жизни результата расчета. Старт отсчета начинается от
времени завершения расчета.
'
type: string
format: duration
x-custom-format: duration
pattern: ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$
minLength: 3
maxLength: 16
default: PT20M
example: PT4M30S
result_timezone:
$ref: '#/components/schemas/timezone'
description: Временная зона, в которой возвращается результат расчета.
default: 0
treat_warnings_as_errors:
description: 'Относится к предупреждениям как к ошибкам и не запускать расчет
если хотя бы одна сущность содержит невалидные данные.
'
type: boolean
default: false
example: true
precision:
description: 'Указание точности полей типа double в порядковом номере знака
после запятой. По умолчанию 3, т.е. точность 0.001.
'
type: integer
format: int32
minimum: 0
maximum: 6
default: 3
example: 1
extension_settings:
description: Настройки использования внешний расширений для корректировки расчета.
type: object
additionalProperties: false
properties:
enable_extension:
description: Использовать сторонний корректировщик расчетов.
type: boolean
default: false
example: true
extension_url:
description: Адрес внешнего сервиса, реализующего Universal Extension API.
type: string
nullable: true
default: null
example: https://universal-extension.veeroute.cloud
plan_settings:
description: Настройки планирования.
type: object
additionalProperties: false
properties:
trips_settings:
$ref: '#/components/schemas/trips_settings'
geo_settings:
$ref: '#/components/schemas/geo_settings'
calculation_settings:
$ref: '#/components/schemas/calculation_settings'
extension_settings:
$ref: '#/components/schemas/extension_settings'
routing_matrix_waypoint:
description: 'Точка пути в матрице маршрутизации.
'
type: object
additionalProperties: false
properties:
geopoint:
$ref: '#/components/schemas/geopoint'
name:
description: 'Название точки. Может использоваться как идентификатор для
сопоставления задачи и результата расчета.
'
type: string
nullable: true
default: null
minLength: 0
maxLength: 1024
example: waypoint_1
required:
- geopoint
routing_matrix_line:
description: Линия значений в матрице расстояний (в метрах) или продолжительностей
(в секундах) маршрутов между точками.
type: array
minItems: 2
maxItems: 15001
uniqueItems: false
items:
description: 'Расстояние (в метрах) или продолжительность (в секундах) маршрута
между точками. Отрицательное значение (-1) означает невозможность проезда
между указанными точками.
'
type: integer
format: int64
minimum: -1
maximum: 10000000
example: 1500
routing_matrix:
description: 'Матрица маршрутизации. Содержит времена и расстояний между точками.
'
type: object
additionalProperties: false
properties:
waypoints:
description: Массив географических точек, между которыми вычислены расстояния
и времена.
type: array
minItems: 2
maxItems: 15001
uniqueItems: false
items:
$ref: '#/components/schemas/routing_matrix_waypoint'
distances:
description: 'Длины маршрутов между точками, в метрах. Значения
в массиве упорядочены в соответствии с порядком элементов в параметре
`waypoints`. Каждая строчка матрицы - массив расстояний из искомой точки
до каждой другой точки.
'
type: array
minItems: 2
maxItems: 15001
uniqueItems: false
items:
$ref: '#/components/schemas/routing_matrix_line'
durations:
description: 'Массив продолжительностей маршрутов между точками, в секундах.
Значения в массиве упорядочены в соответствии с порядком элементов в параметре
`waypoints`. Каждая строчка матрицы - массив времен перемещений из искомой
точки до каждой другой точки.
'
type: array
minItems: 2
maxItems: 15001
uniqueItems: false
items:
$ref: '#/components/schemas/routing_matrix_line'
required:
- waypoints
- distances
- durations
routing_transport_matrix:
description: Матрица времен и расстояний для определенного типа транспорта.
type: object
additionalProperties: false
properties:
transport_type:
$ref: '#/components/schemas/transport_type'
matrix:
$ref: '#/components/schemas/routing_matrix'
required:
- transport_type
- matrix
routing_transport_matrix_list:
description: 'Список матриц времен и расстояний для каждого типа транспорта,
которые указаны в данных.
Матрица должна описывать все локации для каждого типа транспорта из данных.
При указании внешней матрицы маршрутизации `external_routing` не учитываются
параметры `geo_settings`.
'
type: array
uniqueItems: true
minItems: 0
maxItems: 16
default: []
items:
$ref: '#/components/schemas/routing_transport_matrix'
dataset_name:
description: 'Название набора данных.
Техническое поле, не влияющее на расчет.
'
type: string
minLength: 0
maxLength: 512
default: ''
example: custom_dataset_one
plan_task:
description: Задача для планирования.
type: object
additionalProperties: false
properties:
locations:
description: Список локаций, которые используются в заказах и сменах.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/location'
orders:
description: Список заказов, которые необходимо выполнить.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/order'
performers:
description: 'Список доступных исполнителей. Исполнитель выполняет заказы
используя транспорт.
'
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/performer'
transports:
description: 'Список доступного транспорта. Транспорт используется исполнителем
рейса для выполнения заказов.
'
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/transport'
hardlinks:
$ref: '#/components/schemas/hardlink_list'
plan_settings:
$ref: '#/components/schemas/plan_settings'
external_routing:
$ref: '#/components/schemas/routing_transport_matrix_list'
dataset_name:
$ref: '#/components/schemas/dataset_name'
required:
- locations
- orders
- performers
- transports
process_code:
description: 'Уникальный идентификатор процесса. Создается один на процесс,
одинаковый для разных запросов по одному процессу.
'
type: string
format: uuid
example: 11111111-2222-3333-4444-555555555555
request_code:
description: 'Уникальный идентификатор запроса. Создается новый на каждый запрос.
'
type: string
format: uuid
example: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
user_username:
description: Уникальное имя пользователя для авторизации.
type: string
pattern: \w+
minLength: 2
maxLength: 256
example: username_for_login
company_key:
description: Уникальный идентификатор компании.
type: string
pattern: \w+
minLength: 3
maxLength: 256
example: smart_company
service:
description: Название сервиса.
type: string
enum:
- UNIVERSAL
- ROUTING
- ACCOUNT
- ADMIN
- STUDIO
- MONITOR
- PACKER
- AGRO
example: UNIVERSAL
operation:
description: Наименование операции (запроса).
type: string
pattern: \w+
minLength: 3
maxLength: 256
example: run_plan_calculation
tracedata:
description: Данные используемые для трассировки запросов.
type: object
additionalProperties: false
properties:
process_code:
$ref: '#/components/schemas/process_code'
request_code:
$ref: '#/components/schemas/request_code'
username:
$ref: '#/components/schemas/user_username'
company:
$ref: '#/components/schemas/company_key'
service:
$ref: '#/components/schemas/service'
operation:
$ref: '#/components/schemas/operation'
env:
description: Уникальный идентификатор окружения.
type: string
pattern: \w+
minLength: 2
maxLength: 256
example: edge7
pod:
description: Уникальный идентификатор pod.
type: string
pattern: \w+
minLength: 2
maxLength: 256
example: 11111111-2222-3333-4444-555555555555
time:
description: Дата и время вызова метода сервиса в соответствии с [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6).
type: string
format: date-time
example: '2024-11-21T09:30:00+03:00'
required:
- process_code
- request_code
- username
- company
- service
- operation
- env
- pod
- time
calculation_async_result:
description: Результат запуска асинхронного расчета.
type: object
additionalProperties: false
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
process_code:
$ref: '#/components/schemas/process_code'
description: Код процесса - идентификатор расчета.
required:
- tracedata
- process_code
schema_error:
description: Ошибка по схеме.
type: object
additionalProperties: false
properties:
entity:
description: Идентификатор целевой сущности.
type: string
nullable: true
maxLength: 1024
example: order_0001
message:
description: Сообщение об ошибке.
type: string
example: bad input data
required:
- entity
- message
schema_error_list:
description: Список ошибок.
type: array
uniqueItems: false
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/schema_error'
entity_error_type:
description: "Тип ошибки:\n * `INCONSISTENT_REFERENCE` - ссылка на несуществующую\
\ сущность\n * `UNIQUE_IDS_VIOLATION` - все идентификаторы должны быть уникальными\n\
\ * `INVALID_ROUTING_MATRIX` - проблема с размерностью матрицы гео-данных\n\
\ * `INVALID_GEO_PROVIDER` - проблема с указанным гео-провайдером\n * `COMPATIBILITY_CARGO_BOX`\
\ - ни один груз не совместим ни с одним отсеком\n * `COMPATIBILITY_TRANSPORT_PERFORMER`\
\ - ни один транспорт не совместим ни с одним исполнителем\n * `COMPATIBILITY_TRANSPORT_LOCATION`\
\ - ни один транспорт не совместим ни с одной локацией\n * `COMPATIBILITY_ORDER_PERFORMER`\
\ - ни один заказ не совместим ни с одним транспортом\n * `INCONSISTENT_HARDLINK`\
\ - ключ сущности должен находиться только в одной связи\n * `PLANNING_HORIZON_EXCEEDED`\
\ - превышен горизонт планирования (разница между самой ранней и самой поздней\
\ временными отметками в данных)\n * `MEANINGLESS_RESTRICTIONS` - заданные\
\ ограничения не имеют смысла\n * `TOO_MANY_WARNINGS` - количество предупреждений\
\ (`warning`) больше 15001\n"
type: string
enum:
- INCONSISTENT_REFERENCE
- UNIQUE_IDS_VIOLATION
- INVALID_ROUTING_MATRIX
- INVALID_GEO_PROVIDER
- COMPATIBILITY_CARGO_BOX
- COMPATIBILITY_TRANSPORT_PERFORMER
- COMPATIBILITY_TRANSPORT_LOCATION
- COMPATIBILITY_ORDER_PERFORMER
- INCONSISTENT_HARDLINK
- PLANNING_HORIZON_EXCEEDED
- MEANINGLESS_RESTRICTIONS
- TOO_MANY_WARNINGS
example: INCONSISTENT_REFERENCE
entity_type:
description: Тип сущности.
type: string
enum:
- TASK
- SETTINGS
- ORDER
- ORDER_LINK
- PERFORMER
- PERFORMER_LINK
- TRANSPORT
- TRANSPORT_LINK
- HARDLINK
- HARDLINK_LINK
- LOCATION
- LOCATION_LINK
- BOX
- BOX_LINK
- TRIP
- TRIP_LINK
- CARGO
- CARGO_LINK
- DEMAND
- DEMAND_LINK
- EVENT
- EVENT_LINK
- PERFORMER_SHIFT
- PERFORMER_SHIFT_LINK
- TRANSPORT_SHIFT
- TRANSPORT_SHIFT_LINK
- FACT
- FACT_LINK
example: ORDER
entity_path:
description: 'Описание сущности и путь до нее.
'
type: object
additionalProperties: false
nullable: true
properties:
entity_key:
description: Ключ целевой сущности.
type: string
nullable: true
maxLength: 1024
example: order_0001
entity_type:
$ref: '#/components/schemas/entity_type'
child_entity:
$ref: '#/components/schemas/entity_path'
required:
- entity_key
- entity_type
entity_error:
description: Описание ошибки во входных данных.
type: object
additionalProperties: false
properties:
type:
$ref: '#/components/schemas/entity_error_type'
info:
description: Информация об ошибке.
type: string
nullable: true
minLength: 0
maxLength: 2048
example: entity error
entities:
description: Список сущностей, которые вызвали ошибку.
type: array
uniqueItems: false
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/entity_path'
required:
- type
- entities
entity_error_list:
description: 'Список ошибок в исходных данных, из-за которых запуск расчета
невозможен.
'
type: array
uniqueItems: false
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/entity_error'
entity_warning_type:
description: "Тип предупреждения:\n * `NO_AVAILABLE_TRANSPORT` - заказ не возможно\
\ выполнить, так как нет ни одного доступного (по ограничениям смен) транспорта\n\
\ * `NO_AVAILABLE_PERFORMER` - заказ не возможно выполнить, так как нет ни\
\ одного доступного (по ограничениям смен) исполнителя\n * `NO_COMPATIBLE_TRANSPORT`\
\ - заказ не возможно выполнить, так как нет ни одного совместимого (по вместимости\
\ и\\или тегам совместимости) транспорта\n * `NO_COMPATIBLE_PERFORMER` -\
\ заказ не возможно выполнить, так как нет ни одного совместимого (по тегам\
\ совместимости) исполнителя\n * `PICKUP_AND_DROP_VIOLATION` - для каждого\
\ груза в рамках заказа должна быть ровно одна погрузка и ровно одна выгрузка\
\ (кроме заявок `PICKUP_TO_BOX` и `DROP_FROM_BOX`)\n * `PICKUP_AND_DROP_VIOLATION_PRECEDENCE_IN_ORDER`\
\ - для каждого груза в рамках заказа должна погрузка должна идти перед выгрузкой\
\ (`precedence_in_order`)\n * `PICKUP_AND_DROP_VIOLATION_PRECEDENCE_IN_TRIP`\
\ - заданы противоречивые требования на порядок следования заявок (`precedence_in_trip`)\n\
\ * `VIOLATION_PRECEDENCE_IN_TRIP_AND_ORDER` - требования на порядок следования\
\ заявок в рейсе (`precedence_in_trip`) и в заказе (`precedence_in_order`)\
\ противоречат друг другу\n * `TIME_WINDOW_VIOLATION` - время начала временного\
\ окна позже времени окончания окна или временное окно превышает максимально\
\ допустимое\n * `DURATION_VIOLATION` - продолжительность не соответствует\
\ разрешенному интервалу\n * `ORDER_WINDOWS_INTERSECTION_VIOLATION` - мягкие\
\ окна не должны выходить за границы жесткого окна\n * `PERFORMER_SHIFTS_INTERSECTION_VIOLATION`\
\ - временные диапазоны рабочих смен исполнителя не должны пересекаться, начало\
\ последующего окна не может быть равно концу предыдущего \n * `TRANSPORT_SHIFTS_INTERSECTION_VIOLATION`\
\ - временные диапазоны рабочих смен транспорта не должны пересекаться, начало\
\ последующего окна не может быть равно концу предыдущего\n * `LOCATION_WINDOWS_INTERSECTION_VIOLATION`\
\ - временные диапазоны рабочих окон одной локации не должны пересекаться,\
\ начало последующего окна не может быть равно концу предыдущего\n * `INVALID_LOCATION_DURATIONS`\
\ - у локации есть рабочее окно которое меньше суммы времен `arrival + departure`\n\
\ * `NO_TRANSPORT_BOXES` - если существуют заказы с грузом - то у транспорта\
\ должен быть хотя бы один отсек \n * `MAX_CAPACITY_VIOLATION` - ограничение\
\ `max_capacity` превышает суммарную вместимость всех отсеков или указывается\
\ для одного отсека или меньше вместимости какого-то отсека\n * `MAX_BOXES_VIOLATION`\
\ - ограничение `max_boxes` больше или равно суммарного количества отсеков\
\ или указывается для одного отсека или равно нулю\n * `TOO_MANY_CARGOS_FOR_DROP_VIOLATION`\
\ - количество грузов для заявки, имеющей тип `DROP` / `DROP_FROM_BOX`, должно\
\ быть не больше единицы\n * `EMPTY_CARGOES_LIST` - пустой список грузов\
\ у заявок, имеющих тип `DROP` / `DROP_FROM_BOX` / `PICKUP` / `PICKUP_TO_BOX`\n\
\ * `CARGO_WORK_VIOLATION` - у заявки типа `WORK` список грузов должен быть\
\ пустой\n * `GEODATA_TIME_WINDOW_VIOLATION` - горизонт планирования превышает\
\ максимально доступное значение\n * `SHIFT_RESTRICTIONS_COULD_BE_MORE_PRECISE`\
\ - рабочее окно `working_window` смены исполнителя не лежит полностью внутри\
\ окна доступности `availability_window`\n * `DURATION_DOES_NOT_FIT_INTO_HARD_WINDOW`\
\ - продолжительность события не помещается в жесткое временное окно\n *\
\ `DURATION_DOES_NOT_FIT_INTO_SOFT_WINDOW` - продолжительность события не\
\ помещается в мягкое временное окно\n * `EXTRA_DURATION_DOES_NOT_FIT_INTO_SOFT_WINDOW`\
\ - дополнительное время на выполнение заявки не помещается в мягкое временное\
\ окно\n * `MAX_CALCULATION_TIME_VIOLATION` - превышено максимальное допустимое\
\ время расчета\n * `MAX_WAITING_TIME_VIOLATION` - превышено максимальное\
\ допустимое время ожидания\n * `INVALID_HARDLINK` - связь невозможно учесть,\
\ нельзя назначать на транспорт заказ с заявками с типом `WORK`\n * `CARGO_BOX_VIOLATION`\
\ - для заявок всех типов кроме `DROP_FROM_BOX` ключ отсека, где находится\
\ груз, должен быть пустым\n * `CARGO_MULTIBOX_VIOLATION` - для заявки типа\
\ `DROP_FROM_BOX` указанные грузы находятся в отсеках разных транспортов\n\
\ * `CARGO_CAPACITY_VIOLATION` - указанный груз на борту превышает размеры\
\ отсека, в котором он находится\n * `CARGO_ORDER_VIOLATION` - указанный\
\ в заказе груз не присутствует в заявках\n * `FEATURE_LIFETIME_VIOLATION`\
\ - окна свойств пересекаются между собой или рабочее окно `working_window`\
\ смены исполнителя или транспорта не пересекается с временным окном свойства\n\
\ * `QUOTA_EXCEEDED` - превышена квота на сервис\n * `MAX_LOCATIONS_LIMITS_PENALTY_EXCEEDED`\
\ - полученное решение не удовлетворяет требованию `max_locations_limits_penalty`\n\
\ * `REMOVED_ITEMS_NOT_EMPTY` - в процессе проверки данных были удалены сущности\
\ из исходного датасета, список удаленных сущностей находится в объекте `removed_items`\n"
type: string
enum:
- NO_AVAILABLE_TRANSPORT
- NO_AVAILABLE_PERFORMER
- NO_COMPATIBLE_TRANSPORT
- NO_COMPATIBLE_PERFORMER
- PICKUP_AND_DROP_VIOLATION
- PICKUP_AND_DROP_VIOLATION_PRECEDENCE_IN_ORDER
- PICKUP_AND_DROP_VIOLATION_PRECEDENCE_IN_TRIP
- VIOLATION_PRECEDENCE_IN_TRIP_AND_ORDER
- TIME_WINDOW_VIOLATION
- DURATION_VIOLATION
- ORDER_WINDOWS_INTERSECTION_VIOLATION
- PERFORMER_SHIFTS_INTERSECTION_VIOLATION
- TRANSPORT_SHIFTS_INTERSECTION_VIOLATION
- LOCATION_WINDOWS_INTERSECTION_VIOLATION
- INVALID_LOCATION_DURATIONS
- NO_TRANSPORT_BOXES
- MAX_CAPACITY_VIOLATION
- MAX_BOXES_VIOLATION
- TOO_MANY_CARGOS_FOR_DROP_VIOLATION
- EMPTY_CARGOES_LIST
- CARGO_WORK_VIOLATION
- GEODATA_TIME_WINDOW_VIOLATION
- SHIFT_RESTRICTIONS_COULD_BE_MORE_PRECISE
- DURATION_DOES_NOT_FIT_INTO_HARD_WINDOW
- DURATION_DOES_NOT_FIT_INTO_SOFT_WINDOW
- EXTRA_DURATION_DOES_NOT_FIT_INTO_SOFT_WINDOW
- MAX_CALCULATION_TIME_VIOLATION
- MAX_WAITING_TIME_VIOLATION
- INVALID_HARDLINK
- CARGO_BOX_VIOLATION
- CARGO_MULTIBOX_VIOLATION
- CARGO_CAPACITY_VIOLATION
- CARGO_ORDER_VIOLATION
- FEATURE_LIFETIME_VIOLATION
- QUOTA_EXCEEDED
- MAX_LOCATIONS_LIMITS_PENALTY_EXCEEDED
- REMOVED_ITEMS_NOT_EMPTY
example: TIME_WINDOW_VIOLATION
entity_warning:
description: Описание предупреждения.
type: object
additionalProperties: false
properties:
type:
$ref: '#/components/schemas/entity_warning_type'
info:
description: Информация о предупреждении.
type: string
nullable: true
minLength: 0
maxLength: 2048
example: entity warning
entities:
description: Список сущностей, которые относятся к предупреждению.
type: array
uniqueItems: false
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/entity_path'
required:
- type
- entities
entity_warning_list:
description: Список предупреждений.
type: array
uniqueItems: false
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/entity_warning'
custom_400_with_errors_and_warnings:
description: Детализация по ошибке 400.
type: object
additionalProperties: false
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
message:
description: Сообщение об ошибке.
type: string
nullable: true
example: bad task data
schema_errors:
$ref: '#/components/schemas/schema_error_list'
logical_errors:
$ref: '#/components/schemas/entity_error_list'
warnings:
$ref: '#/components/schemas/entity_warning_list'
required:
- tracedata
general_402:
description: Детализация по ошибке 402.
type: object
additionalProperties: false
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
message:
description: Сообщение об ошибке.
type: string
nullable: true
example: Payment Required
required:
- tracedata
general_404:
description: Детализация по ошибке 404.
type: object
additionalProperties: false
properties:
resource_key:
description: Идентификатор ресурса.
type: string
nullable: true
default: null
example: resource_key
detail:
description: Детализация по ресурсу.
type: object
additionalProperties: false
nullable: true
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
required:
- tracedata
general_429:
description: Детализация по ошибке 429.
type: object
additionalProperties: false
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
message:
description: Сообщение об ошибке.
type: string
nullable: true
example: Too many requests
required:
- tracedata
general_500:
description: Детализация по ошибке 500.
type: object
additionalProperties: false
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
message:
description: Сообщение об ошибке.
type: string
nullable: true
example: Internal Server Error
required:
- tracedata
assigned_performer:
description: Назначенная на определенное время (`shift_time`) смена исполнителя.
type: object
additionalProperties: false
properties:
performer_key:
description: Ключ исполнителя, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: performer0001
shift_key:
description: Ключ смены исполнителя.
type: string
minLength: 1
maxLength: 1024
example: performer0001_shift01
shift_time:
$ref: '#/components/schemas/time_window'
required:
- performer_key
- shift_key
- shift_time
assigned_transport:
description: Назначенная на определенное время (`shift_time`) смена транспорта.
type: object
additionalProperties: false
properties:
transport_key:
description: Ключ транспорта, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: transport001
shift_key:
description: Ключ смены транспорта.
type: string
minLength: 1
maxLength: 1024
example: performer01
shift_time:
$ref: '#/components/schemas/time_window'
required:
- transport_key
- shift_key
- shift_time
trip_state_flag:
description: 'Логический [флаг состояния](#section/Opisanie/Model-reisa) в рамках
рейса.
'
type: string
enum:
- AROUND_LOCATION
- INSIDE_LOCATION
- INSIDE_LOCATION_WINDOW
- INSIDE_WORKING_WINDOW
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_EVENT_SOFT_WINDOW
- ON_DEMAND
- WAITING
- RELOCATING
- BREAK
- REST
- DEPARTURE
- ARRIVAL
- DURING_ROUNDTRIP
example: RELOCATING
cargo_action_type:
description: "Типы действий с грузом:\n * `ADD` - перемещение груза в отсек\n\
\ * `REMOVE` - перемещение груза из отсека\n"
type: string
enum:
- ADD
- REMOVE
example: ADD
cargo_action:
description: Действие с грузом.
type: object
additionalProperties: false
properties:
box_key:
description: Ключ отсека.
type: string
minLength: 1
maxLength: 1024
example: box01
cargo_key:
description: Ключ груза.
type: string
minLength: 1
maxLength: 1024
example: cargo01
cargo_action_type:
$ref: '#/components/schemas/cargo_action_type'
required:
- box_key
- cargo_key
- cargo_action_type
cargo_action_list:
description: Список действий с грузами в транспорте на начало состояния.
type: array
uniqueItems: false
minItems: 0
maxItems: 1000
items:
$ref: '#/components/schemas/cargo_action'
trip_state:
description: Состояние рейса.
type: object
additionalProperties: false
properties:
time:
description: Время начала действия в соответствии с [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6).
type: string
format: date-time
example: '2024-11-21T09:30:00+03:00'
order_key:
description: Ключ заказа, с которым производится действие.
type: string
nullable: true
default: null
minLength: 1
maxLength: 1024
example: order01
demand_key:
description: Ключ заявки, с которой производится действие.
type: string
nullable: true
default: null
minLength: 1
maxLength: 1024
example: demand01.1
event_key:
description: Ключ события, с которым производится действие.
type: string
nullable: true
default: null
minLength: 1
maxLength: 1024
example: event01
location_key:
description: Ключ локации, в которой производится действие.
type: string
nullable: true
default: null
minLength: 1
maxLength: 1024
example: location_01
flags:
description: "Список флагов, совокупность которых описывает текущее состояние.\n\
Значения флагов, отвечающих за географическое положение (одновременно\
\ может быть несколько флагов):\n * `AROUND_LOCATION` - исполнитель находится\
\ рядом с локацией - в процессе парковки или выезда с нее.\n * `INSIDE_LOCATION`\
\ - исполнитель находится на локации.\n\nЗначения флагов, отвечающих за\
\ нахождения во временных окнах (одновременно может быть несколько флагов):\n\
\ * `INSIDE_WORKING_WINDOW` - исполнитель находится внутри рабочего временного\
\ окна.\n * `INSIDE_LOCATION_WINDOW` - исполнитель находится внутри времени\
\ работы локации.\n * `INSIDE_EVENT_HARD_WINDOW` - исполнитель находится\
\ внутри жесткого временного окна.\n * `INSIDE_EVENT_SOFT_WINDOW` - исполнитель\
\ находится внутри мягкого временного окна.\n\nЗначения флагов, отвечающих\
\ за действия (одновременно может быть только один флаг):\n * `ON_DEMAND`\
\ - исполнитель начал работу над заявкой.\n * `WAITING` - исполнитель\
\ начал ожидание.\n * `RELOCATING` - исполнитель начал перемещаться к\
\ следующей остановке.\n * `BREAK` - исполнитель начал на перерыв.\n\
\ * `REST` - исполнитель начал длительный отдых.\n * `ARRIVAL` - исполнитель\
\ начал парковку.\n * `DEPARTURE` - исполнитель завершил выезд с парковки.\n\
\nЗначения флагов, отвечающих за логическое состояние:\n * `DURING_ROUNDTRIP`\
\ - исполнитель выполняет кругорейс.\n"
type: array
uniqueItems: true
minItems: 0
maxItems: 9
items:
$ref: '#/components/schemas/trip_state_flag'
cargo_actions:
$ref: '#/components/schemas/cargo_action_list'
distance:
description: Суммарное расстояние в метрах.
type: integer
format: int32
default: 0
minimum: 0
maximum: 4000000000
example: 5200
cost:
description: Суммарные затраты, которые считаются на базе тарифов исполнителей
и транспорта.
type: number
format: double
minimum: 0
maximum: 10000000000
default: 0
example: 1231.1
reward:
description: Суммарное вознаграждение за выполнение заказов.
type: number
format: double
minimum: 0
maximum: 10000000000
default: 0
example: 2343.3
attributes:
$ref: '#/components/schemas/attributes'
required:
- time
- flags
trip_state_list:
description: Список состояний исполнителя.
type: array
uniqueItems: false
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/trip_state'
trip_waitlist:
description: 'Список ключей заказов, назначенных на исполнителя, но не запланированных
на определенное время и не учтенных в загрузке транспорта.
'
type: array
minItems: 0
maxItems: 15001
uniqueItems: true
items:
description: Ключ заказа.
type: string
minLength: 1
maxLength: 1024
example:
- order02
trip:
description: 'Рейс - это совокупность работ, запланированных на выполнение конкретным
исполнителем на конкретном транспорте, выраженных через [изменение состояний](#section/Opisanie/Model-rejsa)
исполнителя.
'
type: object
additionalProperties: false
properties:
key:
description: Уникальный идентификатор рейса.
type: string
minLength: 1
maxLength: 1024
example: trip-0000-9999
performer:
$ref: '#/components/schemas/assigned_performer'
transport:
$ref: '#/components/schemas/assigned_transport'
states:
$ref: '#/components/schemas/trip_state_list'
waitlist:
$ref: '#/components/schemas/trip_waitlist'
name:
$ref: '#/components/schemas/name'
attributes:
$ref: '#/components/schemas/attributes'
required:
- key
- performer
- transport
- states
trip_list:
description: 'Список рейсов. Рейс - это совокупность работ, запланированных
на выполнение конкретным исполнителем на конкретном транспорте, выраженных
через [изменение состояний](#section/Opisanie/Model-rejsa) исполнителя.
'
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/trip'
measurements:
description: 'Измерения времен и дистанций для работ на локации, отдельных рейсов
и планирования в целом.
'
type: object
additionalProperties: false
properties:
time_window:
$ref: '#/components/schemas/time_window'
driving_time:
$ref: '#/components/schemas/time_duration'
waiting_time:
$ref: '#/components/schemas/time_duration'
working_time:
$ref: '#/components/schemas/time_duration'
break_time:
$ref: '#/components/schemas/time_duration'
rest_time:
$ref: '#/components/schemas/time_duration'
arriving_time:
$ref: '#/components/schemas/time_duration'
departure_time:
$ref: '#/components/schemas/time_duration'
total_time:
$ref: '#/components/schemas/time_duration'
distance:
description: Расстояние в метрах.
type: integer
format: int32
minimum: 0
maximum: 4000000000
example: 5200
required:
- time_window
- driving_time
- waiting_time
- working_time
- break_time
- rest_time
- arriving_time
- departure_time
- total_time
- distance
capacity_statistics_sum:
description: Статистика по характеристикам вместимости.
type: object
additionalProperties: false
properties:
mass:
description: Суммарная масса в килограммах.
type: number
format: double
minimum: 0
maximum: 1000000000
example: 105500
volume:
description: Суммарный объем в кубических метрах.
type: number
format: double
minimum: 0
maximum: 1000000000
example: 220034
capacity_a:
description: Сумма по дополнительному параметру (A) для измерения грузов
в альтернативных единицах измерения.
type: number
format: double
minimum: 0
maximum: 1000000000
example: 100000
capacity_b:
description: Сумма по дополнительному параметру (B) для измерения грузов
в альтернативных единицах измерения.
type: number
format: double
minimum: 0
maximum: 1000000000
example: 200000
capacity_c:
description: Сумма по дополнительному параметру (C) для измерения грузов
в альтернативных единицах измерения.
type: number
format: double
minimum: 0
maximum: 1000000000
example: 300000
required:
- mass
- volume
- capacity_a
- capacity_b
- capacity_c
capacity_statistics_ratio:
description: Статистика по характеристикам вместимости (доля). Может быть больше
единицы.
type: object
additionalProperties: false
properties:
mass:
description: Загрузка по массе, в долях единицы.
type: number
format: double
minimum: 0
maximum: 1000
example: 0.5
volume:
description: Загрузка по обьему, в долях единицы.
type: number
format: double
minimum: 0
maximum: 1000
example: 0.1
capacity_a:
description: Загрузка по дополнительному параметру (A), в долях единицы.
type: number
format: double
minimum: 0
maximum: 1000
example: 0.7
capacity_b:
description: Загрузка по дополнительному параметру (B), в долях единицы.
type: number
format: double
minimum: 0
maximum: 1000
example: 0.8
capacity_c:
description: Загрузка по дополнительному параметру (C), в долях единицы.
type: number
format: double
minimum: 0
maximum: 1000
example: 0.9
required:
- mass
- volume
- capacity_a
- capacity_b
- capacity_c
capacity_statistics_load:
description: Статистика по характеристикам вместимости (доля). Не может быть
больше единицы.
type: object
additionalProperties: false
properties:
mass:
description: Загрузка по массе, в долях единицы.
type: number
format: double
minimum: 0
maximum: 1
example: 0.5
volume:
description: Загрузка по обьему, в долях единицы.
type: number
format: double
minimum: 0
maximum: 1
example: 0.1
capacity_a:
description: Загрузка по дополнительному параметру (A), в долях единицы.
type: number
format: double
minimum: 0
maximum: 1
example: 0.7
capacity_b:
description: Загрузка по дополнительному параметру (B), в долях единицы.
type: number
format: double
minimum: 0
maximum: 1
example: 0.8
capacity_c:
description: Загрузка по дополнительному параметру (C), в долях единицы.
type: number
format: double
minimum: 0
maximum: 1
example: 0.9
required:
- mass
- volume
- capacity_a
- capacity_b
- capacity_c
general_statistics:
description: Суммарная статистика по одному или совокупности рейсов.
type: object
additionalProperties: false
properties:
cost:
description: 'Суммарные затраты, которые считаются на базе тарифов исполнителей
и транспорта.
'
type: number
format: double
minimum: 0
maximum: 10000000000
example: 1231.1
reward:
description: Суммарное вознаграждение за выполнение заказов.
type: number
format: double
minimum: 0
maximum: 10000000000
example: 2343.3
profit:
description: 'Суммарный доход - разница между суммарным вознаграждением
(`reward`) и затратами (`cost`).
'
type: number
format: double
minimum: -10000000000
maximum: 10000000000
example: 1231.1
measurements:
$ref: '#/components/schemas/measurements'
description: "Измерения времен и дистанций для совокупности и отдельных\
\ рейсов:\n\n * `time_window` - время начала первого рейса и время окончания\
\ последнего, если рейсов нет - возвращается время левой границы горизонта\
\ планирования, при этом поля from\\to имеют одинаковое значение\n *\
\ `driving_time` - продолжительность времени вождения\n * `waiting_time`\
\ - суммарное время ожидания по всем локациям\n * `working_time` - суммарное\
\ время выполнения работ на всех локациях, входящих в рейс\n * `break_time`\
\ - суммарное время перерывов по всем локациям\n * `rest_time` - суммарное\
\ время отдыхов по всем локациям\n * `arriving_time` - суммарное время\
\ на подъезд/парковку на локациях\n * `departure_time` - суммарное время\
\ на отъезд от локаций\n * `total_time` - суммарное время, складывается\
\ из `driving_time` + `waiting_time` + `working_time` + `break_time` +\
\ `rest_time` + `arriving_time` + `departure_time`\n * `distance` - суммарная\
\ протяжённость кругорейса/рейса/совокупности рейсов, в метрах\n"
trips_count:
description: Суммарное количество запланированных рейсов.
type: integer
format: int32
minimum: 0
maximum: 15001
example: 250
performers_count:
description: Суммарное количество исполнителей, задействованных в выполнении
заказов.
type: integer
format: int32
minimum: 0
maximum: 15001
example: 157
orders_count:
description: Суммарное количество запланированных и назначенных заказов.
type: integer
format: int32
minimum: 0
maximum: 15001
example: 1700
plan_orders_count:
description: Суммарное количество запланированных заказов.
type: integer
format: int32
minimum: 0
maximum: 15001
example: 1003
waitlist_orders_count:
description: Суммарное количество назначенных заказов.
type: integer
format: int32
minimum: 0
maximum: 15001
example: 697
stops_count:
description: Суммарное количество остановок (неуникальных локаций).
type: integer
format: int32
minimum: 0
maximum: 15001000
example: 87
locations_count:
description: Суммарное количество уникальный локаций в рамках одного рейса.
type: integer
format: int32
minimum: 0
maximum: 15001000
example: 45
cargo_capacity_sum:
$ref: '#/components/schemas/capacity_statistics_sum'
description: Суммарные аддитивные меры перевезенного груза.
cargo_capacity_ratio:
$ref: '#/components/schemas/capacity_statistics_ratio'
description: 'Отношение суммарных аддитивных мер перевезенного груза к суммарной
вместимости отсеков. В долях единицы. Может быть больше единицы.
'
max_transport_load:
$ref: '#/components/schemas/capacity_statistics_load'
description: 'Отношение максимальной загрузки отсеков к суммарной вместимости
отсеков. В долях единицы. Не может быть больше единицы.
'
average_speed:
description: Средняя скорость - отношение общей дистанции к общему время
движения, км/ч.
type: number
format: double
minimum: 0
example: 43.1
round_trips_count:
description: Количество кругорейсов внутри рейса.
type: integer
format: int32
minimum: 0
maximum: 15001
example: 2
average_roundtrip_distance:
description: Средний пробег на кругорейс - отношение суммарного пробега
к количеству кругорейсов, в метрах.
type: number
format: double
minimum: 0
example: 23.4
average_roundtrip_time:
$ref: '#/components/schemas/time_duration'
description: Среднее время на кругорейс - отношение суммарного времени к
количеству кругорейсов.
attributes:
$ref: '#/components/schemas/attributes'
required:
- cost
- reward
- profit
- measurements
- trips_count
- performers_count
- orders_count
- plan_orders_count
- waitlist_orders_count
- stops_count
- locations_count
- cargo_capacity_sum
- cargo_capacity_ratio
- max_transport_load
- average_speed
- round_trips_count
- average_roundtrip_distance
- average_roundtrip_time
transport_load:
description: Суммарная загрузка транспорта.
type: object
additionalProperties: false
properties:
count:
description: Количество грузов.
type: integer
format: int32
minimum: 0
maximum: 15001
example: 1460
capacity:
$ref: '#/components/schemas/capacity_statistics_sum'
required:
- count
- capacity
load_statistics:
description: 'Статистика загрузке транспорта.
'
type: object
additionalProperties: false
properties:
total_load:
$ref: '#/components/schemas/transport_load'
description: Суммарная загрузка транспорта за все время рейса.
max_load:
$ref: '#/components/schemas/transport_load'
description: Максимальная загрузка транспорта за все время рейса (по каждому
измерению) - и в движении и на точках погрузки\разгрузки.
max_transfer_load:
$ref: '#/components/schemas/transport_load'
description: Максимальная загрузка транспорта за все время рейса (по каждому
измерению) в движении.
required:
- total_load
- max_load
- max_transfer_load
stop_demand:
description: Заявка, выполненная по конкретной остановке.
type: object
additionalProperties: false
properties:
demand_key:
description: Ключ заявки.
type: string
minLength: 1
maxLength: 1024
example: demand_key_01
event_key:
description: Ключ события.
type: string
minLength: 1
maxLength: 1024
example: event_key_01
demand_time_window:
$ref: '#/components/schemas/time_window'
description: Временное окно выполнения заявки.
required:
- demand_key
- event_key
- demand_time_window
stop_statistics:
description: 'Статистика по конкретной остановке в рейсе.
'
type: object
additionalProperties: false
properties:
location_key:
description: Ключ локации, на которой происходит остановка.
type: string
minLength: 1
maxLength: 1024
example: location_01
stop_demands:
description: Список заявок, выполненных на этой остановке.
type: array
minItems: 0
maxItems: 15001
uniqueItems: false
items:
$ref: '#/components/schemas/stop_demand'
stop_time_window:
$ref: '#/components/schemas/time_window'
description: 'Временное окно остановки - от начала парковки до полного отъезда
с локации. Продолжительность окна складывается из `waiting_time` + `break_time`
+ `rest_time` + `working_time` + `arriving_time` + `departure_time`.
'
measurements:
$ref: '#/components/schemas/measurements'
description: "Измерения времен и дистанций для работ на остановке:\n\n \
\ * `time_window` - временное окно от начала движения к остановке до окончания\
\ отъезда с остановки\n * `driving_time` - время движения от предыдущей\
\ остановки до текущей локации\n * `waiting_time` - продолжительность\
\ ожидания исполнения работы на локации\n * `working_time` - время, затраченное\
\ на непосредственное выполнение работ на локации\n * `break_time` -\
\ продолжительность перерыва исполнителя\n * `rest_time` - продолжительность\
\ отдыха исполнителя\n * `arriving_time` - время, затраченное на подъезд/парковку\
\ на локации\n * `departure_time` - время, затраченное на отъезд от локации\n\
\ * `total_time` - суммарное время на остановку, складывается из `driving_time`\
\ + `waiting_time` + `working_time` + `break_time` + `rest_time` + `arriving_time`\
\ + `departure_time`\n * `distance` - расстояние от предыдущей остановки\
\ до текущей\n"
upload:
$ref: '#/components/schemas/transport_load'
description: Суммарная загрузка товаров в транспорт на этой остановке.
download:
$ref: '#/components/schemas/transport_load'
description: Суммарная выгрузка товаров из транспорта на этой остановке.
max_load:
$ref: '#/components/schemas/transport_load'
description: Максимальная загрузка транспорта в процессе загрузки/выгрузки
на остановке.
arrival_load:
$ref: '#/components/schemas/transport_load'
description: Загрузка транспорта в момент его прибытия в данную остановку.
departure_load:
$ref: '#/components/schemas/transport_load'
description: Загрузка транспорта в момент его отъезда от данной остановки.
required:
- location_key
- stop_demands
- stop_time_window
- measurements
- upload
- download
- max_load
- arrival_load
- departure_load
stop_statistics_list:
description: Статистика по каждой остановке в рейсе.
type: array
minItems: 0
maxItems: 15001
uniqueItems: false
items:
$ref: '#/components/schemas/stop_statistics'
roundtrip_statistics:
description: 'Статистика по кругорейсу.
'
type: object
additionalProperties: false
properties:
roundtrip_key:
description: Ключ кругорейса.
type: string
minLength: 1
maxLength: 1024
example: trip_01_round_02
general_statistics:
$ref: '#/components/schemas/general_statistics'
description: Общая статистика по кругорейсу.
required:
- roundtrip_key
- general_statistics
roundtrip_statistics_list:
description: Статистика по кругорейсам внутри рейса.
type: array
minItems: 0
maxItems: 15001
uniqueItems: false
items:
$ref: '#/components/schemas/roundtrip_statistics'
trip_statistics:
description: 'Статистика по конкретному рейсу.
'
type: object
additionalProperties: false
properties:
trip_key:
description: Ключ рейса, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: trip01
general_statistics:
$ref: '#/components/schemas/general_statistics'
description: Общая статистика по рейсу.
load_statistics:
$ref: '#/components/schemas/load_statistics'
stop_statistics:
$ref: '#/components/schemas/stop_statistics_list'
roundtrip_statistics:
$ref: '#/components/schemas/roundtrip_statistics_list'
attributes:
$ref: '#/components/schemas/attributes'
required:
- trip_key
- general_statistics
- load_statistics
- stop_statistics
- roundtrip_statistics
trip_statistics_list:
description: 'Список статистик по каждому запланированному рейсу отдельно.
'
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/trip_statistics'
location_limit_statistics:
description: 'Статистика по выполнению ограничения пропускной способности локации
внутри одного временного окна.
'
type: object
additionalProperties: false
properties:
location_limit_key:
description: Ключ ограничения, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: location_limit_constraint_01
cargos_statistics:
$ref: '#/components/schemas/location_cargos_limit'
description: Для временного отрезка - сумма мер перемещенных грузов и сумма
штрафов за нарушение ограничений по перемещению грузов.
transports_statistics:
$ref: '#/components/schemas/location_transports_limit'
description: Для временного отрезка - количество транспорта, в среднем обслуживаемого
за указанное временное окно и сумма штрафов за нарушение ограничений по
обслуживанию транспорта.
location_limit_penalty:
description: Сумма всех штрафов за нарушение пропускной способности локации
внутри ограничения.
type: number
format: double
minimum: 0
maximum: 1000000000
example: 25000
required:
- location_limit_key
- location_limit_penalty
- cargos_statistics
- transports_statistics
location_statistics:
description: 'Статистика по загрузке локации.
'
type: object
additionalProperties: false
nullable: true
properties:
location_key:
description: Ключ локации.
type: string
minLength: 1
maxLength: 1024
example: location_01
location_limits_penalty:
description: Сумма всех штрафов за нарушение пропускной способности локации.
type: number
format: double
minimum: 0
maximum: 1000000000
example: 25000
total_cargos_statistics:
$ref: '#/components/schemas/location_cargos_limit'
description: Для локации - сумма мер перемещенных грузов и сумма штрафов
за нарушение ограничений по перемещению грузов.
total_transports_statistics:
$ref: '#/components/schemas/location_transports_limit'
description: Для локации - количество транспорта, в среднем обслуживаемого
за указанное временное окно и сумма штрафов за нарушение ограничений по
обслуживанию транспорта.
limits_statistics:
description: Статистика по выполнению ограничения пропускной способности
локации.
type: array
uniqueItems: false
minItems: 0
maxItems: 100
items:
$ref: '#/components/schemas/location_limit_statistics'
required:
- location_key
- location_limits_penalty
- total_cargos_statistics
- total_transports_statistics
- limits_statistics
location_statistics_list:
description: Статистика по загрузке локаций, для которых установлены ограничения
пропускной способности.
type: array
minItems: 0
maxItems: 15001
uniqueItems: false
items:
$ref: '#/components/schemas/location_statistics'
task_statistics:
description: 'Общая статистика по входным данным.
'
type: object
additionalProperties: false
nullable: true
properties:
planning_horizon:
$ref: '#/components/schemas/time_window'
description: "Горизонт планирования - временное окно, где:\n * `from` -\
\ левая граница временных окон всех сущностей из входных данных\n * `to`\
\ - правая граница временных окон всех сущностей из входных данных\n"
required:
- planning_horizon
time_window_violation_detail:
description: Детальная информация о нарушении временных окон.
type: object
additionalProperties: false
properties:
demand_keys:
description: Список ключей заказов.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
description: Ключ заявки.
type: string
minLength: 1
maxLength: 1024
example:
- obj1
count:
description: Суммарное количество заявок.
type: integer
format: int32
minimum: 0
maximum: 15001
example: 1700
required:
- demand_keys
- count
time_window_violations:
description: "Статистика по нарушениям временных окон. \n"
type: object
additionalProperties: false
properties:
before:
$ref: '#/components/schemas/time_window_violation_detail'
description: Количество и ключи заявок, которые запланированы до наступления
разрешенного временного окна.
after:
$ref: '#/components/schemas/time_window_violation_detail'
description: Количество и ключи заявок, которые запланированы после наступления
разрешенного временного окна.
required:
- before
- after
quality:
description: 'Метрики качества.
'
type: object
additionalProperties: false
nullable: true
properties:
locations_limits_penalty:
description: Сумма штрафов за нарушение пропускной способности локаций.
type: number
format: double
minimum: 0
maximum: 1000000000
example: 25000
soft_time_window_violations:
$ref: '#/components/schemas/time_window_violations'
description: Статистика по нарушению мягких временных окон.
hard_time_window_violations:
$ref: '#/components/schemas/time_window_violations'
description: Статистика по нарушению жестких временных окон.
required:
- locations_limits_penalty
- soft_time_window_violations
- hard_time_window_violations
plan_statistics:
description: 'Общая статистика по результату расчета.
'
type: object
additionalProperties: false
nullable: true
properties:
total_statistics:
$ref: '#/components/schemas/general_statistics'
trips_statistics:
$ref: '#/components/schemas/trip_statistics_list'
locations_statistics:
$ref: '#/components/schemas/location_statistics_list'
task_statistics:
$ref: '#/components/schemas/task_statistics'
quality:
$ref: '#/components/schemas/quality'
required:
- total_statistics
- trips_statistics
- locations_statistics
- task_statistics
- quality
item_keys:
description: Список ключей сущностей.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
description: Ключ, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: essence_key_01
item_keys_count:
description: Количество сущностей.
type: integer
format: int32
minimum: 0
maximum: 15001
default: 0
example: 99
unplanned_items:
description: Информация о незапланированных сущностях.
type: object
additionalProperties: false
properties:
order_keys:
$ref: '#/components/schemas/item_keys'
description: Список ключей незапланированных заказов.
order_keys_count:
$ref: '#/components/schemas/item_keys_count'
description: Количество незапланированных заказов.
performer_keys:
$ref: '#/components/schemas/item_keys'
description: Список ключей исполнителей, не участвующих ни в одном рейсе.
performer_keys_count:
$ref: '#/components/schemas/item_keys_count'
description: Количество незапланированных исполнителей.
transport_keys:
$ref: '#/components/schemas/item_keys'
description: Список ключей транспорта, не участвующих ни в одном рейсе.
transport_keys_count:
$ref: '#/components/schemas/item_keys_count'
description: Количество незапланированного транспорта.
hardlink_keys:
$ref: '#/components/schemas/item_keys'
description: Список ключей назначений, не участвующих ни в одном рейсе.
hardlink_keys_count:
$ref: '#/components/schemas/item_keys_count'
description: Количество незапланированных назначений.
removed_items:
description: Информация о удаленных сущностях.
type: object
additionalProperties: false
properties:
location_keys:
$ref: '#/components/schemas/item_keys'
description: Список ключей удаленных локаций.
location_keys_count:
$ref: '#/components/schemas/item_keys_count'
description: Количество удаленных локаций.
order_keys:
$ref: '#/components/schemas/item_keys'
description: Список ключей удаленных заказов.
order_keys_count:
$ref: '#/components/schemas/item_keys_count'
description: Количество удаленных заказов.
performer_keys:
$ref: '#/components/schemas/item_keys'
description: Список ключей удаленных исполнителей.
performer_keys_count:
$ref: '#/components/schemas/item_keys_count'
description: Количество удаленных исполнителей.
transport_keys:
$ref: '#/components/schemas/item_keys'
description: Список ключей удаленного транспорта.
transport_keys_count:
$ref: '#/components/schemas/item_keys_count'
description: Количество удаленного транспорта.
hardlink_keys:
$ref: '#/components/schemas/item_keys'
description: Список ключей удаленных назначений.
hardlink_keys_count:
$ref: '#/components/schemas/item_keys_count'
description: Количество удаленных назначений.
fact_keys:
$ref: '#/components/schemas/item_keys'
description: Список ключей удаленных фактов.
fact_keys_count:
$ref: '#/components/schemas/item_keys_count'
description: Количество удаленных фактов.
calculation_progress:
description: 'Прогресс расчета в процентах. Прогресс отражает текущее количество
завершенных шагов.
'
type: integer
format: int32
default: 0
minimum: 0
maximum: 100
example: 52
calculation_status:
description: "Статус расчета:\n * `WAITING` - расчет ожидает запуска.\n *\
\ `IN_PROGRESS` - расчет в процессе.\n * `FINISHED_IN_TIME` - расчет корректно\
\ завершился раньше указанного максимального времени.\n * `FINISHED_OUT_OF_TIME`\
\ - расчет завершился, так как закончилось указанное время на расчет, может\
\ влиять на качество результата в худшую сторону.\n * `CANCELED` - расчет\
\ был отменен, так как была получена команда на отмену.\n * `CANCELED_BY_TIMEOUT`\
\ - расчет был отменен автоматически, так как превышено время ожидания в очереди.\n\
\ * `CANCELED_BY_QUOTA` - расчет был отменен, так как квота на этот тип расчета\
\ была превышена.\n * `FAILED` - расчет завершился с ошибкой.\n"
type: string
enum:
- WAITING
- IN_PROGRESS
- FINISHED_IN_TIME
- FINISHED_OUT_OF_TIME
- CANCELED
- CANCELED_BY_TIMEOUT
- CANCELED_BY_QUOTA
- FAILED
example: FINISHED_IN_TIME
calculation_info:
description: Информация о расчете.
type: object
additionalProperties: false
properties:
status:
$ref: '#/components/schemas/calculation_status'
result_version:
description: Версия текущего результата расчета.
type: integer
format: int32
minimum: 0
maximum: 1000000
example: 133
preparing_time:
$ref: '#/components/schemas/time_duration'
description: Время подготовки к расчету (конвертация данных), формат [ISO
8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
business_validation_time:
$ref: '#/components/schemas/time_duration'
description: Время бизнес-проверки данных, формат [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
math_validation_time:
$ref: '#/components/schemas/time_duration'
description: Время математической проверки данных, формат [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
waiting_time:
$ref: '#/components/schemas/time_duration'
description: Время ожидания расчета в очереди, формат [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
calculation_time:
$ref: '#/components/schemas/time_duration'
description: Время фактического расчета, формат [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
required:
- status
- result_version
- preparing_time
- business_validation_time
- math_validation_time
- waiting_time
- calculation_time
plan_result:
description: 'Результат планирования. Может быть промежуточным (в процессе расчета)
и полным (по завершению расчета).
'
type: object
additionalProperties: false
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
trips:
$ref: '#/components/schemas/trip_list'
statistics:
$ref: '#/components/schemas/plan_statistics'
warnings:
$ref: '#/components/schemas/entity_warning_list'
unplanned_items:
$ref: '#/components/schemas/unplanned_items'
removed_items:
$ref: '#/components/schemas/removed_items'
calculation_progress:
$ref: '#/components/schemas/calculation_progress'
calculation_info:
$ref: '#/components/schemas/calculation_info'
required:
- tracedata
- trips
- statistics
- calculation_progress
- calculation_info
calculation_state:
description: Текущее состояние расчета.
type: object
additionalProperties: false
nullable: true
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
calculation_progress:
$ref: '#/components/schemas/calculation_progress'
calculation_info:
$ref: '#/components/schemas/calculation_info'
required:
- tracedata
- calculation_progress
- calculation_info
validate_result:
description: Результат проверки данных.
type: object
additionalProperties: false
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
warnings:
$ref: '#/components/schemas/entity_warning_list'
required:
- tracedata
- warnings
refine_result:
description: 'Результат переработки данных.
'
type: object
additionalProperties: false
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
plan_task:
$ref: '#/components/schemas/plan_task'
warnings:
$ref: '#/components/schemas/entity_warning_list'
removed_items:
$ref: '#/components/schemas/removed_items'
required:
- tracedata
- plan_task
statistics_task:
description: Задача для перерасчета статистики.
type: object
additionalProperties: false
properties:
locations:
description: Список локаций, которые используются в заказах и сменах.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/location'
orders:
description: Список заказов, которые необходимо выполнить.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/order'
performers:
description: 'Список доступных исполнителей. Исполнитель выполняет заказы
используя транспорт.
'
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/performer'
transports:
description: Список доступного транспорта.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/transport'
hardlinks:
$ref: '#/components/schemas/hardlink_list'
trips:
description: 'Список рейсов. Рейс - это совокупность работ, запланированных
на выполнение конкретным исполнителем на конкретном транспорте, выраженных
через [изменение состояний](#section/Opisanie/Model-rejsa) исполнителя.
'
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/trip'
plan_settings:
$ref: '#/components/schemas/plan_settings'
external_routing:
$ref: '#/components/schemas/routing_transport_matrix_list'
dataset_name:
$ref: '#/components/schemas/dataset_name'
required:
- locations
- orders
- performers
- transports
- trips
fact_time:
description: Дата и время создания факта в формате [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6).
type: string
format: date-time
example: '2024-11-21T09:30:00+03:00'
fact_type:
description: "Возможные типы фактов:\n * `NEW_LOCATION` - исполнитель изменил\
\ свое местоположение в процессе выполнения рейса\n * `ORDER_DONE` - исполнитель\
\ закончил выполнять заказ (или заказ был отменен), связанный с заказом груз\
\ более не находится в отсеках транспорта\n * `DEMAND_START` - исполнитель\
\ начал выполнять заявку \n * `DEMAND_DONE` - исполнитель закончил выполнять\
\ заявку\n"
type: string
enum:
- NEW_LOCATION
- ORDER_DONE
- DEMAND_START
- DEMAND_DONE
example: NEW_LOCATION
fact:
description: 'Факт о заказе - совершенное действие с заказом или его частью
(заявкой).
'
type: object
additionalProperties: false
properties:
key:
description: Ключ факта.
type: string
minLength: 1
maxLength: 1024
example: fact_01
time:
$ref: '#/components/schemas/fact_time'
type:
$ref: '#/components/schemas/fact_type'
trip_key:
description: Ключ рейса, к которому относится факт.
type: string
minLength: 1
maxLength: 1024
example: trip_01
order_key:
description: Ключ заказа, обязателен для фактов с типом `ORDER_DONE`.
type: string
minLength: 1
maxLength: 1024
nullable: true
default: null
example: order_01
demand_key:
description: Ключ заявки, обязателен для фактов с типами `DEMAND_DONE` и
`DEMAND_START`.
type: string
minLength: 1
maxLength: 1024
nullable: true
default: null
example: order_01_demand_01
performer_key:
description: Ключ исполнителя, обязателен для фактов с типом `NEW_LOCATION`.
type: string
minLength: 1
maxLength: 1024
nullable: true
default: null
example: performer_01
location_key:
description: Ключ локации, обязателен для фактов с типом `NEW_LOCATION`.
type: string
minLength: 1
maxLength: 1024
nullable: true
default: null
example: location_01
attributes:
$ref: '#/components/schemas/attributes'
required:
- key
- time
- type
- trip_key
fact_list:
description: 'Список фактов. Факт - это произошедшее событие, которое влияет
на дальнейшие выполнение рейсов.
'
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/fact'
actualize_settings:
description: 'Настройки актуализации.
'
type: object
additionalProperties: false
properties:
current_time:
description: 'Указание даты и времени, которое для актуализации будет являться
текущим, в соответствии с [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6). Если
не указано - берется текущее время получения запроса сервером.
'
type: string
format: date-time
nullable: true
example: '2024-11-21T09:30:00+03:00'
max_delay_duration:
description: 'Допустимое опоздание. Влияет на сдвиг правых границ жестких
временных окон заказов и временных окон рабочих смен исполнителей и транспортов.
'
type: string
format: duration
x-custom-format: duration
pattern: ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$
minLength: 3
maxLength: 16
default: PT3H
example: PT1H30M
actualize_task:
description: 'Задача на актуализацию рейсов.
'
type: object
additionalProperties: false
properties:
locations:
description: Список локаций, которые используются в заказах и сменах.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/location'
orders:
description: Список заказов, которые необходимо выполнить.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/order'
performers:
description: 'Список доступных исполнителей. Исполнитель выполняет заказы
используя транспорт.
'
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/performer'
transports:
description: 'Список доступного транспорта. Транспорт используется исполнителем
рейса для выполнения заказов.
'
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/transport'
trips:
description: 'Список рейсов. Рейс - это совокупность работ, запланированных
на выполнение конкретным исполнителем на конкретном транспорте, выраженных
через [изменение состояний](#section/Opisanie/Model-rejsa) исполнителя.
'
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/trip'
facts:
$ref: '#/components/schemas/fact_list'
external_routing:
$ref: '#/components/schemas/routing_transport_matrix_list'
plan_settings:
$ref: '#/components/schemas/plan_settings'
actualize_settings:
$ref: '#/components/schemas/actualize_settings'
dataset_name:
$ref: '#/components/schemas/dataset_name'
required:
- locations
- orders
- performers
- transports
- trips
replan_strategy:
description: Стратегия перепланирования.
type: object
additionalProperties: false
properties:
reorder:
description: Возможность изменять существующий порядок выполнения заказов.
type: boolean
default: false
example: true
plan_new_orders:
description: Возможность планировать новые заказы в существующие или новые
(если включена опция `create_new_trips`) рейсы.
type: boolean
default: false
example: true
create_new_trips:
description: Возможность создавать новые рейсы в дополнение к существующим.
type: boolean
default: false
example: true
replan_settings:
description: Настройки перепланирования.
type: object
additionalProperties: false
properties:
replan_strategy:
$ref: '#/components/schemas/replan_strategy'
replan_task:
description: Задача для перепланирования.
type: object
additionalProperties: false
properties:
locations:
description: Список локаций, которые используются в заказах и сменах.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/location'
orders:
description: Список заказов, которые необходимо выполнить.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/order'
performers:
description: 'Список доступных исполнителей. Исполнитель выполняет заказы
используя транспорт.
'
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/performer'
transports:
description: Список доступного транспорта.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/transport'
hardlinks:
$ref: '#/components/schemas/hardlink_list'
trips:
description: 'Список рейсов. Рейс - это совокупность работ, запланированных
на выполнение конкретным исполнителем на конкретном транспорте, выраженных
через [изменение состояний](#section/Opisanie/Model-rejsa) исполнителя.
'
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/trip'
facts:
$ref: '#/components/schemas/fact_list'
external_routing:
$ref: '#/components/schemas/routing_transport_matrix_list'
plan_settings:
$ref: '#/components/schemas/plan_settings'
actualize_settings:
$ref: '#/components/schemas/actualize_settings'
replan_settings:
$ref: '#/components/schemas/replan_settings'
dataset_name:
$ref: '#/components/schemas/dataset_name'
required:
- locations
- orders
- performers
- transports
- trips
location_list:
description: Список локаций, которые используются в заказах и сменах.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/location'
order_list:
description: Список заказов, которые необходимо выполнить.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/order'
performer_list:
description: 'Список доступных исполнителей. Исполнитель выполняет заказы используя
транспорт.
'
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/performer'
transport_list:
description: 'Список доступного транспорта. Транспорт используется исполнителем
рейса для выполнения заказов.
'
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/transport'
universal_data:
description: 'Формат VRt.Universal JSON. Общий список данных и настроек, объединяет
все данные для планирования, перепланирования и актуализации.
'
type: object
additionalProperties: false
properties:
locations:
$ref: '#/components/schemas/location_list'
orders:
$ref: '#/components/schemas/order_list'
performers:
$ref: '#/components/schemas/performer_list'
transports:
$ref: '#/components/schemas/transport_list'
hardlinks:
$ref: '#/components/schemas/hardlink_list'
trips:
$ref: '#/components/schemas/trip_list'
facts:
$ref: '#/components/schemas/fact_list'
statistics:
$ref: '#/components/schemas/plan_statistics'
external_routing:
$ref: '#/components/schemas/routing_transport_matrix_list'
plan_settings:
$ref: '#/components/schemas/plan_settings'
replan_settings:
$ref: '#/components/schemas/replan_settings'
actualize_settings:
$ref: '#/components/schemas/actualize_settings'
dataset_name:
$ref: '#/components/schemas/dataset_name'
file_xlsx:
description: Файл с данными в формате [XLSX](https://ru.wikipedia.org/wiki/Microsoft_Excel).
type: string
format: byte
general_403:
description: Детализация по ошибке 403.
type: object
additionalProperties: false
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
message:
description: Сообщение об ошибке.
type: string
nullable: true
example: Forbidden
required:
- tracedata
file_text:
description: Файл с данными в текстовом формате.
type: string
check_result:
description: Результат проверки работоспособности сервиса.
type: object
additionalProperties: false
properties:
health:
description: "Текущий показатель здоровья сервиса. \n * `0.0` означает\
\ неготовность сервиса выполнять задачи. \n * `1.0` означает полную\
\ готовность сервиса для выполнения задач.\n"
type: number
format: double
minimum: 0
maximum: 1
example: 0.999
required:
- health
version_result:
description: Версия сервиса.
type: object
additionalProperties: false
properties:
major:
description: "Версия продукта.\nВ рамках одной версии гарантируется совместимость\
\ общих структур данных между сервисами. \nИзменение версии указывает\
\ на несовместимые с предыдущими версиями продукта (и, соответственно,\
\ всех сервисов) изменения.\n"
type: integer
format: int32
minimum: 1
maximum: 100
example: 7
minor:
description: 'Минорная версия сервиса.
Изменение версии указывает на новую функциональность.
Обновление имеет обратную совместимость в рамках мажорной версии сервиса.
'
type: integer
format: int32
minimum: 0
maximum: 111
example: 15
build:
description: "Версия сборки. \nИзменяется при обновлении документации\
\ и исправлении ошибок.\n"
type: string
minLength: 1
maxLength: 64
example: 3754RC
required:
- major
- minor
- build
file_html:
description: Файл с данными в формате [HTML](https://html.spec.whatwg.org/).
type: string
file_json:
description: Файл с данными в формате [JSON](https://www.json.org/).
type: string
examples:
PlanTaskTokyo:
summary: Токио
value:
locations:
- key: location_client_1
geopoint:
latitude: 35.7048259
longitude: 139.7297071
- key: location_client_2
geopoint:
latitude: 35.71861
longitude: 139.7190533
- key: location_client_3
geopoint:
latitude: 35.7099049
longitude: 139.7265958
- key: location_storage
geopoint:
latitude: 35.7042346
longitude: 139.6531996
orders:
- key: order_1
demands:
- key: demand_1_drop
demand_type: DROP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_drop_event
location_key: location_client_1
duration: PT10M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
- key: demand_1_pickup
demand_type: PICKUP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
cargos:
- key: order_1_cargos
capacity:
mass: 1
- key: order_2
demands:
- key: demand_2_drop
demand_type: DROP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_drop_event
location_key: location_client_2
duration: PT10M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
- key: demand_2_pickup
demand_type: PICKUP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
cargos:
- key: order_2_cargos
capacity:
mass: 1
- key: order_3
demands:
- key: demand_3_work
demand_type: WORK
possible_events:
- key: demand_3_work_event
location_key: location_client_3
duration: PT15M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
performers:
- key: performer_1
shifts:
- key: performer_1_shift
availability_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
working_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: PT10H
cost_per_unit: 1
transports:
- key: transport_1
shifts:
- key: transport_1_shift
availability_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: 1000000
cost_per_unit: 0.01
transport_type: CAR
boxes:
- key: box_1
capacity:
mass: 300
plan_settings:
trips_settings:
configuration: optimize_distance
geo_settings:
toll_roads: true
traffic_jams: false
PlanTaskMoscow:
summary: Москва
value:
locations:
- key: location_client_1
geopoint:
latitude: 55.713699
longitude: 37.621839
- key: location_client_2
geopoint:
latitude: 55.630721
longitude: 37.62493
- key: location_client_3
geopoint:
latitude: 55.722801
longitude: 37.674984
- key: location_storage
geopoint:
latitude: 55.685853
longitude: 37.43181
orders:
- key: order_1
demands:
- key: demand_1_drop
demand_type: DROP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_drop_event
location_key: location_client_1
duration: PT10M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
- key: demand_1_pickup
demand_type: PICKUP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
cargos:
- key: order_1_cargos
capacity:
mass: 1
- key: order_2
demands:
- key: demand_2_drop
demand_type: DROP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_drop_event
location_key: location_client_2
duration: PT10M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
- key: demand_2_pickup
demand_type: PICKUP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
cargos:
- key: order_2_cargos
capacity:
mass: 1
- key: order_3
demands:
- key: demand_3_work
demand_type: WORK
possible_events:
- key: demand_3_work_event
location_key: location_client_3
duration: PT15M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
performers:
- key: performer_1
shifts:
- key: performer_1_shift
availability_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
working_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: PT10H
cost_per_unit: 1
transports:
- key: transport_1
shifts:
- key: transport_1_shift
availability_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: 1000000
cost_per_unit: 0.01
transport_type: CAR
boxes:
- key: box_1
capacity:
mass: 300
plan_settings:
trips_settings:
configuration: optimize_distance
geo_settings:
toll_roads: true
traffic_jams: false
PlanTaskDenver:
summary: Денвер
value:
locations:
- key: location_client_1
geopoint:
latitude: 39.7116126
longitude: -104.9145664
- key: location_client_2
geopoint:
latitude: 39.7851755
longitude: -104.9285619
- key: location_client_3
geopoint:
latitude: 39.745829
longitude: -105.0013897
- key: location_storage
geopoint:
latitude: 39.82519
longitude: -105.1185757
orders:
- key: order_1
demands:
- key: demand_1_drop
demand_type: DROP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_drop_event
location_key: location_client_1
duration: PT10M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
- key: demand_1_pickup
demand_type: PICKUP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
cargos:
- key: order_1_cargos
capacity:
mass: 1
- key: order_2
demands:
- key: demand_2_drop
demand_type: DROP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_drop_event
location_key: location_client_2
duration: PT10M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
- key: demand_2_pickup
demand_type: PICKUP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
cargos:
- key: order_2_cargos
capacity:
mass: 1
- key: order_3
demands:
- key: demand_3_work
demand_type: WORK
possible_events:
- key: demand_3_work_event
location_key: location_client_3
duration: PT15M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
performers:
- key: performer_1
shifts:
- key: performer_1_shift
availability_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
working_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: PT10H
cost_per_unit: 1
transports:
- key: transport_1
shifts:
- key: transport_1_shift
availability_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: 1000000
cost_per_unit: 0.01
transport_type: CAR
boxes:
- key: box_1
capacity:
mass: 300
plan_settings:
trips_settings:
configuration: optimize_distance
geo_settings:
toll_roads: true
traffic_jams: false
PlanTaskBerlin:
summary: Берлин
value:
locations:
- key: location_client_1
geopoint:
latitude: 52.431792
longitude: 13.3383233
- key: location_client_2
geopoint:
latitude: 52.458667
longitude: 13.3772083
- key: location_client_3
geopoint:
latitude: 52.437161
longitude: 13.4654563
- key: location_storage
geopoint:
latitude: 52.532906
longitude: 13.3431423
orders:
- key: order_1
demands:
- key: demand_1_drop
demand_type: DROP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_drop_event
location_key: location_client_1
duration: PT10M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
- key: demand_1_pickup
demand_type: PICKUP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
cargos:
- key: order_1_cargos
capacity:
mass: 1
- key: order_2
demands:
- key: demand_2_drop
demand_type: DROP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_drop_event
location_key: location_client_2
duration: PT10M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
- key: demand_2_pickup
demand_type: PICKUP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
cargos:
- key: order_2_cargos
capacity:
mass: 1
- key: order_3
demands:
- key: demand_3_work
demand_type: WORK
possible_events:
- key: demand_3_work_event
location_key: location_client_3
duration: PT15M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
performers:
- key: performer_1
shifts:
- key: performer_1_shift
availability_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
working_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: PT10H
cost_per_unit: 1
transports:
- key: transport_1
shifts:
- key: transport_1_shift
availability_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: 1000000
cost_per_unit: 0.01
transport_type: CAR
boxes:
- key: box_1
capacity:
mass: 300
plan_settings:
trips_settings:
configuration: optimize_distance
geo_settings:
toll_roads: true
traffic_jams: false
PlanTaskBeijing:
summary: Пекин
value:
locations:
- key: location_client_1
geopoint:
latitude: 39.873105
longitude: 116.3563913
- key: location_client_2
geopoint:
latitude: 39.929733
longitude: 116.3203273
- key: location_client_3
geopoint:
latitude: 39.9227559
longitude: 116.3260136
- key: location_storage
geopoint:
latitude: 39.904054
longitude: 116.2568843
orders:
- key: order_1
demands:
- key: demand_1_drop
demand_type: DROP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_drop_event
location_key: location_client_1
duration: PT10M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
- key: demand_1_pickup
demand_type: PICKUP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
cargos:
- key: order_1_cargos
capacity:
mass: 1
- key: order_2
demands:
- key: demand_2_drop
demand_type: DROP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_drop_event
location_key: location_client_2
duration: PT10M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
- key: demand_2_pickup
demand_type: PICKUP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
cargos:
- key: order_2_cargos
capacity:
mass: 1
- key: order_3
demands:
- key: demand_3_work
demand_type: WORK
possible_events:
- key: demand_3_work_event
location_key: location_client_3
duration: PT15M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
performers:
- key: performer_1
shifts:
- key: performer_1_shift
availability_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
working_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: PT10H
cost_per_unit: 1
transports:
- key: transport_1
shifts:
- key: transport_1_shift
availability_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: 1000000
cost_per_unit: 0.01
transport_type: CAR
boxes:
- key: box_1
capacity:
mass: 300
plan_settings:
trips_settings:
configuration: optimize_distance
geo_settings:
toll_roads: true
traffic_jams: false
Result400:
summary: Ошибка в данных
value:
tracedata:
process_code: 11111111-2222-3333-4444-555555555555
request_code: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
username: example_username
company: example_company
env: edge7
pod: aaaaaaaa-2222-cccc-4444-eeeeeeeeeeee
service: UNIVERSAL
operation: run_plan_calculation
time: '2024-11-28T17:13:27.945583194Z'
message: logical
schema_errors: []
logical_errors:
- type: UNIQUE_IDS_VIOLATION
entities:
- entity_key: order_1
entity_type: ORDER
warnings: []
PlanResultTokyo:
summary: Токио
value:
tracedata:
process_code: 11111111-2222-3333-4444-555555555555
request_code: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
username: example_username
company: example_company
env: edge7
pod: aaaaaaaa-2222-cccc-4444-eeeeeeeeeeee
service: UNIVERSAL
operation: run_plan_calculation
time: '2024-11-01T11:50:15.123Z'
trips:
- key: 018fcd54-adda-4463-8a24-0f253264223f-performer_1_shift
performer:
performer_key: performer_1
shift_key: performer_1_shift
shift_time:
from: '2024-11-08T04:42:23Z'
to: '2024-11-08T05:40:11Z'
transport:
transport_key: transport_1
shift_key: transport_1_shift
shift_time:
from: '2024-11-08T04:42:23Z'
to: '2024-11-08T05:40:11Z'
states:
- time: '2024-11-08T04:42:23Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:42:23Z'
flags:
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_LOCATION_WINDOW
- ON_DEMAND
order_key: order_1
demand_key: demand_1_pickup
event_key: demand_1_pickup_event
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:42:23Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:42:23Z'
flags:
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_LOCATION_WINDOW
- ON_DEMAND
order_key: order_2
demand_key: demand_2_pickup
event_key: demand_2_pickup_event
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:42:23Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:42:23Z'
flags:
- AROUND_LOCATION
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:42:23Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- AROUND_LOCATION
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_LOCATION_WINDOW
- ON_DEMAND
order_key: order_2
demand_key: demand_2_drop
event_key: demand_2_drop_event
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: REMOVE
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- AROUND_LOCATION
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:13:23Z'
flags:
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:13:23Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:13:23Z'
flags:
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_LOCATION_WINDOW
- ON_DEMAND
order_key: order_3
demand_key: demand_3_work
event_key: demand_3_work_event
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:28:23Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:28:23Z'
flags:
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:28:23Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:30:11Z'
flags:
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:30:11Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:30:11Z'
flags:
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_LOCATION_WINDOW
- ON_DEMAND
order_key: order_1
demand_key: demand_1_drop
event_key: demand_1_drop_event
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:40:11Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: REMOVE
attributes: []
name: 1-HVFB
waitlist: []
attributes: []
statistics:
total_statistics:
cost: 5547.805
reward: 3000.3
profit: 0
measurements:
time_window:
from: '2024-11-08T04:42:23Z'
to: '2024-11-08T05:40:11Z'
driving_time: PT22M48S
waiting_time: PT0S
working_time: PT35M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT57M48S
distance: 7980
trips_count: 1
performers_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
stops_count: 4
locations_count: 4
cargo_capacity_sum:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
cargo_capacity_ratio:
mass: 0.007
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transport_load:
mass: 0.007
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
average_speed: 7.98
round_trips_count: 1
trips_statistics:
- trip_key: 018fcd54-adda-4463-8a24-0f253264223f-performer_1_shift
general_statistics:
cost: 5547.805
reward: 3000.3
profit: -2547.505
measurements:
time_window:
from: '2024-11-08T04:42:23Z'
to: '2024-11-08T05:40:11Z'
driving_time: PT22M48S
waiting_time: PT0S
working_time: PT35M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT57M48S
distance: 7980
trips_count: 1
performers_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
stops_count: 4
locations_count: 4
cargo_capacity_sum:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
cargo_capacity_ratio:
mass: 0.007
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
max_transport_load:
mass: 0.007
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
average_speed: 7.98
round_trips_count: 1
load_statistics:
total_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transfer_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
stop_statistics:
- location_key: location_storage
stop_demands:
- demand_key: demand_1_pickup
event_key: demand_1_pickup_event
demand_time_window:
from: '2024-11-08T04:42:23Z'
to: '2024-11-08T04:42:23Z'
- demand_key: demand_2_pickup
event_key: demand_2_pickup_event
demand_time_window:
from: '2024-11-08T04:42:23Z'
to: '2024-11-08T04:42:23Z'
stop_time_window:
from: '2024-11-08T04:42:23Z'
to: '2024-11-08T04:42:23Z'
measurements:
time_window:
from: '2024-11-08T04:42:23Z'
to: '2024-11-08T04:42:23Z'
driving_time: PT0S
waiting_time: PT0S
working_time: PT0S
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT0S
distance: 0
upload:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_2
stop_demands:
- demand_key: demand_2_drop
event_key: demand_2_drop_event
demand_time_window:
from: '2024-11-08T05:00:00Z'
to: '2024-11-08T05:10:00Z'
stop_time_window:
from: '2024-11-08T05:00:00Z'
to: '2024-11-08T05:10:00Z'
measurements:
time_window:
from: '2024-11-08T04:42:23Z'
to: '2024-11-08T05:10:00Z'
driving_time: PT17M37S
waiting_time: PT0S
working_time: PT10M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT27M37S
distance: 6164
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_3
stop_demands:
- demand_key: demand_3_work
event_key: demand_3_work_event
demand_time_window:
from: '2024-11-08T05:13:23Z'
to: '2024-11-08T05:28:23Z'
stop_time_window:
from: '2024-11-08T05:13:23Z'
to: '2024-11-08T05:28:23Z'
measurements:
time_window:
from: '2024-11-08T05:10:00Z'
to: '2024-11-08T05:28:23Z'
driving_time: PT3M23S
waiting_time: PT0S
working_time: PT15M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT18M23S
distance: 1185
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_1
stop_demands:
- demand_key: demand_1_drop
event_key: demand_1_drop_event
demand_time_window:
from: '2024-11-08T05:30:11Z'
to: '2024-11-08T05:40:11Z'
stop_time_window:
from: '2024-11-08T05:30:11Z'
to: '2024-11-08T05:40:11Z'
measurements:
time_window:
from: '2024-11-08T05:28:23Z'
to: '2024-11-08T05:40:11Z'
driving_time: PT1M48S
waiting_time: PT0S
working_time: PT10M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT11M48S
distance: 631
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
locations_statistics: []
task_statistics:
planning_horizon:
from: '2024-11-07T21:00:00Z'
to: '2024-11-08T21:00:59Z'
quality:
locations_limits_penalty: 0
soft_time_window_violations:
before:
demand_keys: []
count: 0
after:
demand_keys: []
count: 0
hard_time_window_violations:
before:
demand_keys: []
count: 0
after:
demand_keys: []
count: 0
calculation_progress: 100
calculation_info:
status: FINISHED_IN_TIME
result_version: 106
preparing_time: PT0S
business_validation_time: PT0S
math_validation_time: PT0S
waiting_time: PT3.04S
calculation_time: PT1.012S
warnings: []
unplanned_items:
order_keys: []
order_keys_count: 0
performer_keys: []
performer_keys_count: 0
transport_keys: []
transport_keys_count: 0
hardlink_keys: []
hardlink_keys_count: 0
PlanResultMoscow:
summary: Москва
value:
tracedata:
process_code: 11111111-2222-3333-4444-555555555555
request_code: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
username: example_username
company: example_company
env: edge7
pod: aaaaaaaa-2222-cccc-4444-eeeeeeeeeeee
service: UNIVERSAL
operation: run_plan_calculation
time: '2024-11-28T17:06:33.856Z'
trips:
- key: abe7f131-cd62-47da-ab31-5a41c687c3c3-performer_1_shift
performer:
performer_key: performer_1
shift_key: performer_1_shift
shift_time:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T05:53:49Z'
transport:
transport_key: transport_1
shift_key: transport_1_shift
shift_time:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T05:53:49Z'
states:
- time: '2024-11-08T04:39:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions: []
distance: 0
cost: 2000
reward: 0
attributes: []
- time: '2024-11-08T04:39:34Z'
flags:
- ON_DEMAND
- INSIDE_LOCATION
- INSIDE_LOCATION_WINDOW
- INSIDE_EVENT_HARD_WINDOW
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_pickup
event_key: demand_1_pickup_event
location_key: location_storage
cargo_actions: []
distance: 0
cost: 2000
reward: 0
attributes: []
- time: '2024-11-08T04:39:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
distance: 0
cost: 2000
reward: 0
attributes: []
- time: '2024-11-08T04:39:34Z'
flags:
- ON_DEMAND
- INSIDE_LOCATION
- INSIDE_LOCATION_WINDOW
- INSIDE_EVENT_HARD_WINDOW
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_pickup
event_key: demand_2_pickup_event
location_key: location_storage
cargo_actions: []
distance: 0
cost: 2000
reward: 0
attributes: []
- time: '2024-11-08T04:39:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
distance: 0
cost: 2000
reward: 0
attributes: []
- time: '2024-11-08T04:39:34Z'
flags:
- DEPARTURE
- AROUND_LOCATION
location_key: location_storage
cargo_actions: []
distance: 0
cost: 2000
reward: 0
attributes: []
- time: '2024-11-08T04:39:34Z'
flags:
- RELOCATING
cargo_actions: []
distance: 0
cost: 2000
reward: 0
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- ARRIVAL
- AROUND_LOCATION
location_key: location_client_2
cargo_actions: []
distance: 17110
cost: 3397.1
reward: 0
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_actions: []
distance: 17110
cost: 3397.1
reward: 0
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- ON_DEMAND
- INSIDE_LOCATION
- INSIDE_LOCATION_WINDOW
- INSIDE_EVENT_HARD_WINDOW
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_drop
event_key: demand_2_drop_event
location_key: location_client_2
cargo_actions: []
distance: 17110
cost: 3397.1
reward: 0
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: REMOVE
distance: 17110
cost: 3997.1
reward: 1000.1
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- DEPARTURE
- AROUND_LOCATION
location_key: location_client_2
cargo_actions: []
distance: 17110
cost: 3997.1
reward: 1000.1
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- RELOCATING
cargo_actions: []
distance: 17110
cost: 3997.1
reward: 1000.1
attributes: []
- time: '2024-11-08T05:20:56Z'
flags:
- ARRIVAL
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
distance: 27007
cost: 4752.07
reward: 1000.1
attributes: []
- time: '2024-11-08T05:20:56Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
distance: 27007
cost: 4752.07
reward: 1000.1
attributes: []
- time: '2024-11-08T05:20:56Z'
flags:
- ON_DEMAND
- INSIDE_LOCATION
- INSIDE_LOCATION_WINDOW
- INSIDE_EVENT_HARD_WINDOW
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_drop
event_key: demand_1_drop_event
location_key: location_client_1
cargo_actions: []
distance: 27007
cost: 4752.07
reward: 1000.1
attributes: []
- time: '2024-11-08T05:30:56Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: REMOVE
distance: 27007
cost: 5352.07
reward: 2000.2
attributes: []
- time: '2024-11-08T05:30:56Z'
flags:
- DEPARTURE
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
distance: 27007
cost: 5352.07
reward: 2000.2
attributes: []
- time: '2024-11-08T05:30:56Z'
flags:
- RELOCATING
cargo_actions: []
distance: 27007
cost: 5352.07
reward: 2000.2
attributes: []
- time: '2024-11-08T05:38:49Z'
flags:
- ARRIVAL
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
distance: 34037
cost: 5895.37
reward: 2000.2
attributes: []
- time: '2024-11-08T05:38:49Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
distance: 34037
cost: 5895.37
reward: 2000.2
attributes: []
- time: '2024-11-08T05:38:49Z'
flags:
- ON_DEMAND
- INSIDE_LOCATION
- INSIDE_LOCATION_WINDOW
- INSIDE_EVENT_HARD_WINDOW
- AROUND_LOCATION
order_key: order_3
demand_key: demand_3_work
event_key: demand_3_work_event
location_key: location_client_3
cargo_actions: []
distance: 34037
cost: 5895.37
reward: 2000.2
attributes: []
- time: '2024-11-08T05:53:49Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
distance: 34037
cost: 6795.37
reward: 3000.3
attributes: []
name: 1-HVFB
waitlist: []
attributes: []
statistics:
total_statistics:
cost: 6795.37
reward: 3000.3
profit: -3795.07
measurements:
time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T05:53:49Z'
driving_time: PT39M15S
waiting_time: PT0S
working_time: PT35M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H14M15S
distance: 34037
trips_count: 1
performers_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
stops_count: 4
locations_count: 4
cargo_capacity_sum:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
cargo_capacity_ratio:
mass: 0.007
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transport_load:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
average_speed: 0
round_trips_count: 1
trips_statistics:
- trip_key: abe7f131-cd62-47da-ab31-5a41c687c3c3-performer_1_shift
general_statistics:
cost: 6795.37
reward: 3000.3
profit: -3795.07
measurements:
time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T05:53:49Z'
driving_time: PT39M15S
waiting_time: PT0S
working_time: PT35M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H14M15S
distance: 34037
trips_count: 1
performers_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
stops_count: 4
locations_count: 4
cargo_capacity_sum:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
cargo_capacity_ratio:
mass: 0.007
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
max_transport_load:
mass: 0.007
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
average_speed: 0
round_trips_count: 1
load_statistics:
total_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transfer_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
stop_statistics:
- location_key: location_storage
stop_demands:
- demand_key: demand_1_pickup
event_key: demand_1_pickup_event
demand_time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T04:39:34Z'
- demand_key: demand_2_pickup
event_key: demand_2_pickup_event
demand_time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T04:39:34Z'
stop_time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T04:39:34Z'
measurements:
time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T04:39:34Z'
driving_time: PT0S
waiting_time: PT0S
working_time: PT0S
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT0S
distance: 0
upload:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_2
stop_demands:
- demand_key: demand_2_drop
event_key: demand_2_drop_event
demand_time_window:
from: '2024-11-08T05:00:00Z'
to: '2024-11-08T05:10:00Z'
stop_time_window:
from: '2024-11-08T05:00:00Z'
to: '2024-11-08T05:10:00Z'
measurements:
time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T05:10:00Z'
driving_time: PT20M26S
waiting_time: PT0S
working_time: PT10M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT30M26S
distance: 17110
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_1
stop_demands:
- demand_key: demand_1_drop
event_key: demand_1_drop_event
demand_time_window:
from: '2024-11-08T05:20:56Z'
to: '2024-11-08T05:30:56Z'
stop_time_window:
from: '2024-11-08T05:20:56Z'
to: '2024-11-08T05:30:56Z'
measurements:
time_window:
from: '2024-11-08T05:10:00Z'
to: '2024-11-08T05:30:56Z'
driving_time: PT10M56S
waiting_time: PT0S
working_time: PT10M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT20M56S
distance: 9897
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_3
stop_demands:
- demand_key: demand_3_work
event_key: demand_3_work_event
demand_time_window:
from: '2024-11-08T05:38:49Z'
to: '2024-11-08T05:53:49Z'
stop_time_window:
from: '2024-11-08T05:38:49Z'
to: '2024-11-08T05:53:49Z'
measurements:
time_window:
from: '2024-11-08T05:30:56Z'
to: '2024-11-08T05:53:49Z'
driving_time: PT7M53S
waiting_time: PT0S
working_time: PT15M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT22M53S
distance: 7030
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
locations_statistics: []
task_statistics:
planning_horizon:
from: '2024-11-07T21:00:00Z'
to: '2024-11-08T21:00:59Z'
quality:
locations_limits_penalty: 0
soft_time_window_violations:
before:
demand_keys: []
count: 0
after:
demand_keys: []
count: 0
hard_time_window_violations:
before:
demand_keys: []
count: 0
after:
demand_keys: []
count: 0
calculation_progress: 100
calculation_info:
status: FINISHED_IN_TIME
result_version: 106
preparing_time: PT0.022S
business_validation_time: PT0.004S
math_validation_time: PT0S
waiting_time: PT3.01S
calculation_time: PT1.01S
warnings: []
unplanned_items:
order_keys: []
order_keys_count: 0
performer_keys: []
performer_keys_count: 0
transport_keys: []
transport_keys_count: 0
hardlink_keys: []
hardlink_keys_count: 0
removed_items:
location_keys: []
location_keys_count: 0
order_keys: []
order_keys_count: 0
performer_keys: []
performer_keys_count: 0
transport_keys: []
transport_keys_count: 0
hardlink_keys: []
hardlink_keys_count: 0
fact_keys: []
fact_keys_count: 0
PlanResultDenver:
summary: Денвер
value:
tracedata:
process_code: 11111111-2222-3333-4444-555555555555
request_code: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
username: example_username
company: example_company
env: edge7
pod: aaaaaaaa-2222-cccc-4444-eeeeeeeeeeee
service: UNIVERSAL
operation: run_plan_calculation
time: '2024-11-01T11:50:15.123Z'
trips:
- key: 79ffbe44-ce64-4559-9f94-6618bfa588a1-performer_1_shift
performer:
performer_key: performer_1
shift_key: performer_1_shift
shift_time:
from: '2024-11-08T04:21:49Z'
to: '2024-11-08T06:20:24Z'
transport:
transport_key: transport_1
shift_key: transport_1_shift
shift_time:
from: '2024-11-08T04:21:49Z'
to: '2024-11-08T06:20:24Z'
states:
- time: '2024-11-08T04:21:49Z'
flags:
- AROUND_LOCATION
- INSIDE_LOCATION
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:21:49Z'
flags:
- ON_DEMAND
- AROUND_LOCATION
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- INSIDE_EVENT_HARD_WINDOW
order_key: order_2
demand_key: demand_2_pickup
event_key: demand_2_pickup_event
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:21:49Z'
flags:
- AROUND_LOCATION
- INSIDE_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:21:49Z'
flags:
- ON_DEMAND
- AROUND_LOCATION
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- INSIDE_EVENT_HARD_WINDOW
order_key: order_1
demand_key: demand_1_pickup
event_key: demand_1_pickup_event
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:21:49Z'
flags:
- AROUND_LOCATION
- INSIDE_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:21:49Z'
flags:
- AROUND_LOCATION
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:21:49Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- AROUND_LOCATION
- INSIDE_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- ON_DEMAND
- AROUND_LOCATION
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- INSIDE_EVENT_HARD_WINDOW
order_key: order_3
demand_key: demand_3_work
event_key: demand_3_work_event
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:15:00Z'
flags:
- AROUND_LOCATION
- INSIDE_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:15:00Z'
flags:
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:15:00Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:36:45Z'
flags:
- AROUND_LOCATION
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:36:45Z'
flags:
- AROUND_LOCATION
- INSIDE_LOCATION
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:36:45Z'
flags:
- ON_DEMAND
- AROUND_LOCATION
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- INSIDE_EVENT_HARD_WINDOW
order_key: order_2
demand_key: demand_2_drop
event_key: demand_2_drop_event
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:46:45Z'
flags:
- AROUND_LOCATION
- INSIDE_LOCATION
location_key: location_client_2
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: REMOVE
attributes: []
- time: '2024-11-08T05:46:45Z'
flags:
- AROUND_LOCATION
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:46:45Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T06:10:24Z'
flags:
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T06:10:24Z'
flags:
- AROUND_LOCATION
- INSIDE_LOCATION
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T06:10:24Z'
flags:
- ON_DEMAND
- AROUND_LOCATION
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- INSIDE_EVENT_HARD_WINDOW
order_key: order_1
demand_key: demand_1_drop
event_key: demand_1_drop_event
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T06:20:24Z'
flags:
- AROUND_LOCATION
- INSIDE_LOCATION
location_key: location_client_1
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: REMOVE
attributes: []
name: 1-HVFB
waitlist: []
attributes: []
statistics:
total_statistics:
cost: 9407.674
reward: 3000.3
profit: 0
measurements:
time_window:
from: '2024-11-08T04:21:49Z'
to: '2024-11-08T06:20:24Z'
driving_time: PT1H23M35S
waiting_time: PT0S
working_time: PT35M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H58M35S
distance: 29255
trips_count: 1
performers_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
stops_count: 4
locations_count: 4
cargo_capacity_sum:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
cargo_capacity_ratio:
mass: 0.007
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transport_load:
mass: 0.007
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
average_speed: 29.255
round_trips_count: 1
trips_statistics:
- trip_key: 79ffbe44-ce64-4559-9f94-6618bfa588a1-performer_1_shift
general_statistics:
cost: 9407.674
reward: 3000.3
profit: -6407.374
measurements:
time_window:
from: '2024-11-08T04:21:49Z'
to: '2024-11-08T06:20:24Z'
driving_time: PT1H23M35S
waiting_time: PT0S
working_time: PT35M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H58M35S
distance: 29255
trips_count: 1
performers_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
stops_count: 4
locations_count: 4
cargo_capacity_sum:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
cargo_capacity_ratio:
mass: 0.007
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
max_transport_load:
mass: 0.007
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
average_speed: 29.255
round_trips_count: 1
load_statistics:
total_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transfer_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
stop_statistics:
- location_key: location_storage
stop_demands:
- demand_key: demand_2_pickup
event_key: demand_2_pickup_event
demand_time_window:
from: '2024-11-08T04:21:49Z'
to: '2024-11-08T04:21:49Z'
- demand_key: demand_1_pickup
event_key: demand_1_pickup_event
demand_time_window:
from: '2024-11-08T04:21:49Z'
to: '2024-11-08T04:21:49Z'
stop_time_window:
from: '2024-11-08T04:21:49Z'
to: '2024-11-08T04:21:49Z'
measurements:
time_window:
from: '2024-11-08T04:21:49Z'
to: '2024-11-08T04:21:49Z'
driving_time: PT0S
waiting_time: PT0S
working_time: PT0S
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT0S
distance: 0
upload:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_3
stop_demands:
- demand_key: demand_3_work
event_key: demand_3_work_event
demand_time_window:
from: '2024-11-08T05:00:00Z'
to: '2024-11-08T05:15:00Z'
stop_time_window:
from: '2024-11-08T05:00:00Z'
to: '2024-11-08T05:15:00Z'
measurements:
time_window:
from: '2024-11-08T04:21:49Z'
to: '2024-11-08T05:15:00Z'
driving_time: PT38M11S
waiting_time: PT0S
working_time: PT15M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT53M11S
distance: 13362
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_2
stop_demands:
- demand_key: demand_2_drop
event_key: demand_2_drop_event
demand_time_window:
from: '2024-11-08T05:36:45Z'
to: '2024-11-08T05:46:45Z'
stop_time_window:
from: '2024-11-08T05:36:45Z'
to: '2024-11-08T05:46:45Z'
measurements:
time_window:
from: '2024-11-08T05:15:00Z'
to: '2024-11-08T05:46:45Z'
driving_time: PT21M45S
waiting_time: PT0S
working_time: PT10M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT31M45S
distance: 7617
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_1
stop_demands:
- demand_key: demand_1_drop
event_key: demand_1_drop_event
demand_time_window:
from: '2024-11-08T06:10:24Z'
to: '2024-11-08T06:20:24Z'
stop_time_window:
from: '2024-11-08T06:10:24Z'
to: '2024-11-08T06:20:24Z'
measurements:
time_window:
from: '2024-11-08T05:46:45Z'
to: '2024-11-08T06:20:24Z'
driving_time: PT23M39S
waiting_time: PT0S
working_time: PT10M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT33M39S
distance: 8276
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
locations_statistics: []
task_statistics:
planning_horizon:
from: '2024-11-07T21:00:00Z'
to: '2024-11-08T21:00:59Z'
quality:
locations_limits_penalty: 0
soft_time_window_violations:
before:
demand_keys: []
count: 0
after:
demand_keys: []
count: 0
hard_time_window_violations:
before:
demand_keys: []
count: 0
after:
demand_keys: []
count: 0
calculation_progress: 100
calculation_info:
status: FINISHED_IN_TIME
result_version: 106
preparing_time: PT0S
business_validation_time: PT0S
math_validation_time: PT0S
waiting_time: PT3.019S
calculation_time: PT1.02S
warnings: []
unplanned_items:
order_keys: []
order_keys_count: 0
performer_keys: []
performer_keys_count: 0
transport_keys: []
transport_keys_count: 0
hardlink_keys: []
hardlink_keys_count: 0
PlanResultBerlin:
summary: Берлин
value:
tracedata:
process_code: 11111111-2222-3333-4444-555555555555
request_code: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
username: example_username
company: example_company
env: edge7
pod: aaaaaaaa-2222-cccc-4444-eeeeeeeeeeee
service: UNIVERSAL
operation: run_plan_calculation
time: '2024-11-01T11:50:15.123Z'
trips:
- key: 93e27ec5-3d4c-4f3e-9b6d-c028d16f7397-performer_1_shift
performer:
performer_key: performer_1
shift_key: performer_1_shift
shift_time:
from: '2024-11-08T04:35:29Z'
to: '2024-11-08T06:11:06Z'
transport:
transport_key: transport_1
shift_key: transport_1_shift
shift_time:
from: '2024-11-08T04:35:29Z'
to: '2024-11-08T06:11:06Z'
states:
- time: '2024-11-08T04:35:29Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:35:29Z'
flags:
- ON_DEMAND
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_EVENT_HARD_WINDOW
order_key: order_2
demand_key: demand_2_pickup
event_key: demand_2_pickup_event
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:35:29Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:35:29Z'
flags:
- ON_DEMAND
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_EVENT_HARD_WINDOW
order_key: order_1
demand_key: demand_1_pickup
event_key: demand_1_pickup_event
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:35:29Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:35:29Z'
flags:
- AROUND_LOCATION
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:35:29Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- AROUND_LOCATION
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- ON_DEMAND
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_EVENT_HARD_WINDOW
order_key: order_2
demand_key: demand_2_drop
event_key: demand_2_drop_event
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: REMOVE
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- AROUND_LOCATION
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:21:23Z'
flags:
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:21:23Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:21:23Z'
flags:
- ON_DEMAND
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_EVENT_HARD_WINDOW
order_key: order_1
demand_key: demand_1_drop
event_key: demand_1_drop_event
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:31:23Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: REMOVE
attributes: []
- time: '2024-11-08T05:31:23Z'
flags:
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:31:23Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:56:06Z'
flags:
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:56:06Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:56:06Z'
flags:
- ON_DEMAND
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_EVENT_HARD_WINDOW
order_key: order_3
demand_key: demand_3_work
event_key: demand_3_work_event
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T06:11:06Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
name: 1-HVFB
waitlist: []
attributes: []
statistics:
total_statistics:
cost: 7949.65
reward: 3000.3
profit: 0
measurements:
time_window:
from: '2024-11-08T04:35:29Z'
to: '2024-11-08T06:11:06Z'
driving_time: PT1H37S
waiting_time: PT0S
working_time: PT35M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H35M37S
distance: 21219
trips_count: 1
performers_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
stops_count: 4
locations_count: 4
cargo_capacity_sum:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
cargo_capacity_ratio:
mass: 0.007
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transport_load:
mass: 0.007
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
average_speed: 21.219
round_trips_count: 1
trips_statistics:
- trip_key: 93e27ec5-3d4c-4f3e-9b6d-c028d16f7397-performer_1_shift
general_statistics:
cost: 7949.65
reward: 3000.3
profit: -4949.35
measurements:
time_window:
from: '2024-11-08T04:35:29Z'
to: '2024-11-08T06:11:06Z'
driving_time: PT1H37S
waiting_time: PT0S
working_time: PT35M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H35M37S
distance: 21219
trips_count: 1
performers_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
stops_count: 4
locations_count: 4
cargo_capacity_sum:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
cargo_capacity_ratio:
mass: 0.007
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
max_transport_load:
mass: 0.007
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
average_speed: 21.219
round_trips_count: 1
load_statistics:
total_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transfer_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
stop_statistics:
- location_key: location_storage
stop_demands:
- demand_key: demand_2_pickup
event_key: demand_2_pickup_event
demand_time_window:
from: '2024-11-08T04:35:29Z'
to: '2024-11-08T04:35:29Z'
- demand_key: demand_1_pickup
event_key: demand_1_pickup_event
demand_time_window:
from: '2024-11-08T04:35:29Z'
to: '2024-11-08T04:35:29Z'
stop_time_window:
from: '2024-11-08T04:35:29Z'
to: '2024-11-08T04:35:29Z'
measurements:
time_window:
from: '2024-11-08T04:35:29Z'
to: '2024-11-08T04:35:29Z'
driving_time: PT0S
waiting_time: PT0S
working_time: PT0S
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT0S
distance: 0
upload:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_2
stop_demands:
- demand_key: demand_2_drop
event_key: demand_2_drop_event
demand_time_window:
from: '2024-11-08T05:00:00Z'
to: '2024-11-08T05:10:00Z'
stop_time_window:
from: '2024-11-08T05:00:00Z'
to: '2024-11-08T05:10:00Z'
measurements:
time_window:
from: '2024-11-08T04:35:29Z'
to: '2024-11-08T05:10:00Z'
driving_time: PT24M31S
waiting_time: PT0S
working_time: PT10M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT34M31S
distance: 8581
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_1
stop_demands:
- demand_key: demand_1_drop
event_key: demand_1_drop_event
demand_time_window:
from: '2024-11-08T05:21:23Z'
to: '2024-11-08T05:31:23Z'
stop_time_window:
from: '2024-11-08T05:21:23Z'
to: '2024-11-08T05:31:23Z'
measurements:
time_window:
from: '2024-11-08T05:10:00Z'
to: '2024-11-08T05:31:23Z'
driving_time: PT11M23S
waiting_time: PT0S
working_time: PT10M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT21M23S
distance: 3989
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_3
stop_demands:
- demand_key: demand_3_work
event_key: demand_3_work_event
demand_time_window:
from: '2024-11-08T05:56:06Z'
to: '2024-11-08T06:11:06Z'
stop_time_window:
from: '2024-11-08T05:56:06Z'
to: '2024-11-08T06:11:06Z'
measurements:
time_window:
from: '2024-11-08T05:31:23Z'
to: '2024-11-08T06:11:06Z'
driving_time: PT24M43S
waiting_time: PT0S
working_time: PT15M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT39M43S
distance: 8649
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
locations_statistics: []
task_statistics:
planning_horizon:
from: '2024-11-07T21:00:00Z'
to: '2024-11-08T21:00:59Z'
quality:
locations_limits_penalty: 0
soft_time_window_violations:
before:
demand_keys: []
count: 0
after:
demand_keys: []
count: 0
hard_time_window_violations:
before:
demand_keys: []
count: 0
after:
demand_keys: []
count: 0
calculation_progress: 100
calculation_info:
status: FINISHED_IN_TIME
result_version: 106
preparing_time: PT0S
business_validation_time: PT0S
math_validation_time: PT0S
waiting_time: PT3.02S
calculation_time: PT1.012S
warnings: []
unplanned_items:
order_keys: []
order_keys_count: 0
performer_keys: []
performer_keys_count: 0
transport_keys: []
transport_keys_count: 0
hardlink_keys: []
hardlink_keys_count: 0
PlanResultBeijing:
summary: Пекин
value:
tracedata:
process_code: 11111111-2222-3333-4444-555555555555
request_code: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
username: example_username
company: example_company
env: edge7
pod: aaaaaaaa-2222-cccc-4444-eeeeeeeeeeee
service: UNIVERSAL
operation: run_plan_calculation
time: '2024-11-01T11:50:15.123Z'
trips:
- key: 252f9b58-44d1-4482-8e35-36af9308e7a4-performer_1_shift
performer:
performer_key: performer_1
shift_key: performer_1_shift
shift_time:
from: '2024-11-08T04:42:30Z'
to: '2024-11-08T05:55:03Z'
transport:
transport_key: transport_1
shift_key: transport_1_shift
shift_time:
from: '2024-11-08T04:42:30Z'
to: '2024-11-08T05:55:03Z'
states:
- time: '2024-11-08T04:42:30Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:42:30Z'
flags:
- ON_DEMAND
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_EVENT_HARD_WINDOW
order_key: order_1
demand_key: demand_1_pickup
event_key: demand_1_pickup_event
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:42:30Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:42:30Z'
flags:
- ON_DEMAND
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_EVENT_HARD_WINDOW
order_key: order_2
demand_key: demand_2_pickup
event_key: demand_2_pickup_event
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:42:30Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:42:30Z'
flags:
- AROUND_LOCATION
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:42:30Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- AROUND_LOCATION
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- ON_DEMAND
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_EVENT_HARD_WINDOW
order_key: order_2
demand_key: demand_2_drop
event_key: demand_2_drop_event
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: REMOVE
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- AROUND_LOCATION
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:12:37Z'
flags:
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:12:37Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:12:37Z'
flags:
- ON_DEMAND
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_EVENT_HARD_WINDOW
order_key: order_3
demand_key: demand_3_work
event_key: demand_3_work_event
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:27:37Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:27:37Z'
flags:
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:27:37Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:45:03Z'
flags:
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:45:03Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:45:03Z'
flags:
- ON_DEMAND
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_EVENT_HARD_WINDOW
order_key: order_1
demand_key: demand_1_drop
event_key: demand_1_drop_event
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:55:03Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: REMOVE
attributes: []
name: 1-HVFB
waitlist: []
attributes: []
statistics:
total_statistics:
cost: 6485.122
reward: 3000.3
profit: 0
measurements:
time_window:
from: '2024-11-08T04:42:30Z'
to: '2024-11-08T05:55:03Z'
driving_time: PT37M33S
waiting_time: PT0S
working_time: PT35M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H12M33S
distance: 13146
trips_count: 1
performers_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
stops_count: 4
locations_count: 4
cargo_capacity_sum:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
cargo_capacity_ratio:
mass: 0.007
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transport_load:
mass: 0.007
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
average_speed: 13.146
round_trips_count: 1
trips_statistics:
- trip_key: 252f9b58-44d1-4482-8e35-36af9308e7a4-performer_1_shift
general_statistics:
cost: 6485.122
reward: 3000.3
profit: -3484.822
measurements:
time_window:
from: '2024-11-08T04:42:30Z'
to: '2024-11-08T05:55:03Z'
driving_time: PT37M33S
waiting_time: PT0S
working_time: PT35M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H12M33S
distance: 13146
trips_count: 1
performers_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
stops_count: 4
locations_count: 4
cargo_capacity_sum:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
cargo_capacity_ratio:
mass: 0.007
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
max_transport_load:
mass: 0.007
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
average_speed: 13.146
round_trips_count: 1
load_statistics:
total_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transfer_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
stop_statistics:
- location_key: location_storage
stop_demands:
- demand_key: demand_1_pickup
event_key: demand_1_pickup_event
demand_time_window:
from: '2024-11-08T04:42:30Z'
to: '2024-11-08T04:42:30Z'
- demand_key: demand_2_pickup
event_key: demand_2_pickup_event
demand_time_window:
from: '2024-11-08T04:42:30Z'
to: '2024-11-08T04:42:30Z'
stop_time_window:
from: '2024-11-08T04:42:30Z'
to: '2024-11-08T04:42:30Z'
measurements:
time_window:
from: '2024-11-08T04:42:30Z'
to: '2024-11-08T04:42:30Z'
driving_time: PT0S
waiting_time: PT0S
working_time: PT0S
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT0S
distance: 0
upload:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_2
stop_demands:
- demand_key: demand_2_drop
event_key: demand_2_drop_event
demand_time_window:
from: '2024-11-08T05:00:00Z'
to: '2024-11-08T05:10:00Z'
stop_time_window:
from: '2024-11-08T05:00:00Z'
to: '2024-11-08T05:10:00Z'
measurements:
time_window:
from: '2024-11-08T04:42:30Z'
to: '2024-11-08T05:10:00Z'
driving_time: PT17M30S
waiting_time: PT0S
working_time: PT10M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT27M30S
distance: 6125
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_3
stop_demands:
- demand_key: demand_3_work
event_key: demand_3_work_event
demand_time_window:
from: '2024-11-08T05:12:37Z'
to: '2024-11-08T05:27:37Z'
stop_time_window:
from: '2024-11-08T05:12:37Z'
to: '2024-11-08T05:27:37Z'
measurements:
time_window:
from: '2024-11-08T05:10:00Z'
to: '2024-11-08T05:27:37Z'
driving_time: PT2M37S
waiting_time: PT0S
working_time: PT15M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT17M37S
distance: 916
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_1
stop_demands:
- demand_key: demand_1_drop
event_key: demand_1_drop_event
demand_time_window:
from: '2024-11-08T05:45:03Z'
to: '2024-11-08T05:55:03Z'
stop_time_window:
from: '2024-11-08T05:45:03Z'
to: '2024-11-08T05:55:03Z'
measurements:
time_window:
from: '2024-11-08T05:27:37Z'
to: '2024-11-08T05:55:03Z'
driving_time: PT17M26S
waiting_time: PT0S
working_time: PT10M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT27M26S
distance: 6105
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
locations_statistics: []
task_statistics:
planning_horizon:
from: '2024-11-07T21:00:00Z'
to: '2024-11-08T21:00:59Z'
quality:
locations_limits_penalty: 0
soft_time_window_violations:
before:
demand_keys: []
count: 0
after:
demand_keys: []
count: 0
hard_time_window_violations:
before:
demand_keys: []
count: 0
after:
demand_keys: []
count: 0
calculation_progress: 100
calculation_info:
status: FINISHED_IN_TIME
result_version: 106
preparing_time: PT0S
business_validation_time: PT0S
math_validation_time: PT0S
waiting_time: PT4.021S
calculation_time: PT1.011S
warnings: []
unplanned_items:
order_keys: []
order_keys_count: 0
performer_keys: []
performer_keys_count: 0
transport_keys: []
transport_keys_count: 0
hardlink_keys: []
hardlink_keys_count: 0
ValidateResultExample:
summary: Пример валидации
value:
tracedata:
process_code: 11111111-2222-3333-4444-555555555555
request_code: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
username: example_username
company: example_company
env: edge7
pod: aaaaaaaa-2222-cccc-4444-eeeeeeeeeeee
service: UNIVERSAL
operation: run_plan_validation
time: '2024-11-01T11:50:15.123Z'
warnings:
- type: NO_AVAILABLE_TRANSPORT
entities:
- entity_key: ord0001
entity_type: ORDER
RefineResultMoscow:
summary: Москва
value:
tracedata:
process_code: 11111111-2222-3333-4444-555555555555
request_code: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
username: example_username
company: example_company
env: edge7
pod: aaaaaaaa-2222-cccc-4444-eeeeeeeeeeee
service: UNIVERSAL
operation: run_replan_calculation
time: '2024-11-28T17:06:33.856Z'
plan_task:
locations:
- key: location_client_1
geopoint:
latitude: 55.713699
longitude: 37.621839
- key: location_client_2
geopoint:
latitude: 55.630721
longitude: 37.62493
- key: location_client_3
geopoint:
latitude: 55.722801
longitude: 37.674984
- key: location_storage
geopoint:
latitude: 55.685853
longitude: 37.43181
orders:
- key: order_1
demands:
- key: demand_1_drop
demand_type: DROP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_drop_event
location_key: location_client_1
duration: PT10M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
- key: demand_1_pickup
demand_type: PICKUP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
cargos:
- key: order_1_cargos
capacity:
mass: 1
- key: order_2
demands:
- key: demand_2_drop
demand_type: DROP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_drop_event
location_key: location_client_2
duration: PT10M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
- key: demand_2_pickup
demand_type: PICKUP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
cargos:
- key: order_2_cargos
capacity:
mass: 1
- key: order_3
demands:
- key: demand_3_work
demand_type: WORK
possible_events:
- key: demand_3_work_event
location_key: location_client_3
duration: PT15M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
performers:
- key: performer_1
shifts:
- key: performer_1_shift
availability_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
working_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: PT10H
cost_per_unit: 1
transports:
- key: transport_1
shifts:
- key: transport_1_shift
availability_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: 1000000
cost_per_unit: 0.01
transport_type: CAR
boxes:
- key: box_1
capacity:
mass: 300
plan_settings:
trips_settings:
configuration: optimize_distance
geo_settings:
toll_roads: true
traffic_jams: false
GeneratePlanStatisticsMoscow:
summary: Москва
value:
locations:
- key: performer_1_current_location
geopoint:
latitude: 55.720292
longitude: 37.625994
- key: unused_location
geopoint:
latitude: 55.512292
longitude: 37.915934
- key: location_client_1
geopoint:
latitude: 55.713699
longitude: 37.621839
- key: location_client_2
geopoint:
latitude: 55.630721
longitude: 37.62493
- key: location_client_3
geopoint:
latitude: 55.722801
longitude: 37.674984
- key: location_storage
geopoint:
latitude: 55.685853
longitude: 37.43181
orders:
- key: order_1
demands:
- key: demand_1_drop
demand_type: DROP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_drop_event
location_key: location_client_1
duration: PT10M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
- key: demand_1_pickup
demand_type: PICKUP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
cargos:
- key: order_1_cargos
capacity:
mass: 1
- key: order_2
demands:
- key: demand_2_drop
demand_type: DROP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_drop_event
location_key: location_client_2
duration: PT10M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
- key: demand_2_pickup
demand_type: PICKUP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
cargos:
- key: order_2_cargos
capacity:
mass: 1
- key: order_3
demands:
- key: demand_3_work
demand_type: WORK
possible_events:
- key: demand_3_work_event
location_key: location_client_3
duration: PT15M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
performers:
- key: performer_1
shifts:
- key: performer_1_shift
availability_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
working_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: PT10H
cost_per_unit: 1
transports:
- key: transport_1
shifts:
- key: transport_1_shift
availability_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: 1000000
cost_per_unit: 0.01
transport_type: CAR
boxes:
- key: box_1
capacity:
mass: 300
trips:
- key: trip_for_performer_1
performer:
performer_key: performer_1
shift_key: performer_1_shift
shift_time:
from: '2024-11-08T04:38:34Z'
to: '2024-11-08T05:53:39Z'
transport:
transport_key: transport_1
shift_key: transport_1_shift
shift_time:
from: '2024-11-08T04:38:34Z'
to: '2024-11-08T05:53:39Z'
states:
- time: '2024-11-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:38:34Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_pickup
event_key: demand_2_pickup_event
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:38:34Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_pickup
event_key: demand_1_pickup_event
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:38:34Z'
flags:
- RELOCATING
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_drop
event_key: demand_2_drop_event
location_key: location_client_2
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- RELOCATING
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:20:52Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:20:52Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_drop
event_key: demand_1_drop_event
location_key: location_client_1
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:30:52Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:30:52Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:38:39Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:38:39Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_3
demand_key: demand_3_work
event_key: demand_3_work_event
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:53:39Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
waitlist: []
attributes: []
ActualizeTaskMoscow:
summary: Москва
value:
locations:
- key: performer_1_current_location
geopoint:
latitude: 55.720292
longitude: 37.625994
- key: unused_location
geopoint:
latitude: 55.512292
longitude: 37.915934
- key: location_client_1
geopoint:
latitude: 55.713699
longitude: 37.621839
- key: location_client_2
geopoint:
latitude: 55.630721
longitude: 37.62493
- key: location_client_3
geopoint:
latitude: 55.722801
longitude: 37.674984
- key: location_storage
geopoint:
latitude: 55.685853
longitude: 37.43181
orders:
- key: order_1
demands:
- key: demand_1_drop
demand_type: DROP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_drop_event
location_key: location_client_1
duration: PT10M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
- key: demand_1_pickup
demand_type: PICKUP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
cargos:
- key: order_1_cargos
capacity:
mass: 1
- key: order_2
demands:
- key: demand_2_drop
demand_type: DROP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_drop_event
location_key: location_client_2
duration: PT10M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
- key: demand_2_pickup
demand_type: PICKUP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
cargos:
- key: order_2_cargos
capacity:
mass: 1
- key: order_3
demands:
- key: demand_3_work
demand_type: WORK
possible_events:
- key: demand_3_work_event
location_key: location_client_3
duration: PT15M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
performers:
- key: performer_1
shifts:
- key: performer_1_shift
availability_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
working_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: PT10H
cost_per_unit: 1
transports:
- key: transport_1
shifts:
- key: transport_1_shift
availability_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: 1000000
cost_per_unit: 0.01
transport_type: CAR
boxes:
- key: box_1
capacity:
mass: 300
facts:
- key: fact_01
type: NEW_LOCATION
time: '2024-11-07T22:00:00Z'
trip_key: trip_for_performer_1
performer_key: performer_1
location_key: performer_1_current_location
trips:
- key: trip_for_performer_1
performer:
performer_key: performer_1
shift_key: performer_1_shift
shift_time:
from: '2024-11-08T04:38:34Z'
to: '2024-11-08T05:53:39Z'
transport:
transport_key: transport_1
shift_key: transport_1_shift
shift_time:
from: '2024-11-08T04:38:34Z'
to: '2024-11-08T05:53:39Z'
states:
- time: '2024-11-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:38:34Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_pickup
event_key: demand_2_pickup_event
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:38:34Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_pickup
event_key: demand_1_pickup_event
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:38:34Z'
flags:
- RELOCATING
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_drop
event_key: demand_2_drop_event
location_key: location_client_2
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- RELOCATING
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:20:52Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:20:52Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_drop
event_key: demand_1_drop_event
location_key: location_client_1
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:30:52Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:30:52Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:38:39Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:38:39Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_3
demand_key: demand_3_work
event_key: demand_3_work_event
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:53:39Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
waitlist: []
attributes: []
actualize_settings:
current_time: '2024-11-07T22:30:00Z'
max_delay_duration: PT1H
ActualizeResultMoscow:
summary: Москва
value:
tracedata:
process_code: 11111111-2222-3333-4444-555555555555
request_code: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
username: example_username
company: example_company
env: edge7
pod: aaaaaaaa-2222-cccc-4444-eeeeeeeeeeee
service: UNIVERSAL
operation: run_actualize_calculation
time: '2024-11-28T17:06:33.856Z'
trips:
- key: d56f86e9-c50a-40d3-b5ef-616eacc98db0-performer_1_shift
performer:
performer_key: performer_1
shift_key: performer_1_shift
shift_time:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T05:53:49Z'
transport:
transport_key: transport_1
shift_key: transport_1_shift
shift_time:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T05:53:49Z'
states:
- time: '2024-11-08T04:39:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:39:34Z'
flags:
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_LOCATION_WINDOW
- ON_DEMAND
order_key: order_2
demand_key: demand_2_pickup
event_key: demand_2_pickup_event
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:39:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:39:34Z'
flags:
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_LOCATION_WINDOW
- ON_DEMAND
order_key: order_1
demand_key: demand_1_pickup
event_key: demand_1_pickup_event
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:39:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:39:34Z'
flags:
- AROUND_LOCATION
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:39:34Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- AROUND_LOCATION
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_LOCATION_WINDOW
- ON_DEMAND
order_key: order_2
demand_key: demand_2_drop
event_key: demand_2_drop_event
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: REMOVE
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- AROUND_LOCATION
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:20:56Z'
flags:
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:20:56Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:20:56Z'
flags:
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_LOCATION_WINDOW
- ON_DEMAND
order_key: order_1
demand_key: demand_1_drop
event_key: demand_1_drop_event
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:30:56Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: REMOVE
attributes: []
- time: '2024-11-08T05:30:56Z'
flags:
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:30:56Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:38:49Z'
flags:
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:38:49Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:38:49Z'
flags:
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_LOCATION_WINDOW
- ON_DEMAND
order_key: order_3
demand_key: demand_3_work
event_key: demand_3_work_event
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:53:49Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
name: 1-HVFB
waitlist: []
attributes: []
statistics:
total_statistics:
cost: 6795.37
reward: 3000.3
profit: 0
measurements:
time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T05:53:49Z'
driving_time: PT39M15S
waiting_time: PT0S
working_time: PT35M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H14M15S
distance: 34037
trips_count: 1
performers_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
stops_count: 4
locations_count: 4
cargo_capacity_sum:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
cargo_capacity_ratio:
mass: 0.007
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transport_load:
mass: 0.007
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
average_speed: 34.037
round_trips_count: 1
trips_statistics:
- trip_key: d56f86e9-c50a-40d3-b5ef-616eacc98db0-performer_1_shift
general_statistics:
cost: 6795.37
reward: 3000.3
profit: -3795.07
measurements:
time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T05:53:49Z'
driving_time: PT39M15S
waiting_time: PT0S
working_time: PT35M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H14M15S
distance: 34037
trips_count: 1
performers_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
stops_count: 4
locations_count: 4
cargo_capacity_sum:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
cargo_capacity_ratio:
mass: 0.007
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
max_transport_load:
mass: 0.007
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
average_speed: 34.037
round_trips_count: 1
load_statistics:
total_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transfer_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
stop_statistics:
- location_key: location_storage
stop_demands:
- demand_key: demand_2_pickup
event_key: demand_2_pickup_event
demand_time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T04:39:34Z'
- demand_key: demand_1_pickup
event_key: demand_1_pickup_event
demand_time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T04:39:34Z'
stop_time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T04:39:34Z'
measurements:
time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T04:39:34Z'
driving_time: PT0S
waiting_time: PT0S
working_time: PT0S
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT0S
distance: 0
upload:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_2
stop_demands:
- demand_key: demand_2_drop
event_key: demand_2_drop_event
demand_time_window:
from: '2024-11-08T05:00:00Z'
to: '2024-11-08T05:10:00Z'
stop_time_window:
from: '2024-11-08T05:00:00Z'
to: '2024-11-08T05:10:00Z'
measurements:
time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T05:10:00Z'
driving_time: PT20M26S
waiting_time: PT0S
working_time: PT10M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT30M26S
distance: 17110
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_1
stop_demands:
- demand_key: demand_1_drop
event_key: demand_1_drop_event
demand_time_window:
from: '2024-11-08T05:20:56Z'
to: '2024-11-08T05:30:56Z'
stop_time_window:
from: '2024-11-08T05:20:56Z'
to: '2024-11-08T05:30:56Z'
measurements:
time_window:
from: '2024-11-08T05:10:00Z'
to: '2024-11-08T05:30:56Z'
driving_time: PT10M56S
waiting_time: PT0S
working_time: PT10M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT20M56S
distance: 9897
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_3
stop_demands:
- demand_key: demand_3_work
event_key: demand_3_work_event
demand_time_window:
from: '2024-11-08T05:38:49Z'
to: '2024-11-08T05:53:49Z'
stop_time_window:
from: '2024-11-08T05:38:49Z'
to: '2024-11-08T05:53:49Z'
measurements:
time_window:
from: '2024-11-08T05:30:56Z'
to: '2024-11-08T05:53:49Z'
driving_time: PT7M53S
waiting_time: PT0S
working_time: PT15M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT22M53S
distance: 7030
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
locations_statistics: []
task_statistics:
planning_horizon:
from: '2024-11-07T21:00:00Z'
to: '2024-11-08T21:00:59Z'
quality:
locations_limits_penalty: 0
soft_time_window_violations:
before:
demand_keys: []
count: 0
after:
demand_keys: []
count: 0
hard_time_window_violations:
before:
demand_keys: []
count: 0
after:
demand_keys: []
count: 0
calculation_progress: 100
calculation_info:
status: FINISHED_IN_TIME
result_version: 106
preparing_time: PT0S
business_validation_time: PT0S
math_validation_time: PT0S
waiting_time: PT4.022S
calculation_time: PT1.012S
warnings: []
unplanned_items:
order_keys: []
order_keys_count: 0
performer_keys: []
performer_keys_count: 0
transport_keys: []
transport_keys_count: 0
hardlink_keys: []
hardlink_keys_count: 0
ReplanTaskMoscow:
summary: Москва
value:
locations:
- key: location_client_1
geopoint:
latitude: 55.713699
longitude: 37.621839
- key: location_client_2
geopoint:
latitude: 55.630721
longitude: 37.62493
- key: location_client_3
geopoint:
latitude: 55.722801
longitude: 37.674984
- key: location_storage
geopoint:
latitude: 55.685853
longitude: 37.43181
orders:
- key: order_1
demands:
- key: demand_1_drop
demand_type: DROP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_drop_event
location_key: location_client_1
duration: PT10M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
- key: demand_1_pickup
demand_type: PICKUP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
cargos:
- key: order_1_cargos
capacity:
mass: 1
- key: order_2
demands:
- key: demand_2_drop
demand_type: DROP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_drop_event
location_key: location_client_2
duration: PT10M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
- key: demand_2_pickup
demand_type: PICKUP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
cargos:
- key: order_2_cargos
capacity:
mass: 1
- key: order_3
demands:
- key: demand_3_work
demand_type: WORK
possible_events:
- key: demand_3_work_event
location_key: location_client_3
duration: PT15M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
performers:
- key: performer_1
shifts:
- key: performer_1_shift
availability_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
working_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: PT10H
cost_per_unit: 1
transports:
- key: transport_1
shifts:
- key: transport_1_shift
availability_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: 1000000
cost_per_unit: 0.01
transport_type: CAR
boxes:
- key: box_1
capacity:
mass: 300
trips:
- key: performer_1_shift
performer:
performer_key: performer_1
shift_key: performer_1_shift
shift_time:
from: '2024-11-08T04:38:34Z'
to: '2024-11-08T05:53:39Z'
transport:
transport_key: transport_1
shift_key: transport_1_shift
shift_time:
from: '2024-11-08T04:38:34Z'
to: '2024-11-08T05:53:39Z'
states:
- time: '2024-11-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:38:34Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_pickup
event_key: demand_2_pickup_event
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:38:34Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_pickup
event_key: demand_1_pickup_event
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:38:34Z'
flags:
- RELOCATING
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_drop
event_key: demand_2_drop_event
location_key: location_client_2
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- RELOCATING
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:20:52Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:20:52Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_drop
event_key: demand_1_drop_event
location_key: location_client_1
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:30:52Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:30:52Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:38:39Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:38:39Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_3
demand_key: demand_3_work
event_key: demand_3_work_event
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:53:39Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
waitlist: []
attributes: []
ReplanResultMoscow:
summary: Москва
value:
tracedata:
process_code: 11111111-2222-3333-4444-555555555555
request_code: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
username: example_username
company: example_company
env: edge7
pod: aaaaaaaa-2222-cccc-4444-eeeeeeeeeeee
service: UNIVERSAL
operation: run_replan_calculation
time: '2024-11-28T17:06:33.856Z'
trips:
- key: d56f86e9-c50a-40d3-b5ef-616eacc98db0-performer_1_shift
performer:
performer_key: performer_1
shift_key: performer_1_shift
shift_time:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T05:53:49Z'
transport:
transport_key: transport_1
shift_key: transport_1_shift
shift_time:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T05:53:49Z'
states:
- time: '2024-11-08T04:39:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:39:34Z'
flags:
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_LOCATION_WINDOW
- ON_DEMAND
order_key: order_2
demand_key: demand_2_pickup
event_key: demand_2_pickup_event
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:39:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:39:34Z'
flags:
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_LOCATION_WINDOW
- ON_DEMAND
order_key: order_1
demand_key: demand_1_pickup
event_key: demand_1_pickup_event
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:39:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:39:34Z'
flags:
- AROUND_LOCATION
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:39:34Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- AROUND_LOCATION
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_LOCATION_WINDOW
- ON_DEMAND
order_key: order_2
demand_key: demand_2_drop
event_key: demand_2_drop_event
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: REMOVE
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- AROUND_LOCATION
location_key: location_client_2
cargo_actions: []
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:20:56Z'
flags:
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:20:56Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:20:56Z'
flags:
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_LOCATION_WINDOW
- ON_DEMAND
order_key: order_1
demand_key: demand_1_drop
event_key: demand_1_drop_event
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:30:56Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: REMOVE
attributes: []
- time: '2024-11-08T05:30:56Z'
flags:
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:30:56Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:38:49Z'
flags:
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:38:49Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:38:49Z'
flags:
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
- INSIDE_LOCATION_WINDOW
- ON_DEMAND
order_key: order_3
demand_key: demand_3_work
event_key: demand_3_work_event
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:53:49Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
name: 1-HVFB
waitlist: []
attributes: []
statistics:
total_statistics:
cost: 6795.37
reward: 3000.3
profit: 0
measurements:
time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T05:53:49Z'
driving_time: PT39M15S
waiting_time: PT0S
working_time: PT35M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H14M15S
distance: 34037
trips_count: 1
performers_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
stops_count: 4
locations_count: 4
cargo_capacity_sum:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
cargo_capacity_ratio:
mass: 0.007
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transport_load:
mass: 0.007
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
average_speed: 34.037
round_trips_count: 1
trips_statistics:
- trip_key: d56f86e9-c50a-40d3-b5ef-616eacc98db0-performer_1_shift
general_statistics:
cost: 6795.37
reward: 3000.3
profit: -3795.07
measurements:
time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T05:53:49Z'
driving_time: PT39M15S
waiting_time: PT0S
working_time: PT35M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H14M15S
distance: 34037
trips_count: 1
performers_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
stops_count: 4
locations_count: 4
cargo_capacity_sum:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
cargo_capacity_ratio:
mass: 0.007
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
max_transport_load:
mass: 0.007
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
average_speed: 34.037
round_trips_count: 1
load_statistics:
total_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transfer_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
stop_statistics:
- location_key: location_storage
stop_demands:
- demand_key: demand_2_pickup
event_key: demand_2_pickup_event
demand_time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T04:39:34Z'
- demand_key: demand_1_pickup
event_key: demand_1_pickup_event
demand_time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T04:39:34Z'
stop_time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T04:39:34Z'
measurements:
time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T04:39:34Z'
driving_time: PT0S
waiting_time: PT0S
working_time: PT0S
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT0S
distance: 0
upload:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_2
stop_demands:
- demand_key: demand_2_drop
event_key: demand_2_drop_event
demand_time_window:
from: '2024-11-08T05:00:00Z'
to: '2024-11-08T05:10:00Z'
stop_time_window:
from: '2024-11-08T05:00:00Z'
to: '2024-11-08T05:10:00Z'
measurements:
time_window:
from: '2024-11-08T04:39:34Z'
to: '2024-11-08T05:10:00Z'
driving_time: PT20M26S
waiting_time: PT0S
working_time: PT10M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT30M26S
distance: 17110
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_1
stop_demands:
- demand_key: demand_1_drop
event_key: demand_1_drop_event
demand_time_window:
from: '2024-11-08T05:20:56Z'
to: '2024-11-08T05:30:56Z'
stop_time_window:
from: '2024-11-08T05:20:56Z'
to: '2024-11-08T05:30:56Z'
measurements:
time_window:
from: '2024-11-08T05:10:00Z'
to: '2024-11-08T05:30:56Z'
driving_time: PT10M56S
waiting_time: PT0S
working_time: PT10M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT20M56S
distance: 9897
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_3
stop_demands:
- demand_key: demand_3_work
event_key: demand_3_work_event
demand_time_window:
from: '2024-11-08T05:38:49Z'
to: '2024-11-08T05:53:49Z'
stop_time_window:
from: '2024-11-08T05:38:49Z'
to: '2024-11-08T05:53:49Z'
measurements:
time_window:
from: '2024-11-08T05:30:56Z'
to: '2024-11-08T05:53:49Z'
driving_time: PT7M53S
waiting_time: PT0S
working_time: PT15M
break_time: PT0S
rest_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT22M53S
distance: 7030
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
locations_statistics: []
task_statistics:
planning_horizon:
from: '2024-11-07T21:00:00Z'
to: '2024-11-08T21:00:59Z'
quality:
locations_limits_penalty: 0
soft_time_window_violations:
before:
demand_keys: []
count: 0
after:
demand_keys: []
count: 0
hard_time_window_violations:
before:
demand_keys: []
count: 0
after:
demand_keys: []
count: 0
calculation_progress: 100
calculation_info:
status: FINISHED_IN_TIME
result_version: 106
preparing_time: PT0S
business_validation_time: PT0S
math_validation_time: PT0S
waiting_time: PT4.022S
calculation_time: PT1.012S
warnings: []
unplanned_items:
order_keys: []
order_keys_count: 0
performer_keys: []
performer_keys_count: 0
transport_keys: []
transport_keys_count: 0
hardlink_keys: []
hardlink_keys_count: 0
ConvertTaskMoscow:
summary: Москва
value:
locations:
- key: location_client_1
geopoint:
latitude: 55.713699
longitude: 37.621839
- key: location_client_2
geopoint:
latitude: 55.630721
longitude: 37.62493
- key: location_client_3
geopoint:
latitude: 55.722801
longitude: 37.674984
- key: location_storage
geopoint:
latitude: 55.685853
longitude: 37.43181
orders:
- key: order_1
demands:
- key: demand_1_drop
demand_type: DROP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_drop_event
location_key: location_client_1
duration: PT10M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
- key: demand_1_pickup
demand_type: PICKUP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
cargos:
- key: order_1_cargos
capacity:
mass: 1
- key: order_2
demands:
- key: demand_2_drop
demand_type: DROP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_drop_event
location_key: location_client_2
duration: PT10M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
- key: demand_2_pickup
demand_type: PICKUP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
cargos:
- key: order_2_cargos
capacity:
mass: 1
- key: order_3
demands:
- key: demand_3_work
demand_type: WORK
possible_events:
- key: demand_3_work_event
location_key: location_client_3
duration: PT15M
hard_time_window:
from: '2024-11-08T05:00:00+00:00'
to: '2024-11-08T07:00:00+00:00'
performers:
- key: performer_1
shifts:
- key: performer_1_shift
availability_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
working_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: PT10H
cost_per_unit: 1
transports:
- key: transport_1
shifts:
- key: transport_1_shift
availability_time:
from: '2024-11-07T21:00:00+00:00'
to: '2024-11-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: 1000000
cost_per_unit: 0.01
transport_type: CAR
boxes:
- key: box_1
capacity:
mass: 300
trips:
- key: performer_1_shift
performer:
performer_key: performer_1
shift_key: performer_1_shift
shift_time:
from: '2024-11-08T04:38:34Z'
to: '2024-11-08T05:53:39Z'
transport:
transport_key: transport_1
shift_key: transport_1_shift
shift_time:
from: '2024-11-08T04:38:34Z'
to: '2024-11-08T05:53:39Z'
states:
- time: '2024-11-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:38:34Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_pickup
event_key: demand_2_pickup_event
location_key: location_storage
cargo_actions: []
attributes: []
- time: '2024-11-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:38:34Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_pickup
event_key: demand_1_pickup_event
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T04:38:34Z'
flags:
- RELOCATING
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:00:00Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_drop
event_key: demand_2_drop_event
location_key: location_client_2
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
- box_key: box_1
cargo_key: order_2_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:10:00Z'
flags:
- RELOCATING
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:20:52Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:20:52Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_drop
event_key: demand_1_drop_event
location_key: location_client_1
cargo_actions:
- box_key: box_1
cargo_key: order_1_cargos
cargo_action_type: ADD
attributes: []
- time: '2024-11-08T05:30:52Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_actions: []
attributes: []
- time: '2024-11-08T05:30:52Z'
flags:
- RELOCATING
cargo_actions: []
attributes: []
- time: '2024-11-08T05:38:39Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:38:39Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_3
demand_key: demand_3_work
event_key: demand_3_work_event
location_key: location_client_3
cargo_actions: []
attributes: []
- time: '2024-11-08T05:53:39Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_actions: []
attributes: []
waitlist: []
attributes: []
responses:
'200':
description: Расчет успешно завершен
content:
application/json:
schema:
$ref: '#/components/schemas/calculation_state'
'202':
description: Расчет в процессе, возвращены промежуточные результаты
content:
application/json:
schema:
$ref: '#/components/schemas/calculation_state'
'299':
description: Расчет завершен, в процессе расчета возникли проблемы
content:
application/json:
schema:
$ref: '#/components/schemas/calculation_state'
'401':
description: Ошибка доступа - неверные реквизиты для авторизации, токен отсутствует
или невалиден
'402':
description: Необходима оплата
content:
application/json:
schema:
$ref: '#/components/schemas/general_402'
'403':
description: Действие запрещено - уровень прав доступа не позволяет совершить
данное действие
content:
application/json:
schema:
$ref: '#/components/schemas/general_403'
'404':
description: Запрашиваемая сущность не найдена
content:
application/json:
schema:
$ref: '#/components/schemas/general_404'
'405':
description: Метод запрещен для данного ресурса, проверьте указанный метод (POST,
GET, ...)
'406':
description: Клиент не способен обработать формат ответа, проверьте заголовки
'415':
description: Неприемлемый формат запроса, проверьте заголовки
'429':
description: Превышено количество запросов
content:
application/json:
schema:
$ref: '#/components/schemas/general_429'
'500':
description: Внутренняя ошибка сервера
content:
application/json:
schema:
$ref: '#/components/schemas/general_500'
'501':
description: Функциональность не доступна для использования
'502':
description: Неверный шлюз
'503':
description: Сервис не доступен
'504':
description: Шлюз не отвечает
400_with_errors_and_warnings:
description: Неверный запрос - данные содержат ошибки
content:
application/json:
schema:
$ref: '#/components/schemas/custom_400_with_errors_and_warnings'
examples:
Result400:
$ref: '#/components/examples/Result400'
parameters:
process_code:
name: process_code
description: Уникальный идентификатор процесса.
in: path
required: true
schema:
$ref: '#/components/schemas/process_code'
timezone:
name: timezone
description: Целевая временная зона данных.
in: query
required: false
schema:
$ref: '#/components/schemas/timezone'
filename:
name: filename
description: Название файла.
in: path
required: true
schema:
description: Название файла.
type: string
minLength: 6
maxLength: 128
example: file_en.html