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
- можно повернуть один раз по продольной оси (положить на бок)Рейс описывается списком состояний исполнителя, при этом одновременно исполнитель может находится в нескольких состояниях (например быть внутри рабочего временного окна локации и выполнять заказ на этой же локации).
Возможные значения флагов, отвечающих за географическое положение:
AROUND_LOCATION
- исполнитель находится рядом с локацией - в процессе парковки или выезда с нее.INSIDE_LOCATION
- исполнитель находится на локации.Возможные значения флагов, отвечающих за нахождения во временных окнах:
INSIDE_WORKING_WINDOW
- исполнитель находится внутри рабочего временного окна.INSIDE_LOCATION_WINDOW
- исполнитель находится внутри времени работы локации.INSIDE_EVENT_HARD_WINDOW
- исполнитель находится внутри жесткого временного окна.INSIDE_EVENT_SOFT_WINDOW
- исполнитель находится внутри мягкого временного окна.Возможные значения флагов, отвечающих за действия:
ON_DEMAND
- исполнитель работает над заявкой.WAITING
- исполнитель находится в режиме ожидания.RELOCATING
- исполнитель перемещается к следующей остановке.BREAK
- исполнитель находится на перерыве.Время | Набор активных флагов | Локация / Заказ / Заявка / Событие | Комментарий |
---|---|---|---|
10:00 | INSIDE_LOCATION AROUND_LOCATION | 2 / - / - / - | Стартовая локация |
10:10 | RELOCATING | - / - / - / - | Едем к первому заказу |
10:20 | AROUND_LOCATION | 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 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 | Расставить как можно больше заказов, затем оптимизировать количество машин, а затем надёжность |
В дополнение к существующим вариантам планирования возможно создание целевой функции непосредственно под бизнес-процессы клиента (запросить конфигурацию).
Для разработки рекомендуется использовать optimize_cars_then_distance, так как данная конфигурация не требует детального подбора тарифов и стоимостей заказов.
Валидация входных данных состоит из нескольких этапов, которые описаны ниже.
Если запрос не проходит по схеме, то планирование не запускается целиком и такая ошибка возвращается вместе с кодом 400 в schema_errors
.
Мы рекомендуем проверять запрос по схеме (или yaml-файлу) перед отправкой на сервер.
Корректные по схеме данные проходят второй этап проверки на возможность запуска планирования.
Пример ошибок на данном этапе - ключи, ведущие на пустые сущности, или если все заказы несовместимы со всеми исполнителями, т.е. то, что делает задачу планирования бессмысленной.
Данные ошибки возвращаются вместе с кодом 400 в logical_errors
.
На третьем этапе происходит проверка каждой сущности отдельно.
Все сущности, которые не прошли проверку - вырезаются из исходной задачи и не отправляются на планирование.
В зависимости от настройки treat_warnings_as_errors
результаты данного типа проверки возвращаются в warnings
вместе с кодом 400, либо вместе с результатом планирования.
Часть проверок можно осуществить только в процессе планирования.
Например - что согласно указанным тарифам и по актуальному прогнозу пробок физически невозможно доехать до определенной точки.
Результаты данных проверок возвращаются в warnings
либо вместе с результатом планирования.
Описание формата VRt.Universal XLSX для импорта\экспорта данных.
Данный формат является полным отображением json-модели данных и используется для:
Ниже представлено описание каждого листа отдельно, жирным выделены ключи.
Название листа locations
.
Список локаций, которые используются в заказах и сменах.
Название | Описание | Примечание |
---|---|---|
key | Ключ локации, уникальный идентификатор | Уникальный ключ в рамках расчета |
departure_duration | Время на отъезд от локации, временной промежуток | |
geopoint.latitude | Географическая широта в градусах | |
geopoint.longitude | Географическая долгота в градусах | |
work_windows.from | Начало временного окна работы локации | Обязательно, если указан to . Если список пустой или не указан - локация работает без ограничений по времени. |
work_windows.to | Окончание временного окна работы локации | Обязательно, если указан from . Если список пустой или не указан - локация работает без ограничений по времени. |
compatibilities .transport_restrictions | Список необходимых требований к транспорту | Используется для проверки совместимости транспорта локацией. |
attributes.{key} | Атрибуты, используются для указания служебной информации | {key} - ключ атрибута. Можно заводить несколько. Эти данные не учитываются в планировании. |
Описываемый объект:
key required | string [ 1 .. 1024 ] characters Ключ локации, уникальный идентификатор. |
required | object (geopoint) Географическая точка. |
arrival_duration | string<duration> (time_duration) [ 3 .. 16 ] characters ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d... Время на подъезд (парковку) на локации, в формате ISO 8601 duration. |
departure_duration | string<duration> (time_duration) [ 3 .. 16 ] characters ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d... Время на отъезд от локации, в формате ISO 8601 duration. |
Array of objects or null (time_window) [ 0 .. 100 ] items unique Default: [] Список временных окон работы локации. Если список пустой или не указан - локация работает без ограничений по времени. | |
object or null (location_compatibilities) Совместимости локации с транспортом. | |
Array of objects (attributes) [ 0 .. 1000 ] items unique Атрибуты. Используются для указания служебной информации. |
{- "key": "location01",
- "geopoint": {
- "latitude": 55.692789,
- "longitude": 37.554554
}, - "arrival_duration": "P1Y1M1DT2H12M34.3S",
- "departure_duration": "P1Y1M1DT2H12M34.3S",
- "work_windows": [ ],
- "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.{key} | Атрибуты. Используются для указания служебной информации | {key} - ключ атрибута. Можно заводить несколько. Эти данные не учитываются в планировании. |
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.{key} | Атрибуты, используются для указания служебной информации | {key} - ключ атрибута. Можно заводить несколько. Эти данные не учитываются в планировании. |
Описываемый объект:
key required | string [ 1 .. 1024 ] characters Ключ исполнителя, уникальный идентификатор. |
required | Array of objects (performer_shift) [ 1 .. 15001 ] items unique Список рабочих смен исполнителя. |
own_transport_type | string (transport_type) Enum: "CAR" "TRUCK_1500" "TRUCK_3000" … 9 more Типы транспорта:
Разрешенная масса - это масса снаряженного транспорта с грузом и водителем, установленная предприятием-изготовителем в качестве максимально допустимой. |
object or null (performer_compatibilities) Совместимости исполнителя с транспортом и заказами. | |
object or null (performer_limits) Ограничение на рабочую загрузку исполнителя. | |
Array of objects (attributes) [ 0 .. 1000 ] items unique Атрибуты. Используются для указания служебной информации. |
{- "key": "performer0001",
- "shifts": [
- {
- "key": "shift01",
- "availability_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "working_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "start_location_key": "start_location01",
- "finish_location_key": "finish_location01",
- "max_locations": 15,
- "max_stops": 15,
- "tariff": {
- "cost_per_shift": 2000,
- "constraints": [
- {
- "stage_length": "PT24H",
- "cost_per_unit": 0.001
}
], - "max_penalty_cost": 2000
}, - "work_and_rest_rules": {
- "first_break": {
- "max_work_duration_sum": "P1Y1M1DT2H12M34.3S",
- "duration": "P1Y1M1DT2H12M34.3S"
}
}, - "attributes": [ ]
}
], - "own_transport_type": "CAR",
- "compatibilities": {
- "performer_features": [ ],
- "performer_features_lifetimes": [ ],
- "transport_restrictions": [ ]
}, - "limits": {
- "max_work_shifts": 3
}, - "attributes": [ ]
}
Название листа transports
.
Список доступного транспорта.
Название | Описание | Примечание |
---|---|---|
key | Ключ транспорта уникальный идентификатор | |
transport_type | Тип транспорта | Если не указан, по умолчанию, проставляется CAR |
boxes.key | Список отсеков транспорта, которые могут вмещать груз | Обязательно,если в задаче присутствуют заказы с демандами PICKUP и DROP |
shifts.key | Ключ смены, уникальный идентификатор | |
shifts.start_location_key | Ключ начальной локации. | Если ключ не задан - то путь транспорта начинается на первом заказе |
shifts.finish_location_key | Ключ финальной локации | Если ключ не задан - то путь транспорта завершается на последнем заказе |
shifts.attributes.{key} | Атрибуты. Используются для указания служебной информации | {key} - ключ атрибута. Можно заводить несколько. Эти данные не учитываются в планировании |
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 | Максимальная сумма штрафов | По умолчанию: 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.{key} | Атрибуты, используются для указания служебной информации | {key} - ключ атрибута. Можно заводить несколько. Эти данные не учитываются в планировании. |
Описываемый объект:
key required | string [ 1 .. 1024 ] characters Ключ транспорта, уникальный идентификатор. |
required | Array of objects (transport_shift) [ 1 .. 15001 ] items unique Список рабочих смен транспорта. |
transport_type | string (transport_type) Enum: "CAR" "TRUCK_1500" "TRUCK_3000" … 9 more Типы транспорта:
Разрешенная масса - это масса снаряженного транспорта с грузом и водителем, установленная предприятием-изготовителем в качестве максимально допустимой. |
Array of objects (box) [ 0 .. 100 ] items unique Default: [] Список отсеков транспорта, которые могут вмещать груз. | |
object or null (transport_compatibilities) Совместимости транспорта с исполнителями и локациями. | |
object or null (transport_limits) Ограничения на загрузку транспорт. | |
Array of objects (attributes) [ 0 .. 1000 ] items unique Атрибуты. Используются для указания служебной информации. |
{- "key": "transport001",
- "shifts": [
- {
- "key": "shift01",
- "availability_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "working_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "start_location_key": "start_location01",
- "finish_location_key": "finish_location01",
- "tariff": {
- "cost_per_shift": 2000,
- "constraints": [
- {
- "stage_length": 100000000,
- "cost_per_unit": 0.001
}
], - "transportation_cost": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}, - "max_penalty_cost": 2000
}, - "attributes": [ ]
}
], - "transport_type": "CAR",
- "boxes": [ ],
- "compatibilities": {
- "transport_features": [ ],
- "transport_features_lifetimes": [ ],
- "performer_restrictions": [ ]
}, - "limits": {
- "max_boxes": 2,
- "max_capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}, - "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 для одного груза |
Описываемый объект:
key required | string [ 1 .. 1024 ] characters Ключ отсека, уникальный идентификатор, используется для идентификации размещения грузов по отсекам. |
object or null (capacity) Вместимость отсека, которая ограничивает максимальную сумму по всем полям | |
object or null (box_compatibilities) Совместимости отсека транспорта. | |
object or null (box_limits)
|
{- "key": "box01",
- "capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}, - "compatibilities": {
- "width": 1,
- "height": 3.1,
- "length": 2.1,
- "box_features": [ ]
}, - "limits": {
- "max_one_cargo_capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}
}
Название листа 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.{key} | Атрибуты. Используются для указания служебной информации | {key} - ключ атрибута. Можно заводить несколько. Эти данные не учитываются в планировании. |
compatibilities .order_features | Список свойств заказа | |
compatibilities .order_restrictions | Список требований к заказу, выполняемому в этом же рейсе | |
compatibilities .performer_restrictions | Список необходимых требований к исполнителю | Используется для проверки совместимости исполнителя и заказа (работы). |
compatibilities .performer_blacklist | Список требований, наличие которых у исполнителя не допустимо | Используется для проверки совместимости исполнителя и заказа (работы). Данный список не должен пересекаться с performer_restrictions |
attributes.{key} | Атрибуты, используются для указания служебной информации | {key} - ключ атрибута. Можно заводить несколько. Эти данные не учитываются в планировании. |
Описываемый объект:
key required | string [ 1 .. 1024 ] characters Ключ заказа, уникальный идентификатор. |
required | Array of objects (demand) [ 1 .. 1000 ] items unique Список заявок. |
Array of objects (cargo) [ 0 .. 1000 ] items unique Default: [] Список грузов, на которые ссылаются заявки данного заказа. Список должен быть пустой, если все заявки заказа имеют тип | |
object or null (order_compatibilities) Совместимости заказа с исполнителями и другими заказами. | |
Array of objects (attributes) [ 0 .. 1000 ] items unique Атрибуты. Используются для указания служебной информации. |
{- "key": "order01",
- "demands": [
- {
- "key": "demand_1",
- "demand_type": "WORK",
- "target_cargos": [
- "cargo01"
], - "precedence_in_trip": 1,
- "precedence_in_order": 1,
- "possible_events": [
- {
- "key": "event_1",
- "location_key": "location01",
- "duration": "P1Y1M1DT2H12M34.3S",
- "reward": 199.9,
- "hard_time_window": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "soft_time_window": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}
], - "attributes": [ ]
}
], - "cargos": [ ],
- "compatibilities": {
- "order_features": [ ],
- "order_restrictions": [ ],
- "performer_restrictions": [ ],
- "performer_blacklist": [ ]
}, - "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 | Список необходимых требований к грузу | Используется для проверки совместимости груза с другими грузами. Несовместимые грузы не могу находится одновременно в одном отсеке транспорта |
Описываемый объект:
key required | string [ 1 .. 1024 ] characters Ключ груза, уникальный идентификатор. |
object or null (capacity) Аддитивные меры груза. | |
object or null (cargo_compatibilities) Совместимости груза с отсеком транспорта и другими грузами. | |
target_box_key | string or null [ 1 .. 1024 ] characters Default: null Ключ отсека транспорта, в котором уже находится груз. Применимо только для груза, который находится в заявке с типом |
{- "key": "cargo01",
- "capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}, - "compatibilities": {
- "width": 1,
- "height": 0.3,
- "length": 2.2,
- "rotation": [
- "ALL"
], - "box_restrictions": [ ],
- "cargo_features": [ ],
- "cargo_restrictions": [ ]
}, - "target_box_key": "box01"
}
Название листа hardlinks
.
Список назначений.
Описываемый объект:
key required | string [ 1 .. 1024 ] characters Ключ назначения. |
required | Array of objects (hardlink_element) [ 2 .. 1000 ] items Список элементов группы назначения. |
{- "key": "group01",
- "links": [
- {
- "type": "ORDER",
- "entity_key": "ord0001"
}, - {
- "type": "ORDER",
- "entity_key": "ord0001"
}
]
}
Название листа trips
.
Список рейсов.
Описываемый объект:
key required | string [ 1 .. 1024 ] characters Уникальный идентификатор рейса. |
name | string (trip_name) [ 0 .. 64 ] characters Краткое наименование рейса. |
required | object (assigned_performer) Назначенная на определенное время ( |
required | object (assigned_transport) Назначенная на определенное время ( |
required | Array of objects (trip_state) [ 0 .. 15001 ] items Список состояний исполнителя. |
waitlist | Array of strings (trip_waitlist) [ 0 .. 15001 ] items unique [ items [ 1 .. 1024 ] characters ] Список ключей заказов, назначенных на исполнителя, но не запланированных на определенное время. |
Array of objects (attributes) [ 0 .. 1000 ] items unique Атрибуты. Используются для указания служебной информации. |
{- "key": "631988f0-9e27-11ed-a8fc-0242ac120002",
- "name": "1-ABC",
- "performer": {
- "performer_key": "performer0001",
- "shift_key": "performer0001_shift01",
- "shift_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}, - "transport": {
- "transport_key": "transport001",
- "shift_key": "performer01",
- "shift_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}, - "states": [
- {
- "time": "2024-02-21T09:30:00+03:00",
- "order_key": "order01",
- "demand_key": "demand01.1",
- "event_key": "event01",
- "location_key": "location01",
- "flags": [ ],
- "cargo_placements": [ ],
- "attributes": [ ]
}
], - "waitlist": [
- "order02"
], - "attributes": [ ]
}
Название листа facts
.
Список фактов.
Описываемый объект:
Array of objects (order_fact) [ 0 .. 50001 ] items Список фактов по заказам - совершенных действий с заказами или его частями (заявками). | |
Array of objects (performer_fact) [ 0 .. 15001 ] items Список фактов о нахождении исполнителя в определенной локации. При наличии нескольких фактов учитывается только самый поздний по полю |
{- "order_facts": [
- {
- "key": "fact_01",
- "time": "2024-02-21T09:30:00+03:00",
- "type": "ORDER_DONE",
- "order_key": "order_01",
- "demand_key": "order_01_demand_01"
}
], - "performer_facts": [
- {
- "key": "fact_01",
- "time": "2024-02-21T09:30:00+03:00",
- "performer_key": "performer_01",
- "location_key": "location01"
}
]
}
Название листа plan_settings
.
Настройки планирования.
Описываемый объект:
object (trips_settings) Настройки создания рейсов. | |
object (geo_settings) Настройки использования гео-данных. | |
object (calculation_settings) Настройки процесса расчета. |
{- "trips_settings": {
- "configuration": "optimize_distance",
- "trip_start_time_strategy": "LOWEST_COST",
- "assumptions": {
- "transport_factor": [ ],
- "capacity_factor": [ ],
- "demands_extra_duration": [ ],
- "feature_lifetimes": [ ],
- "disable_compatibility": true,
- "disable_capacity": true,
- "same_order_time_window": true,
- "expand_shift_time_window": true
}, - "penalties": {
- "compatibilities": [ ]
}
}, - "geo_settings": {
- "geo_provider": "OSRM",
- "toll_roads": false,
- "ferry_crossing": false,
- "traffic_jams": false,
- "flight_distance": true,
- "restricted_zones": [
- "ART_MOSCOW_MKAD_CARGO_FRAME"
]
}, - "calculation_settings": {
- "max_calculation_time": "PT4M30S",
- "max_waiting_time": "PT2H",
- "result_ttl": "PT4M30S",
- "result_timezone": 3,
- "treat_warnings_as_errors": true,
- "precision": 3
}
}
Название листа actualize_settings
.
Настройки актуализации.
Описываемый объект:
current_time | string or null<date-time> Указание даты и времени, которое для актуализации будет являться текущим, в соответствии с ISO 8601. Если не указано - берется текущее время получения запроса сервером. |
object (geo_settings) Настройки использования гео-данных. | |
object (calculation_settings) Настройки процесса расчета. |
{- "current_time": "2024-02-21T09:30:00+03:00",
- "geo_settings": {
- "geo_provider": "OSRM",
- "toll_roads": false,
- "ferry_crossing": false,
- "traffic_jams": false,
- "flight_distance": true,
- "restricted_zones": [
- "ART_MOSCOW_MKAD_CARGO_FRAME"
]
}, - "calculation_settings": {
- "max_calculation_time": "PT4M30S",
- "max_waiting_time": "PT2H",
- "result_ttl": "PT4M30S",
- "result_timezone": 3,
- "treat_warnings_as_errors": true,
- "precision": 3
}
}
Название листа replan_settings
.
Настройки перепланирования.
Описываемый объект:
object (replan_strategy) Стратегия перепланирования. | |
object (trips_settings) Настройки создания рейсов. | |
object (geo_settings) Настройки использования гео-данных. | |
object (calculation_settings) Настройки процесса расчета. |
{- "replan_strategy": {
- "reorder": true,
- "plan_new_orders": true,
- "create_new_trips": true
}, - "trips_settings": {
- "configuration": "optimize_distance",
- "trip_start_time_strategy": "LOWEST_COST",
- "assumptions": {
- "transport_factor": [ ],
- "capacity_factor": [ ],
- "demands_extra_duration": [ ],
- "feature_lifetimes": [ ],
- "disable_compatibility": true,
- "disable_capacity": true,
- "same_order_time_window": true,
- "expand_shift_time_window": true
}, - "penalties": {
- "compatibilities": [ ]
}
}, - "geo_settings": {
- "geo_provider": "OSRM",
- "toll_roads": false,
- "ferry_crossing": false,
- "traffic_jams": false,
- "flight_distance": true,
- "restricted_zones": [
- "ART_MOSCOW_MKAD_CARGO_FRAME"
]
}, - "calculation_settings": {
- "max_calculation_time": "PT4M30S",
- "max_waiting_time": "PT2H",
- "result_ttl": "PT4M30S",
- "result_timezone": 3,
- "treat_warnings_as_errors": true,
- "precision": 3
}
}
Планирование - создание рейсов, которые учитывают все заданные ограничения, на основе данных о заказах, исполнителях и транспорте.
Запросы на планирования возможно выполнять в синхронном (для тестирования) и асинхронном (для основного использования) режимах.
Синхронный метод для создания рейсов. Данный метод рекомендуется только для тестового использования и ручного запуска расчетов на небольшом объеме данных. Для боевой среды рекомендуется использовать асинхронный метод.
Новый запрос на планирование.
required | Array of objects (location) [ 1 .. 15001 ] items unique Список локаций, которые используются в заказах и сменах. |
required | Array of objects (order) [ 1 .. 15001 ] items unique Список заказов. |
required | Array of objects (performer) [ 1 .. 15001 ] items unique Список доступных исполнителей. |
required | Array of objects (transport) [ 1 .. 15001 ] items unique Список доступного транспорта. |
Array of objects (hardlink) [ 0 .. 15001 ] items unique Default: [] Список назначений. | |
object (plan_settings) Настройки планирования. | |
Array of objects (routing_transport_matrix_list) [ 0 .. 12 ] items unique Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации | |
dataset_name | string (dataset_name) [ 0 .. 1000 ] characters Название датасета. Техническое поле, не влияющее на планирование. |
required | object (tracedata) Данные используемые для трассировки запросов. |
required | Array of objects (trip) [ 0 .. 15001 ] items unique Default: [] Расписание рейсов, назначенных на исполнителей. |
required | object or null (plan_statistics) Общая статистика по запланированным рейсам. |
Array of objects (entity_warning_list) [ 0 .. 15001 ] items Список предупреждений. | |
object (unplanned_items) Список незапланированных сущностей. | |
progress required | integer<int32> (calculation_progress) [ 0 .. 100 ] Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов. |
required | object (calculation_info) Информация о расчете. |
{- "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-02-08T05:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T05:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T05:00:00+00:00",
- "to": "2024-02-08T07:00:00+00:00"
}
}
]
}
]
}
], - "performers": [
- {
- "key": "performer_1",
- "shifts": [
- {
- "key": "performer_1_shift",
- "availability_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-08T20:59:59+00:00"
}, - "working_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-08T20:59:59+00:00"
}, - "working_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-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
}
}
}
{- "tracedata": {
- "code": "861c8e0a-2651-444e-b426-71cdccc31423",
- "client": "veeroute_|_example",
- "server": "edge",
- "service": "UNIVERSAL",
- "operation": "run_plan_calculation",
- "time": "2024-02-01T11:50:15.123Z"
}, - "trips": [
- {
- "key": "performer_1_shift",
- "performer": {
- "performer_key": "performer_1",
- "shift_key": "performer_1_shift",
- "shift_time": {
- "from": "2024-02-08T04:48:15Z",
- "to": "2024-02-08T05:40:56Z"
}
}, - "transport": {
- "transport_key": "transport_1",
- "shift_key": "transport_1_shift",
- "shift_time": {
- "from": "2024-02-08T04:48:15Z",
- "to": "2024-02-08T05:40:56Z"
}
}, - "states": [
- {
- "time": "2024-02-08T04:48:15Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T04:48:15Z",
- "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_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T04:48:15Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:48:15Z",
- "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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:48:15Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:48:15Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:00:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:00:00Z",
- "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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:12:04Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:12:04Z",
- "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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:27:04Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:27:04Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:56Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:56Z",
- "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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:40:56Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [ ],
- "attributes": [ ]
}
], - "waitlist": [ ],
- "attributes": [ ]
}
], - "statistics": {
- "total_statistics": {
- "cost": 2176.933,
- "reward": 3000.3,
- "measurements": {
- "driving_time": "PT52M41S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT35M",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT1H27M41S",
- "distance": 31306,
- "time_window": {
- "from": "2024-02-08T04:48:15Z",
- "to": "2024-02-08T05:40:56Z"
}
}, - "performers_count": 1,
- "trips_count": 1,
- "orders_count": 3,
- "plan_orders_count": 3,
- "waitlist_orders_count": 0,
- "cargo_capacity_ratio": {
- "mass": 0.01,
- "volume": 0,
- "capacity_a": 0,
- "capacity_b": 0,
- "capacity_c": 0
}, - "max_transport_load": {
- "mass": 0.006,
- "volume": 0,
- "capacity_a": 0,
- "capacity_b": 0,
- "capacity_c": 0
}, - "quality": {
- "soft_time_window_violations": {
- "before": {
- "keys": [ ],
- "count": 0
}, - "after": {
- "keys": [ ],
- "count": 0
}
}, - "hard_time_window_violations": {
- "before": {
- "keys": [ ],
- "count": 0
}, - "after": {
- "keys": [ ],
- "count": 0
}
}
}
}, - "trips_statistics": [
- {
- "trip_key": "performer_1_shift",
- "statistics": {
- "cost": 2176.9333333333334,
- "reward": 3000.3,
- "measurements": {
- "driving_time": "PT52M41S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT35M",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT1H27M41S",
- "distance": 31306,
- "time_window": {
- "from": "2024-02-08T04:48:15Z",
- "to": "2024-02-08T05:40:56Z"
}
}, - "performers_count": 1,
- "trips_count": 1,
- "orders_count": 3,
- "plan_orders_count": 3,
- "waitlist_orders_count": 0,
- "cargo_capacity_ratio": {
- "mass": 0.01,
- "volume": 1,
- "capacity_a": 1,
- "capacity_b": 1,
- "capacity_c": 1
}, - "max_transport_load": {
- "mass": 0.006,
- "volume": 1,
- "capacity_a": 1,
- "capacity_b": 1,
- "capacity_c": 1
}, - "quality": {
- "soft_time_window_violations": {
- "before": {
- "keys": [ ],
- "count": 0
}, - "after": {
- "keys": [ ],
- "count": 0
}
}, - "hard_time_window_violations": {
- "before": {
- "keys": [ ],
- "count": 0
}, - "after": {
- "keys": [ ],
- "count": 0
}
}
}
}, - "stop_statistics": [
- {
- "location_key": "location_storage",
- "demand_ids": [
- "demand_2_pickup",
- "demand_1_pickup"
], - "stop_time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T04:38:34Z"
}, - "measurements": {
- "driving_time": "PT0S",
- "waiting_time": "PT0S",
- "working_time": "PT0S",
- "break_time": "PT0S",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT0S",
- "distance": 0,
- "time_window": {
- "from": "2024-02-08T04:48:15Z",
- "to": "2024-02-08T04:48:15Z"
}
}, - "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": 1,
- "capacity": {
- "mass": 1,
- "volume": 0,
- "capacity_a": 0,
- "capacity_b": 0,
- "capacity_c": 0
}
}
}, - {
- "location_key": "location_client_1",
- "demand_ids": [
- "demand_1_drop"
], - "stop_time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T04:38:34Z"
}, - "measurements": {
- "driving_time": "PT21M45S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT10M",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT31M45S",
- "distance": 8878,
- "time_window": {
- "from": "2024-02-08T04:48:15Z",
- "to": "2024-02-08T05:10:00Z"
}
}, - "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": 0,
- "capacity": {
- "mass": 0,
- "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",
- "demand_ids": [
- "demand_3_work"
], - "stop_time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T04:38:34Z"
}, - "measurements": {
- "driving_time": "PT17M4S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT15M",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT32M4S",
- "distance": 10003,
- "time_window": {
- "from": "2024-02-08T05:10:00Z",
- "to": "2024-02-08T05:27:04Z"
}
}, - "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": 2,
- "capacity": {
- "mass": 2,
- "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_2",
- "demand_ids": [
- "demand_2_drop"
], - "stop_time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T04:38:34Z"
}, - "measurements": {
- "driving_time": "PT13M52S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT10M",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT23M52S",
- "distance": 12425,
- "time_window": {
- "from": "2024-02-08T05:27:04Z",
- "to": "2024-02-08T05:40:56Z"
}
}, - "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": 0,
- "capacity": {
- "mass": 0,
- "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": 0,
- "capacity": {
- "mass": 0,
- "volume": 0,
- "capacity_a": 0,
- "capacity_b": 0,
- "capacity_c": 0
}
}
}
], - "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
}
}
}
]
}, - "progress": 100,
- "info": {
- "status": "FINISHED_IN_TIME",
- "result_version": 108,
- "preparing_time": "PT1M10S",
- "business_validation_time": "PT1M10S",
- "math_validation_time": "PT1M10S",
- "waiting_time": "PT15S",
- "calculation_time": "PT1M10S"
}, - "warnings": [ ],
- "unplanned_items": {
- "order_keys": [ ],
- "performer_keys": [ ],
- "transport_keys": [ ],
- "hardlink_keys": [ ]
}
}
Запуск асинхронного планирования.
required | Array of objects (location) [ 1 .. 15001 ] items unique Список локаций, которые используются в заказах и сменах. |
required | Array of objects (order) [ 1 .. 15001 ] items unique Список заказов. |
required | Array of objects (performer) [ 1 .. 15001 ] items unique Список доступных исполнителей. |
required | Array of objects (transport) [ 1 .. 15001 ] items unique Список доступного транспорта. |
Array of objects (hardlink) [ 0 .. 15001 ] items unique Default: [] Список назначений. | |
object (plan_settings) Настройки планирования. | |
Array of objects (routing_transport_matrix_list) [ 0 .. 12 ] items unique Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации | |
dataset_name | string (dataset_name) [ 0 .. 1000 ] characters Название датасета. Техническое поле, не влияющее на планирование. |
required | object (tracedata) Данные используемые для трассировки запросов. |
id required | string<uuid> (calculation_id) Идентификатор расчета. |
{- "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-02-08T05:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T05:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T05:00:00+00:00",
- "to": "2024-02-08T07:00:00+00:00"
}
}
]
}
]
}
], - "performers": [
- {
- "key": "performer_1",
- "shifts": [
- {
- "key": "performer_1_shift",
- "availability_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-08T20:59:59+00:00"
}, - "working_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-08T20:59:59+00:00"
}, - "working_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-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
}
}
}
{- "tracedata": {
- "code": "11111111-2222-3333-4444-555555555555",
- "client": "company_|_username",
- "server": "server_name",
- "service": "UNIVERSAL",
- "operation": "run_plan_calculation",
- "time": "2024-02-21T09:30:00+03:00"
}, - "id": "11111111-2222-3333-4444-555555555555"
}
Получение состояния расчета по идентификатору расчета.
id required | string<uuid> (calculation_id) Example: 11111111-2222-3333-4444-555555555555 Идентификатор расчета. |
required | object (tracedata) Данные используемые для трассировки запросов. |
progress required | integer<int32> (calculation_progress) [ 0 .. 100 ] Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов. |
required | object (calculation_info) Информация о расчете. |
{- "tracedata": {
- "code": "11111111-2222-3333-4444-555555555555",
- "client": "company_|_username",
- "server": "server_name",
- "service": "UNIVERSAL",
- "operation": "run_plan_calculation",
- "time": "2024-02-21T09:30:00+03:00"
}, - "progress": 52,
- "info": {
- "status": "FINISHED_IN_TIME",
- "result_version": 133,
- "preparing_time": "P1Y1M1DT2H12M34.3S",
- "business_validation_time": "P1Y1M1DT2H12M34.3S",
- "math_validation_time": "P1Y1M1DT2H12M34.3S",
- "waiting_time": "P1Y1M1DT2H12M34.3S",
- "calculation_time": "P1Y1M1DT2H12M34.3S"
}
}
Отмена процесса планирования по идентификатору расчета.
id required | string<uuid> (calculation_id) Example: 11111111-2222-3333-4444-555555555555 Идентификатор расчета. |
{- "tracedata": {
- "code": "215b87e0-4407-4e0f-b2cc-8540f8f0cad7",
- "client": "veeroute_|_example",
- "server": "edge",
- "service": "UNIVERSAL",
- "operation": "run_plan_calculation",
- "time": "2024-02-28T17:13:27.945583194Z"
}, - "message": "logical",
- "schema_errors": [ ],
- "logical_errors": [
- {
- "type": "UNIQUE_IDS_VIOLATION",
- "entities": [
- {
- "entity_key": "order_1",
- "entity_type": "ORDER"
}
]
}
], - "warnings": [ ]
}
Получение результата планирования по идентификатору расчета.
id required | string<uuid> (calculation_id) Example: 11111111-2222-3333-4444-555555555555 Идентификатор расчета. |
required | object (tracedata) Данные используемые для трассировки запросов. |
required | Array of objects (trip) [ 0 .. 15001 ] items unique Default: [] Расписание рейсов, назначенных на исполнителей. |
required | object or null (plan_statistics) Общая статистика по запланированным рейсам. |
Array of objects (entity_warning_list) [ 0 .. 15001 ] items Список предупреждений. | |
object (unplanned_items) Список незапланированных сущностей. | |
progress required | integer<int32> (calculation_progress) [ 0 .. 100 ] Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов. |
required | object (calculation_info) Информация о расчете. |
required | object (tracedata) Данные используемые для трассировки запросов. |
required | Array of objects (trip) [ 0 .. 15001 ] items unique Default: [] Расписание рейсов, назначенных на исполнителей. |
required | object or null (plan_statistics) Общая статистика по запланированным рейсам. |
Array of objects (entity_warning_list) [ 0 .. 15001 ] items Список предупреждений. | |
object (unplanned_items) Список незапланированных сущностей. | |
progress required | integer<int32> (calculation_progress) [ 0 .. 100 ] Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов. |
required | object (calculation_info) Информация о расчете. |
{- "tracedata": {
- "code": "861c8e0a-2651-444e-b426-71cdccc31423",
- "client": "veeroute_|_example",
- "server": "edge",
- "service": "UNIVERSAL",
- "operation": "run_plan_calculation",
- "time": "2024-02-01T11:50:15.123Z"
}, - "trips": [
- {
- "key": "performer_1_shift",
- "performer": {
- "performer_key": "performer_1",
- "shift_key": "performer_1_shift",
- "shift_time": {
- "from": "2024-02-08T04:48:15Z",
- "to": "2024-02-08T05:40:56Z"
}
}, - "transport": {
- "transport_key": "transport_1",
- "shift_key": "transport_1_shift",
- "shift_time": {
- "from": "2024-02-08T04:48:15Z",
- "to": "2024-02-08T05:40:56Z"
}
}, - "states": [
- {
- "time": "2024-02-08T04:48:15Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T04:48:15Z",
- "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_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T04:48:15Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:48:15Z",
- "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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:48:15Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:48:15Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:00:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:00:00Z",
- "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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:12:04Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:12:04Z",
- "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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:27:04Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:27:04Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:56Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:56Z",
- "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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:40:56Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [ ],
- "attributes": [ ]
}
], - "waitlist": [ ],
- "attributes": [ ]
}
], - "statistics": {
- "total_statistics": {
- "cost": 2176.933,
- "reward": 3000.3,
- "measurements": {
- "driving_time": "PT52M41S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT35M",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT1H27M41S",
- "distance": 31306,
- "time_window": {
- "from": "2024-02-08T04:48:15Z",
- "to": "2024-02-08T05:40:56Z"
}
}, - "performers_count": 1,
- "trips_count": 1,
- "orders_count": 3,
- "plan_orders_count": 3,
- "waitlist_orders_count": 0,
- "cargo_capacity_ratio": {
- "mass": 0.01,
- "volume": 0,
- "capacity_a": 0,
- "capacity_b": 0,
- "capacity_c": 0
}, - "max_transport_load": {
- "mass": 0.006,
- "volume": 0,
- "capacity_a": 0,
- "capacity_b": 0,
- "capacity_c": 0
}, - "quality": {
- "soft_time_window_violations": {
- "before": {
- "keys": [ ],
- "count": 0
}, - "after": {
- "keys": [ ],
- "count": 0
}
}, - "hard_time_window_violations": {
- "before": {
- "keys": [ ],
- "count": 0
}, - "after": {
- "keys": [ ],
- "count": 0
}
}
}
}, - "trips_statistics": [
- {
- "trip_key": "performer_1_shift",
- "statistics": {
- "cost": 2176.9333333333334,
- "reward": 3000.3,
- "measurements": {
- "driving_time": "PT52M41S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT35M",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT1H27M41S",
- "distance": 31306,
- "time_window": {
- "from": "2024-02-08T04:48:15Z",
- "to": "2024-02-08T05:40:56Z"
}
}, - "performers_count": 1,
- "trips_count": 1,
- "orders_count": 3,
- "plan_orders_count": 3,
- "waitlist_orders_count": 0,
- "cargo_capacity_ratio": {
- "mass": 0.01,
- "volume": 1,
- "capacity_a": 1,
- "capacity_b": 1,
- "capacity_c": 1
}, - "max_transport_load": {
- "mass": 0.006,
- "volume": 1,
- "capacity_a": 1,
- "capacity_b": 1,
- "capacity_c": 1
}, - "quality": {
- "soft_time_window_violations": {
- "before": {
- "keys": [ ],
- "count": 0
}, - "after": {
- "keys": [ ],
- "count": 0
}
}, - "hard_time_window_violations": {
- "before": {
- "keys": [ ],
- "count": 0
}, - "after": {
- "keys": [ ],
- "count": 0
}
}
}
}, - "stop_statistics": [
- {
- "location_key": "location_storage",
- "demand_ids": [
- "demand_2_pickup",
- "demand_1_pickup"
], - "stop_time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T04:38:34Z"
}, - "measurements": {
- "driving_time": "PT0S",
- "waiting_time": "PT0S",
- "working_time": "PT0S",
- "break_time": "PT0S",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT0S",
- "distance": 0,
- "time_window": {
- "from": "2024-02-08T04:48:15Z",
- "to": "2024-02-08T04:48:15Z"
}
}, - "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": 1,
- "capacity": {
- "mass": 1,
- "volume": 0,
- "capacity_a": 0,
- "capacity_b": 0,
- "capacity_c": 0
}
}
}, - {
- "location_key": "location_client_1",
- "demand_ids": [
- "demand_1_drop"
], - "stop_time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T04:38:34Z"
}, - "measurements": {
- "driving_time": "PT21M45S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT10M",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT31M45S",
- "distance": 8878,
- "time_window": {
- "from": "2024-02-08T04:48:15Z",
- "to": "2024-02-08T05:10:00Z"
}
}, - "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": 0,
- "capacity": {
- "mass": 0,
- "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",
- "demand_ids": [
- "demand_3_work"
], - "stop_time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T04:38:34Z"
}, - "measurements": {
- "driving_time": "PT17M4S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT15M",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT32M4S",
- "distance": 10003,
- "time_window": {
- "from": "2024-02-08T05:10:00Z",
- "to": "2024-02-08T05:27:04Z"
}
}, - "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": 2,
- "capacity": {
- "mass": 2,
- "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_2",
- "demand_ids": [
- "demand_2_drop"
], - "stop_time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T04:38:34Z"
}, - "measurements": {
- "driving_time": "PT13M52S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT10M",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT23M52S",
- "distance": 12425,
- "time_window": {
- "from": "2024-02-08T05:27:04Z",
- "to": "2024-02-08T05:40:56Z"
}
}, - "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": 0,
- "capacity": {
- "mass": 0,
- "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": 0,
- "capacity": {
- "mass": 0,
- "volume": 0,
- "capacity_a": 0,
- "capacity_b": 0,
- "capacity_c": 0
}
}
}
], - "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
}
}
}
]
}, - "progress": 100,
- "info": {
- "status": "FINISHED_IN_TIME",
- "result_version": 108,
- "preparing_time": "PT1M10S",
- "business_validation_time": "PT1M10S",
- "math_validation_time": "PT1M10S",
- "waiting_time": "PT15S",
- "calculation_time": "PT1M10S"
}, - "warnings": [ ],
- "unplanned_items": {
- "order_keys": [ ],
- "performer_keys": [ ],
- "transport_keys": [ ],
- "hardlink_keys": [ ]
}
}
Удаление результата по идентификатору расчета.
id required | string<uuid> (calculation_id) Example: 11111111-2222-3333-4444-555555555555 Идентификатор расчета. |
{- "tracedata": {
- "code": "215b87e0-4407-4e0f-b2cc-8540f8f0cad7",
- "client": "veeroute_|_example",
- "server": "edge",
- "service": "UNIVERSAL",
- "operation": "run_plan_calculation",
- "time": "2024-02-28T17:13:27.945583194Z"
}, - "message": "logical",
- "schema_errors": [ ],
- "logical_errors": [
- {
- "type": "UNIQUE_IDS_VIOLATION",
- "entities": [
- {
- "entity_key": "order_1",
- "entity_type": "ORDER"
}
]
}
], - "warnings": [ ]
}
Проверка данных для планирования перед использованием.
Данные, которые необходимо проверить.
required | Array of objects (location) [ 1 .. 15001 ] items unique Список локаций, которые используются в заказах и сменах. |
required | Array of objects (order) [ 1 .. 15001 ] items unique Список заказов. |
required | Array of objects (performer) [ 1 .. 15001 ] items unique Список доступных исполнителей. |
required | Array of objects (transport) [ 1 .. 15001 ] items unique Список доступного транспорта. |
Array of objects (hardlink) [ 0 .. 15001 ] items unique Default: [] Список назначений. | |
object (plan_settings) Настройки планирования. | |
Array of objects (routing_transport_matrix_list) [ 0 .. 12 ] items unique Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации | |
dataset_name | string (dataset_name) [ 0 .. 1000 ] characters Название датасета. Техническое поле, не влияющее на планирование. |
required | object (tracedata) Данные используемые для трассировки запросов. |
required | Array of objects (entity_warning_list) [ 0 .. 15001 ] items Список предупреждений. |
{- "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-02-08T05:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T05:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T05:00:00+00:00",
- "to": "2024-02-08T07:00:00+00:00"
}
}
]
}
]
}
], - "performers": [
- {
- "key": "performer_1",
- "shifts": [
- {
- "key": "performer_1_shift",
- "availability_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-08T20:59:59+00:00"
}, - "working_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-08T20:59:59+00:00"
}, - "working_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-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
}
}
}
{- "tracedata": {
- "code": "87d0c1a7-375b-412e-9ab8-8f4be24d0456",
- "client": "veeroute_|_example",
- "server": "edge",
- "service": "UNIVERSAL",
- "operation": "run_plan_validation",
- "time": "2024-02-01T11:50:15.123Z"
}, - "warnings": [
- {
- "type": "NO_AVAILABLE_TRANSPORT",
- "entities": [
- {
- "entity_key": "ord0001",
- "entity_type": "ORDER"
}
]
}
]
}
Актуализация рейсов - обновление планового времени выполнения заказов с учетом фактов и без изменения порядка обьезда.
Актуализация проходит в три этапа - проверка, применение фактов, обновление времен у невыполненных состояний рейсов.
Чтобы получить результат применения фактов к исходной задаче воспользуйтесь очисткой данных для актуализации.
Учет текущего времени current_time
:
current_time
.current_time
.Учет фактов о заказах:
PICKUP
, то соответствующая ей заявка с типом DROP
будет преобразована в заявку с типом DROP_FROM_BOX
.DEMAND_START
(закрывается фактом DEMAND_DONE
) - так как исполнитель может в один момент времени выполнять только одну заявку.Учет фактов об исполнителе:
time
.locations
.Учет существующих рейсов:
Полученные в результате актуализации рейсы содержат только те работы, которые осталось выполнить.
Актуализация ранее запланированных рейсов.
Новый запрос на актуализацию.
required | Array of objects (location) [ 1 .. 15001 ] items unique Список локаций, которые используются в заказах и сменах. |
required | Array of objects (order) [ 1 .. 15001 ] items unique Список заказов. |
required | Array of objects (performer) [ 1 .. 15001 ] items unique Список доступных исполнителей. |
required | Array of objects (transport) [ 1 .. 15001 ] items unique Список доступного транспорта. |
Array of objects (hardlink) [ 0 .. 15001 ] items unique Список назначений. | |
required | Array of objects (trip) [ 0 .. 15001 ] items unique Существующие рейсы. |
object (facts) Произошедшие события. | |
Array of objects (routing_transport_matrix_list) [ 0 .. 12 ] items unique Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации | |
object (actualize_settings) Настройки актуализации. | |
dataset_name | string (dataset_name) [ 0 .. 1000 ] characters Название датасета. Техническое поле, не влияющее на планирование. |
required | object (tracedata) Данные используемые для трассировки запросов. |
required | Array of objects (trip) [ 0 .. 15001 ] items unique Default: [] Расписание рейсов, назначенных на исполнителей. |
required | object or null (plan_statistics) Общая статистика по запланированным рейсам. |
Array of objects (entity_warning_list) [ 0 .. 15001 ] items Список предупреждений. | |
object (unplanned_items) Список незапланированных сущностей. | |
progress required | integer<int32> (calculation_progress) [ 0 .. 100 ] Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов. |
required | object (calculation_info) Информация о расчете. |
{- "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-02-08T05:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T05:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T05:00:00+00:00",
- "to": "2024-02-08T07:00:00+00:00"
}
}
]
}
]
}
], - "performers": [
- {
- "key": "performer_1",
- "shifts": [
- {
- "key": "performer_1_shift",
- "availability_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-08T20:59:59+00:00"
}, - "working_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-08T20:59:59+00:00"
}, - "working_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "transport": {
- "transport_key": "transport_1",
- "shift_key": "transport_1_shift",
- "shift_time": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "states": [
- {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:00:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:20:52Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:52Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:52Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:38:39Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:53:39Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [ ],
- "attributes": [ ]
}
], - "waitlist": [ ],
- "attributes": [ ]
}
]
}
{- "tracedata": {
- "code": "11111111-2222-3333-4444-555555555555",
- "client": "company_|_username",
- "server": "server_name",
- "service": "UNIVERSAL",
- "operation": "run_plan_calculation",
- "time": "2024-02-21T09:30:00+03:00"
}, - "trips": [ ],
- "statistics": {
- "total_statistics": {
- "cost": 1231.1,
- "reward": 2343.3,
- "measurements": {
- "driving_time": "P1Y1M1DT2H12M34.3S",
- "waiting_time": "P1Y1M1DT2H12M34.3S",
- "break_time": "P1Y1M1DT2H12M34.3S",
- "working_time": "P1Y1M1DT2H12M34.3S",
- "arriving_time": "P1Y1M1DT2H12M34.3S",
- "departure_time": "P1Y1M1DT2H12M34.3S",
- "total_time": "P1Y1M1DT2H12M34.3S",
- "distance": 5200,
- "time_window": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}, - "trips_count": 250,
- "performers_count": 157,
- "orders_count": 1700,
- "plan_orders_count": 1003,
- "waitlist_orders_count": 697,
- "cargo_capacity_ratio": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}, - "max_transport_load": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}, - "quality": {
- "soft_time_window_violations": {
- "before": {
- "keys": [
- "obj1"
], - "count": 1700
}, - "after": {
- "keys": [
- "obj1"
], - "count": 1700
}
}, - "hard_time_window_violations": {
- "before": {
- "keys": [
- "obj1"
], - "count": 1700
}, - "after": {
- "keys": [
- "obj1"
], - "count": 1700
}
}
}
}, - "trips_statistics": [
- {
- "trip_key": "trip01",
- "statistics": {
- "cost": 1231.1,
- "reward": 2343.3,
- "measurements": {
- "driving_time": "P1Y1M1DT2H12M34.3S",
- "waiting_time": "P1Y1M1DT2H12M34.3S",
- "break_time": "P1Y1M1DT2H12M34.3S",
- "working_time": "P1Y1M1DT2H12M34.3S",
- "arriving_time": "P1Y1M1DT2H12M34.3S",
- "departure_time": "P1Y1M1DT2H12M34.3S",
- "total_time": "P1Y1M1DT2H12M34.3S",
- "distance": 5200,
- "time_window": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}, - "trips_count": 250,
- "performers_count": 157,
- "orders_count": 1700,
- "plan_orders_count": 1003,
- "waitlist_orders_count": 697,
- "cargo_capacity_ratio": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}, - "max_transport_load": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}, - "quality": {
- "soft_time_window_violations": {
- "before": {
- "keys": [
- "obj1"
], - "count": 1700
}, - "after": {
- "keys": [
- "obj1"
], - "count": 1700
}
}, - "hard_time_window_violations": {
- "before": {
- "keys": [
- "obj1"
], - "count": 1700
}, - "after": {
- "keys": [
- "obj1"
], - "count": 1700
}
}
}
}, - "stop_statistics": [
- {
- "location_key": "location01",
- "demand_ids": [
- "demand01"
], - "stop_time_window": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "measurements": {
- "driving_time": "P1Y1M1DT2H12M34.3S",
- "waiting_time": "P1Y1M1DT2H12M34.3S",
- "break_time": "P1Y1M1DT2H12M34.3S",
- "working_time": "P1Y1M1DT2H12M34.3S",
- "arriving_time": "P1Y1M1DT2H12M34.3S",
- "departure_time": "P1Y1M1DT2H12M34.3S",
- "total_time": "P1Y1M1DT2H12M34.3S",
- "distance": 5200,
- "time_window": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}, - "upload": {
- "count": 1460,
- "capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}, - "download": {
- "count": 1460,
- "capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}, - "max_load": {
- "count": 1460,
- "capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}, - "arrival_load": {
- "count": 1460,
- "capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}, - "departure_load": {
- "count": 1460,
- "capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}
}
], - "total_load": {
- "count": 1460,
- "capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}, - "max_load": {
- "count": 1460,
- "capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}, - "max_transfer_load": {
- "count": 1460,
- "capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}
}
]
}, - "warnings": [ ],
- "unplanned_items": {
- "order_keys": [
- "key_01"
], - "order_keys_count": 99,
- "performer_keys": [
- "key_01"
], - "performer_keys_count": 99,
- "transport_keys": [
- "key_01"
], - "transport_keys_count": 99,
- "hardlink_keys": [
- "key_01"
], - "hardlink_keys_count": 99
}, - "progress": 52,
- "info": {
- "status": "FINISHED_IN_TIME",
- "result_version": 133,
- "preparing_time": "P1Y1M1DT2H12M34.3S",
- "business_validation_time": "P1Y1M1DT2H12M34.3S",
- "math_validation_time": "P1Y1M1DT2H12M34.3S",
- "waiting_time": "P1Y1M1DT2H12M34.3S",
- "calculation_time": "P1Y1M1DT2H12M34.3S"
}
}
Проверка данных для актуализации перед использованием.
Данные, которые необходимо проверить.
required | Array of objects (location) [ 1 .. 15001 ] items unique Список локаций, которые используются в заказах и сменах. |
required | Array of objects (order) [ 1 .. 15001 ] items unique Список заказов. |
required | Array of objects (performer) [ 1 .. 15001 ] items unique Список доступных исполнителей. |
required | Array of objects (transport) [ 1 .. 15001 ] items unique Список доступного транспорта. |
Array of objects (hardlink) [ 0 .. 15001 ] items unique Список назначений. | |
required | Array of objects (trip) [ 0 .. 15001 ] items unique Существующие рейсы. |
object (facts) Произошедшие события. | |
Array of objects (routing_transport_matrix_list) [ 0 .. 12 ] items unique Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации | |
object (actualize_settings) Настройки актуализации. | |
dataset_name | string (dataset_name) [ 0 .. 1000 ] characters Название датасета. Техническое поле, не влияющее на планирование. |
required | object (tracedata) Данные используемые для трассировки запросов. |
required | Array of objects (entity_warning_list) [ 0 .. 15001 ] items Список предупреждений. |
{- "locations": [
- {
- "key": "location01",
- "geopoint": {
- "latitude": 55.692789,
- "longitude": 37.554554
}, - "arrival_duration": "P1Y1M1DT2H12M34.3S",
- "departure_duration": "P1Y1M1DT2H12M34.3S",
- "work_windows": [ ],
- "compatibilities": {
- "transport_restrictions": [ ]
}, - "attributes": [ ]
}
], - "orders": [
- {
- "key": "order01",
- "demands": [
- {
- "key": "demand_1",
- "demand_type": "WORK",
- "target_cargos": [
- "cargo01"
], - "precedence_in_trip": 1,
- "precedence_in_order": 1,
- "possible_events": [
- {
- "key": "event_1",
- "location_key": "location01",
- "duration": "P1Y1M1DT2H12M34.3S",
- "reward": 199.9,
- "hard_time_window": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "soft_time_window": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}
], - "attributes": [ ]
}
], - "cargos": [ ],
- "compatibilities": {
- "order_features": [ ],
- "order_restrictions": [ ],
- "performer_restrictions": [ ],
- "performer_blacklist": [ ]
}, - "attributes": [ ]
}
], - "performers": [
- {
- "key": "performer0001",
- "shifts": [
- {
- "key": "shift01",
- "availability_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "working_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "start_location_key": "start_location01",
- "finish_location_key": "finish_location01",
- "max_locations": 15,
- "max_stops": 15,
- "tariff": {
- "cost_per_shift": 2000,
- "constraints": [
- {
- "stage_length": "PT24H",
- "cost_per_unit": 0.001
}
], - "max_penalty_cost": 2000
}, - "work_and_rest_rules": {
- "first_break": {
- "max_work_duration_sum": "P1Y1M1DT2H12M34.3S",
- "duration": "P1Y1M1DT2H12M34.3S"
}
}, - "attributes": [ ]
}
], - "own_transport_type": "CAR",
- "compatibilities": {
- "performer_features": [ ],
- "performer_features_lifetimes": [ ],
- "transport_restrictions": [ ]
}, - "limits": {
- "max_work_shifts": 3
}, - "attributes": [ ]
}
], - "transports": [
- {
- "key": "transport001",
- "shifts": [
- {
- "key": "shift01",
- "availability_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "working_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "start_location_key": "start_location01",
- "finish_location_key": "finish_location01",
- "tariff": {
- "cost_per_shift": 2000,
- "constraints": [
- {
- "stage_length": 100000000,
- "cost_per_unit": 0.001
}
], - "transportation_cost": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}, - "max_penalty_cost": 2000
}, - "attributes": [ ]
}
], - "transport_type": "CAR",
- "boxes": [ ],
- "compatibilities": {
- "transport_features": [ ],
- "transport_features_lifetimes": [ ],
- "performer_restrictions": [ ]
}, - "limits": {
- "max_boxes": 2,
- "max_capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}, - "attributes": [ ]
}
], - "hardlinks": [
- {
- "key": "group01",
- "links": [
- {
- "type": "ORDER",
- "entity_key": "ord0001"
}, - {
- "type": "ORDER",
- "entity_key": "ord0001"
}
]
}
], - "trips": [
- {
- "key": "631988f0-9e27-11ed-a8fc-0242ac120002",
- "name": "1-ABC",
- "performer": {
- "performer_key": "performer0001",
- "shift_key": "performer0001_shift01",
- "shift_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}, - "transport": {
- "transport_key": "transport001",
- "shift_key": "performer01",
- "shift_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}, - "states": [
- {
- "time": "2024-02-21T09:30:00+03:00",
- "order_key": "order01",
- "demand_key": "demand01.1",
- "event_key": "event01",
- "location_key": "location01",
- "flags": [ ],
- "cargo_placements": [ ],
- "attributes": [ ]
}
], - "waitlist": [
- "order02"
], - "attributes": [ ]
}
], - "facts": {
- "order_facts": [
- {
- "key": "fact_01",
- "time": "2024-02-21T09:30:00+03:00",
- "type": "ORDER_DONE",
- "order_key": "order_01",
- "demand_key": "order_01_demand_01"
}
], - "performer_facts": [
- {
- "key": "fact_01",
- "time": "2024-02-21T09:30:00+03:00",
- "performer_key": "performer_01",
- "location_key": "location01"
}
]
}, - "external_routing": [ ],
- "actualize_settings": {
- "current_time": "2024-02-21T09:30:00+03:00",
- "geo_settings": {
- "geo_provider": "OSRM",
- "toll_roads": false,
- "ferry_crossing": false,
- "traffic_jams": false,
- "flight_distance": true,
- "restricted_zones": [
- "ART_MOSCOW_MKAD_CARGO_FRAME"
]
}, - "calculation_settings": {
- "max_calculation_time": "PT4M30S",
- "max_waiting_time": "PT2H",
- "result_ttl": "PT4M30S",
- "result_timezone": 3,
- "treat_warnings_as_errors": true,
- "precision": 3
}
}, - "dataset_name": "custom_dataset_one"
}
{- "tracedata": {
- "code": "87d0c1a7-375b-412e-9ab8-8f4be24d0456",
- "client": "veeroute_|_example",
- "server": "edge",
- "service": "UNIVERSAL",
- "operation": "run_plan_validation",
- "time": "2024-02-01T11:50:15.123Z"
}, - "warnings": [
- {
- "type": "NO_AVAILABLE_TRANSPORT",
- "entities": [
- {
- "entity_key": "ord0001",
- "entity_type": "ORDER"
}
]
}
]
}
Очистка данных для актуализации перед планированием.
Данные, которые необходимо очистить.
required | Array of objects (location) [ 1 .. 15001 ] items unique Список локаций, которые используются в заказах и сменах. |
required | Array of objects (order) [ 1 .. 15001 ] items unique Список заказов. |
required | Array of objects (performer) [ 1 .. 15001 ] items unique Список доступных исполнителей. |
required | Array of objects (transport) [ 1 .. 15001 ] items unique Список доступного транспорта. |
Array of objects (hardlink) [ 0 .. 15001 ] items unique Список назначений. | |
required | Array of objects (trip) [ 0 .. 15001 ] items unique Существующие рейсы. |
object (facts) Произошедшие события. | |
Array of objects (routing_transport_matrix_list) [ 0 .. 12 ] items unique Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации | |
object (actualize_settings) Настройки актуализации. | |
dataset_name | string (dataset_name) [ 0 .. 1000 ] characters Название датасета. Техническое поле, не влияющее на планирование. |
required | Array of objects (location) [ 1 .. 15001 ] items unique Список локаций, которые используются в заказах и сменах. |
required | Array of objects (order) [ 1 .. 15001 ] items unique Список заказов. |
required | Array of objects (performer) [ 1 .. 15001 ] items unique Список доступных исполнителей. |
required | Array of objects (transport) [ 1 .. 15001 ] items unique Список доступного транспорта. |
Array of objects (hardlink) [ 0 .. 15001 ] items unique Список назначений. | |
required | Array of objects (trip) [ 0 .. 15001 ] items unique Существующие рейсы. |
object (facts) Произошедшие события. | |
Array of objects (routing_transport_matrix_list) [ 0 .. 12 ] items unique Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации | |
object (actualize_settings) Настройки актуализации. | |
dataset_name | string (dataset_name) [ 0 .. 1000 ] characters Название датасета. Техническое поле, не влияющее на планирование. |
{- "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-02-08T05:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T05:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T05:00:00+00:00",
- "to": "2024-02-08T07:00:00+00:00"
}
}
]
}
]
}
], - "performers": [
- {
- "key": "performer_1",
- "shifts": [
- {
- "key": "performer_1_shift",
- "availability_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-08T20:59:59+00:00"
}, - "working_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-08T20:59:59+00:00"
}, - "working_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "transport": {
- "transport_key": "transport_1",
- "shift_key": "transport_1_shift",
- "shift_time": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "states": [
- {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:00:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:20:52Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:52Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:52Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:38:39Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:53:39Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [ ],
- "attributes": [ ]
}
], - "waitlist": [ ],
- "attributes": [ ]
}
]
}
{- "locations": [
- {
- "key": "location01",
- "geopoint": {
- "latitude": 55.692789,
- "longitude": 37.554554
}, - "arrival_duration": "P1Y1M1DT2H12M34.3S",
- "departure_duration": "P1Y1M1DT2H12M34.3S",
- "work_windows": [ ],
- "compatibilities": {
- "transport_restrictions": [ ]
}, - "attributes": [ ]
}
], - "orders": [
- {
- "key": "order01",
- "demands": [
- {
- "key": "demand_1",
- "demand_type": "WORK",
- "target_cargos": [
- "cargo01"
], - "precedence_in_trip": 1,
- "precedence_in_order": 1,
- "possible_events": [
- {
- "key": "event_1",
- "location_key": "location01",
- "duration": "P1Y1M1DT2H12M34.3S",
- "reward": 199.9,
- "hard_time_window": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "soft_time_window": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}
], - "attributes": [ ]
}
], - "cargos": [ ],
- "compatibilities": {
- "order_features": [ ],
- "order_restrictions": [ ],
- "performer_restrictions": [ ],
- "performer_blacklist": [ ]
}, - "attributes": [ ]
}
], - "performers": [
- {
- "key": "performer0001",
- "shifts": [
- {
- "key": "shift01",
- "availability_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "working_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "start_location_key": "start_location01",
- "finish_location_key": "finish_location01",
- "max_locations": 15,
- "max_stops": 15,
- "tariff": {
- "cost_per_shift": 2000,
- "constraints": [
- {
- "stage_length": "PT24H",
- "cost_per_unit": 0.001
}
], - "max_penalty_cost": 2000
}, - "work_and_rest_rules": {
- "first_break": {
- "max_work_duration_sum": "P1Y1M1DT2H12M34.3S",
- "duration": "P1Y1M1DT2H12M34.3S"
}
}, - "attributes": [ ]
}
], - "own_transport_type": "CAR",
- "compatibilities": {
- "performer_features": [ ],
- "performer_features_lifetimes": [ ],
- "transport_restrictions": [ ]
}, - "limits": {
- "max_work_shifts": 3
}, - "attributes": [ ]
}
], - "transports": [
- {
- "key": "transport001",
- "shifts": [
- {
- "key": "shift01",
- "availability_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "working_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "start_location_key": "start_location01",
- "finish_location_key": "finish_location01",
- "tariff": {
- "cost_per_shift": 2000,
- "constraints": [
- {
- "stage_length": 100000000,
- "cost_per_unit": 0.001
}
], - "transportation_cost": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}, - "max_penalty_cost": 2000
}, - "attributes": [ ]
}
], - "transport_type": "CAR",
- "boxes": [ ],
- "compatibilities": {
- "transport_features": [ ],
- "transport_features_lifetimes": [ ],
- "performer_restrictions": [ ]
}, - "limits": {
- "max_boxes": 2,
- "max_capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}, - "attributes": [ ]
}
], - "hardlinks": [
- {
- "key": "group01",
- "links": [
- {
- "type": "ORDER",
- "entity_key": "ord0001"
}, - {
- "type": "ORDER",
- "entity_key": "ord0001"
}
]
}
], - "trips": [
- {
- "key": "631988f0-9e27-11ed-a8fc-0242ac120002",
- "name": "1-ABC",
- "performer": {
- "performer_key": "performer0001",
- "shift_key": "performer0001_shift01",
- "shift_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}, - "transport": {
- "transport_key": "transport001",
- "shift_key": "performer01",
- "shift_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}, - "states": [
- {
- "time": "2024-02-21T09:30:00+03:00",
- "order_key": "order01",
- "demand_key": "demand01.1",
- "event_key": "event01",
- "location_key": "location01",
- "flags": [ ],
- "cargo_placements": [ ],
- "attributes": [ ]
}
], - "waitlist": [
- "order02"
], - "attributes": [ ]
}
], - "facts": {
- "order_facts": [
- {
- "key": "fact_01",
- "time": "2024-02-21T09:30:00+03:00",
- "type": "ORDER_DONE",
- "order_key": "order_01",
- "demand_key": "order_01_demand_01"
}
], - "performer_facts": [
- {
- "key": "fact_01",
- "time": "2024-02-21T09:30:00+03:00",
- "performer_key": "performer_01",
- "location_key": "location01"
}
]
}, - "external_routing": [ ],
- "actualize_settings": {
- "current_time": "2024-02-21T09:30:00+03:00",
- "geo_settings": {
- "geo_provider": "OSRM",
- "toll_roads": false,
- "ferry_crossing": false,
- "traffic_jams": false,
- "flight_distance": true,
- "restricted_zones": [
- "ART_MOSCOW_MKAD_CARGO_FRAME"
]
}, - "calculation_settings": {
- "max_calculation_time": "PT4M30S",
- "max_waiting_time": "PT2H",
- "result_ttl": "PT4M30S",
- "result_timezone": 3,
- "treat_warnings_as_errors": true,
- "precision": 3
}
}, - "dataset_name": "custom_dataset_one"
}
Перепланирование - создание новых рейсов на основе уже существующих рейсов с учетом фактов.
Перепланирование проходит в три этапа - проверка, применение фактов и создание ограничений для планирования на базе существующих рейсов, планирование.
Чтобы получить результат применения фактов к исходной задаче воспользуйтесь очисткой данных для перепланирования.
Учет текущего времени current_time
:
current_time
.current_time
.Перепланирование - создание рейсов на основе данных о заказах, исполнителях и транспорте.
Новый запрос на перепланирование.
required | Array of objects (location) [ 1 .. 15001 ] items unique Список локаций, которые используются в заказах и сменах. |
required | Array of objects (order) [ 1 .. 15001 ] items unique Список заказов. |
required | Array of objects (performer) [ 1 .. 15001 ] items unique Список доступных исполнителей. |
required | Array of objects (transport) [ 1 .. 15001 ] items unique Список доступного транспорта. |
Array of objects (hardlink) [ 0 .. 15001 ] items unique Default: [] Список назначений. | |
required | Array of objects (trip) [ 0 .. 15001 ] items unique Существующие рейсы. |
object (facts) Произошедшие события. | |
Array of objects (routing_transport_matrix_list) [ 0 .. 12 ] items unique Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации | |
object (replan_settings) Настройки перепланирования. | |
dataset_name | string (dataset_name) [ 0 .. 1000 ] characters Название датасета. Техническое поле, не влияющее на планирование. |
required | object (tracedata) Данные используемые для трассировки запросов. |
required | Array of objects (trip) [ 0 .. 15001 ] items unique Default: [] Расписание рейсов, назначенных на исполнителей. |
required | object or null (plan_statistics) Общая статистика по запланированным рейсам. |
Array of objects (entity_warning_list) [ 0 .. 15001 ] items Список предупреждений. | |
object (unplanned_items) Список незапланированных сущностей. | |
progress required | integer<int32> (calculation_progress) [ 0 .. 100 ] Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов. |
required | object (calculation_info) Информация о расчете. |
{- "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-02-08T05:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T05:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T05:00:00+00:00",
- "to": "2024-02-08T07:00:00+00:00"
}
}
]
}
]
}
], - "performers": [
- {
- "key": "performer_1",
- "shifts": [
- {
- "key": "performer_1_shift",
- "availability_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-08T20:59:59+00:00"
}, - "working_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-08T20:59:59+00:00"
}, - "working_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "transport": {
- "transport_key": "transport_1",
- "shift_key": "transport_1_shift",
- "shift_time": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "states": [
- {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:00:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:20:52Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:52Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:52Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:38:39Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:53:39Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [ ],
- "attributes": [ ]
}
], - "waitlist": [ ],
- "attributes": [ ]
}
]
}
{- "tracedata": {
- "code": "861c8e0a-2651-444e-b426-71cdccc31423",
- "client": "veeroute_|_example",
- "server": "edge",
- "service": "UNIVERSAL",
- "operation": "run_replan_calculation",
- "time": "2024-02-01T11:50:15.123Z"
}, - "trips": [
- {
- "key": "performer_1_shift",
- "performer": {
- "performer_key": "performer_1",
- "shift_key": "performer_1_shift",
- "shift_time": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "transport": {
- "transport_key": "transport_1",
- "shift_key": "transport_1_shift",
- "shift_time": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "states": [
- {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:00:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:20:52Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:52Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:52Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:38:39Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:53:39Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [ ],
- "attributes": [ ]
}
], - "waitlist": [ ],
- "attributes": [ ]
}
], - "statistics": {
- "total_statistics": {
- "cost": 2415.263,
- "reward": 3000.3,
- "measurements": {
- "driving_time": "PT1H15M5S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT35M",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT1H50M5S",
- "distance": 78117,
- "time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "performers_count": 1,
- "trips_count": 1,
- "orders_count": 3,
- "plan_orders_count": 3,
- "waitlist_orders_count": 0,
- "cargo_capacity_ratio": {
- "mass": 0.01,
- "volume": 0,
- "capacity_a": 0,
- "capacity_b": 0,
- "capacity_c": 0
}, - "max_transport_load": {
- "mass": 0.006,
- "volume": 0,
- "capacity_a": 0,
- "capacity_b": 0,
- "capacity_c": 0
}, - "quality": {
- "soft_time_window_violations": {
- "before": {
- "keys": [ ],
- "count": 0
}, - "after": {
- "keys": [ ],
- "count": 0
}
}, - "hard_time_window_violations": {
- "before": {
- "keys": [ ],
- "count": 0
}, - "after": {
- "keys": [ ],
- "count": 0
}
}
}
}, - "trips_statistics": [
- {
- "trip_key": "performer_1_shift",
- "statistics": {
- "cost": 2415.2633333333333,
- "reward": 3000.3,
- "measurements": {
- "driving_time": "PT1H15M5S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT35M",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT1H50M5S",
- "distance": 78117,
- "time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "performers_count": 1,
- "trips_count": 1,
- "orders_count": 3,
- "plan_orders_count": 3,
- "waitlist_orders_count": 0,
- "cargo_capacity_ratio": {
- "mass": 0.01,
- "volume": 1,
- "capacity_a": 1,
- "capacity_b": 1,
- "capacity_c": 1
}, - "max_transport_load": {
- "mass": 0.006,
- "volume": 1,
- "capacity_a": 1,
- "capacity_b": 1,
- "capacity_c": 1
}, - "quality": {
- "soft_time_window_violations": {
- "before": {
- "keys": [ ],
- "count": 0
}, - "after": {
- "keys": [ ],
- "count": 0
}
}, - "hard_time_window_violations": {
- "before": {
- "keys": [ ],
- "count": 0
}, - "after": {
- "keys": [ ],
- "count": 0
}
}
}
}, - "stop_statistics": [
- {
- "location_key": "location_storage",
- "demand_ids": [
- "demand_2_pickup",
- "demand_1_pickup"
], - "stop_time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T04:38:34Z"
}, - "measurements": {
- "driving_time": "PT0S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT0S",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT0S",
- "distance": 0,
- "time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T04:38:34Z"
}
}, - "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": 1,
- "capacity": {
- "mass": 1,
- "volume": 0,
- "capacity_a": 0,
- "capacity_b": 0,
- "capacity_c": 0
}
}
}, - {
- "location_key": "location_client_2",
- "demand_ids": [
- "demand_2_drop"
], - "stop_time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T04:38:34Z"
}, - "measurements": {
- "driving_time": "PT31M26S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT10M",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT41M26S",
- "distance": 17108,
- "time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T05:10:00Z"
}
}, - "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": 0,
- "capacity": {
- "mass": 0,
- "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_1",
- "demand_ids": [
- "demand_1_drop"
], - "stop_time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T04:38:34Z"
}, - "measurements": {
- "driving_time": "PT20M52S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT10M",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT30M52S",
- "distance": 26991,
- "time_window": {
- "from": "2024-02-08T05:10:00Z",
- "to": "2024-02-08T05:30:52Z"
}
}, - "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": 0,
- "capacity": {
- "mass": 0,
- "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": 0,
- "capacity": {
- "mass": 0,
- "volume": 0,
- "capacity_a": 0,
- "capacity_b": 0,
- "capacity_c": 0
}
}
}, - {
- "location_key": "location_client_3",
- "demand_ids": [
- "demand_3_work"
], - "stop_time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T04:38:34Z"
}, - "measurements": {
- "driving_time": "PT22M47S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT15M",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT37M47S",
- "distance": 34018,
- "time_window": {
- "from": "2024-02-08T05:30:52Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "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": 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
}
}
}
], - "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
}
}
}
]
}, - "progress": 100,
- "info": {
- "status": "FINISHED_IN_TIME",
- "result_version": 108,
- "preparing_time": "PT1M10S",
- "business_validation_time": "PT1M10S",
- "math_validation_time": "PT1M10S",
- "waiting_time": "PT15S",
- "calculation_time": "PT1M10S"
}, - "warnings": [ ],
- "unplanned_items": {
- "order_keys": [ ],
- "performer_keys": [ ],
- "transport_keys": [ ],
- "hardlink_keys": [ ]
}
}
Запуск асинхронного перепланирования.
required | Array of objects (location) [ 1 .. 15001 ] items unique Список локаций, которые используются в заказах и сменах. |
required | Array of objects (order) [ 1 .. 15001 ] items unique Список заказов. |
required | Array of objects (performer) [ 1 .. 15001 ] items unique Список доступных исполнителей. |
required | Array of objects (transport) [ 1 .. 15001 ] items unique Список доступного транспорта. |
Array of objects (hardlink) [ 0 .. 15001 ] items unique Default: [] Список назначений. | |
required | Array of objects (trip) [ 0 .. 15001 ] items unique Существующие рейсы. |
object (facts) Произошедшие события. | |
Array of objects (routing_transport_matrix_list) [ 0 .. 12 ] items unique Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации | |
object (replan_settings) Настройки перепланирования. | |
dataset_name | string (dataset_name) [ 0 .. 1000 ] characters Название датасета. Техническое поле, не влияющее на планирование. |
required | object (tracedata) Данные используемые для трассировки запросов. |
id required | string<uuid> (calculation_id) Идентификатор расчета. |
{- "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-02-08T05:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T05:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T05:00:00+00:00",
- "to": "2024-02-08T07:00:00+00:00"
}
}
]
}
]
}
], - "performers": [
- {
- "key": "performer_1",
- "shifts": [
- {
- "key": "performer_1_shift",
- "availability_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-08T20:59:59+00:00"
}, - "working_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-08T20:59:59+00:00"
}, - "working_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "transport": {
- "transport_key": "transport_1",
- "shift_key": "transport_1_shift",
- "shift_time": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "states": [
- {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:00:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:20:52Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:52Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:52Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:38:39Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:53:39Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [ ],
- "attributes": [ ]
}
], - "waitlist": [ ],
- "attributes": [ ]
}
]
}
{- "tracedata": {
- "code": "11111111-2222-3333-4444-555555555555",
- "client": "company_|_username",
- "server": "server_name",
- "service": "UNIVERSAL",
- "operation": "run_plan_calculation",
- "time": "2024-02-21T09:30:00+03:00"
}, - "id": "11111111-2222-3333-4444-555555555555"
}
Получение состояния расчета по идентификатору расчета.
id required | string<uuid> (calculation_id) Example: 11111111-2222-3333-4444-555555555555 Идентификатор расчета. |
required | object (tracedata) Данные используемые для трассировки запросов. |
progress required | integer<int32> (calculation_progress) [ 0 .. 100 ] Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов. |
required | object (calculation_info) Информация о расчете. |
{- "tracedata": {
- "code": "11111111-2222-3333-4444-555555555555",
- "client": "company_|_username",
- "server": "server_name",
- "service": "UNIVERSAL",
- "operation": "run_plan_calculation",
- "time": "2024-02-21T09:30:00+03:00"
}, - "progress": 52,
- "info": {
- "status": "FINISHED_IN_TIME",
- "result_version": 133,
- "preparing_time": "P1Y1M1DT2H12M34.3S",
- "business_validation_time": "P1Y1M1DT2H12M34.3S",
- "math_validation_time": "P1Y1M1DT2H12M34.3S",
- "waiting_time": "P1Y1M1DT2H12M34.3S",
- "calculation_time": "P1Y1M1DT2H12M34.3S"
}
}
Отмена процесса планирования по идентификатору расчета.
id required | string<uuid> (calculation_id) Example: 11111111-2222-3333-4444-555555555555 Идентификатор расчета. |
{- "tracedata": {
- "code": "215b87e0-4407-4e0f-b2cc-8540f8f0cad7",
- "client": "veeroute_|_example",
- "server": "edge",
- "service": "UNIVERSAL",
- "operation": "run_plan_calculation",
- "time": "2024-02-28T17:13:27.945583194Z"
}, - "message": "logical",
- "schema_errors": [ ],
- "logical_errors": [
- {
- "type": "UNIQUE_IDS_VIOLATION",
- "entities": [
- {
- "entity_key": "order_1",
- "entity_type": "ORDER"
}
]
}
], - "warnings": [ ]
}
Получение результата перепланирования по идентификатору расчета.
id required | string<uuid> (calculation_id) Example: 11111111-2222-3333-4444-555555555555 Идентификатор расчета. |
required | object (tracedata) Данные используемые для трассировки запросов. |
required | Array of objects (trip) [ 0 .. 15001 ] items unique Default: [] Расписание рейсов, назначенных на исполнителей. |
required | object or null (plan_statistics) Общая статистика по запланированным рейсам. |
Array of objects (entity_warning_list) [ 0 .. 15001 ] items Список предупреждений. | |
object (unplanned_items) Список незапланированных сущностей. | |
progress required | integer<int32> (calculation_progress) [ 0 .. 100 ] Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов. |
required | object (calculation_info) Информация о расчете. |
required | object (tracedata) Данные используемые для трассировки запросов. |
required | Array of objects (trip) [ 0 .. 15001 ] items unique Default: [] Расписание рейсов, назначенных на исполнителей. |
required | object or null (plan_statistics) Общая статистика по запланированным рейсам. |
Array of objects (entity_warning_list) [ 0 .. 15001 ] items Список предупреждений. | |
object (unplanned_items) Список незапланированных сущностей. | |
progress required | integer<int32> (calculation_progress) [ 0 .. 100 ] Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов. |
required | object (calculation_info) Информация о расчете. |
{- "tracedata": {
- "code": "861c8e0a-2651-444e-b426-71cdccc31423",
- "client": "veeroute_|_example",
- "server": "edge",
- "service": "UNIVERSAL",
- "operation": "run_replan_calculation",
- "time": "2024-02-01T11:50:15.123Z"
}, - "trips": [
- {
- "key": "performer_1_shift",
- "performer": {
- "performer_key": "performer_1",
- "shift_key": "performer_1_shift",
- "shift_time": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "transport": {
- "transport_key": "transport_1",
- "shift_key": "transport_1_shift",
- "shift_time": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "states": [
- {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:00:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:20:52Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:52Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:52Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:38:39Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:53:39Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [ ],
- "attributes": [ ]
}
], - "waitlist": [ ],
- "attributes": [ ]
}
], - "statistics": {
- "total_statistics": {
- "cost": 2415.263,
- "reward": 3000.3,
- "measurements": {
- "driving_time": "PT1H15M5S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT35M",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT1H50M5S",
- "distance": 78117,
- "time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "performers_count": 1,
- "trips_count": 1,
- "orders_count": 3,
- "plan_orders_count": 3,
- "waitlist_orders_count": 0,
- "cargo_capacity_ratio": {
- "mass": 0.01,
- "volume": 0,
- "capacity_a": 0,
- "capacity_b": 0,
- "capacity_c": 0
}, - "max_transport_load": {
- "mass": 0.006,
- "volume": 0,
- "capacity_a": 0,
- "capacity_b": 0,
- "capacity_c": 0
}, - "quality": {
- "soft_time_window_violations": {
- "before": {
- "keys": [ ],
- "count": 0
}, - "after": {
- "keys": [ ],
- "count": 0
}
}, - "hard_time_window_violations": {
- "before": {
- "keys": [ ],
- "count": 0
}, - "after": {
- "keys": [ ],
- "count": 0
}
}
}
}, - "trips_statistics": [
- {
- "trip_key": "performer_1_shift",
- "statistics": {
- "cost": 2415.2633333333333,
- "reward": 3000.3,
- "measurements": {
- "driving_time": "PT1H15M5S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT35M",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT1H50M5S",
- "distance": 78117,
- "time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "performers_count": 1,
- "trips_count": 1,
- "orders_count": 3,
- "plan_orders_count": 3,
- "waitlist_orders_count": 0,
- "cargo_capacity_ratio": {
- "mass": 0.01,
- "volume": 1,
- "capacity_a": 1,
- "capacity_b": 1,
- "capacity_c": 1
}, - "max_transport_load": {
- "mass": 0.006,
- "volume": 1,
- "capacity_a": 1,
- "capacity_b": 1,
- "capacity_c": 1
}, - "quality": {
- "soft_time_window_violations": {
- "before": {
- "keys": [ ],
- "count": 0
}, - "after": {
- "keys": [ ],
- "count": 0
}
}, - "hard_time_window_violations": {
- "before": {
- "keys": [ ],
- "count": 0
}, - "after": {
- "keys": [ ],
- "count": 0
}
}
}
}, - "stop_statistics": [
- {
- "location_key": "location_storage",
- "demand_ids": [
- "demand_2_pickup",
- "demand_1_pickup"
], - "stop_time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T04:38:34Z"
}, - "measurements": {
- "driving_time": "PT0S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT0S",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT0S",
- "distance": 0,
- "time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T04:38:34Z"
}
}, - "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": 1,
- "capacity": {
- "mass": 1,
- "volume": 0,
- "capacity_a": 0,
- "capacity_b": 0,
- "capacity_c": 0
}
}
}, - {
- "location_key": "location_client_2",
- "demand_ids": [
- "demand_2_drop"
], - "stop_time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T04:38:34Z"
}, - "measurements": {
- "driving_time": "PT31M26S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT10M",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT41M26S",
- "distance": 17108,
- "time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T05:10:00Z"
}
}, - "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": 0,
- "capacity": {
- "mass": 0,
- "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_1",
- "demand_ids": [
- "demand_1_drop"
], - "stop_time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T04:38:34Z"
}, - "measurements": {
- "driving_time": "PT20M52S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT10M",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT30M52S",
- "distance": 26991,
- "time_window": {
- "from": "2024-02-08T05:10:00Z",
- "to": "2024-02-08T05:30:52Z"
}
}, - "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": 0,
- "capacity": {
- "mass": 0,
- "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": 0,
- "capacity": {
- "mass": 0,
- "volume": 0,
- "capacity_a": 0,
- "capacity_b": 0,
- "capacity_c": 0
}
}
}, - {
- "location_key": "location_client_3",
- "demand_ids": [
- "demand_3_work"
], - "stop_time_window": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T04:38:34Z"
}, - "measurements": {
- "driving_time": "PT22M47S",
- "waiting_time": "PT0S",
- "break_time": "PT0S",
- "working_time": "PT15M",
- "arriving_time": "PT0S",
- "departure_time": "PT0S",
- "total_time": "PT37M47S",
- "distance": 34018,
- "time_window": {
- "from": "2024-02-08T05:30:52Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "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": 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
}
}
}
], - "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
}
}
}
]
}, - "progress": 100,
- "info": {
- "status": "FINISHED_IN_TIME",
- "result_version": 108,
- "preparing_time": "PT1M10S",
- "business_validation_time": "PT1M10S",
- "math_validation_time": "PT1M10S",
- "waiting_time": "PT15S",
- "calculation_time": "PT1M10S"
}, - "warnings": [ ],
- "unplanned_items": {
- "order_keys": [ ],
- "performer_keys": [ ],
- "transport_keys": [ ],
- "hardlink_keys": [ ]
}
}
Удаление результата перепланирования по идентификатору расчета.
id required | string<uuid> (calculation_id) Example: 11111111-2222-3333-4444-555555555555 Идентификатор расчета. |
{- "tracedata": {
- "code": "215b87e0-4407-4e0f-b2cc-8540f8f0cad7",
- "client": "veeroute_|_example",
- "server": "edge",
- "service": "UNIVERSAL",
- "operation": "run_plan_calculation",
- "time": "2024-02-28T17:13:27.945583194Z"
}, - "message": "logical",
- "schema_errors": [ ],
- "logical_errors": [
- {
- "type": "UNIQUE_IDS_VIOLATION",
- "entities": [
- {
- "entity_key": "order_1",
- "entity_type": "ORDER"
}
]
}
], - "warnings": [ ]
}
Проверка данных для перепланирования перед использованием.
Данные, которые необходимо проверить.
required | Array of objects (location) [ 1 .. 15001 ] items unique Список локаций, которые используются в заказах и сменах. |
required | Array of objects (order) [ 1 .. 15001 ] items unique Список заказов. |
required | Array of objects (performer) [ 1 .. 15001 ] items unique Список доступных исполнителей. |
required | Array of objects (transport) [ 1 .. 15001 ] items unique Список доступного транспорта. |
Array of objects (hardlink) [ 0 .. 15001 ] items unique Default: [] Список назначений. | |
required | Array of objects (trip) [ 0 .. 15001 ] items unique Существующие рейсы. |
object (facts) Произошедшие события. | |
Array of objects (routing_transport_matrix_list) [ 0 .. 12 ] items unique Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации | |
object (replan_settings) Настройки перепланирования. | |
dataset_name | string (dataset_name) [ 0 .. 1000 ] characters Название датасета. Техническое поле, не влияющее на планирование. |
required | object (tracedata) Данные используемые для трассировки запросов. |
required | Array of objects (entity_warning_list) [ 0 .. 15001 ] items Список предупреждений. |
{- "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-02-08T05:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T05:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T05:00:00+00:00",
- "to": "2024-02-08T07:00:00+00:00"
}
}
]
}
]
}
], - "performers": [
- {
- "key": "performer_1",
- "shifts": [
- {
- "key": "performer_1_shift",
- "availability_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-08T20:59:59+00:00"
}, - "working_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-08T20:59:59+00:00"
}, - "working_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "transport": {
- "transport_key": "transport_1",
- "shift_key": "transport_1_shift",
- "shift_time": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "states": [
- {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:00:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:20:52Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:52Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:52Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:38:39Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:53:39Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [ ],
- "attributes": [ ]
}
], - "waitlist": [ ],
- "attributes": [ ]
}
]
}
{- "tracedata": {
- "code": "87d0c1a7-375b-412e-9ab8-8f4be24d0456",
- "client": "veeroute_|_example",
- "server": "edge",
- "service": "UNIVERSAL",
- "operation": "run_plan_validation",
- "time": "2024-02-01T11:50:15.123Z"
}, - "warnings": [
- {
- "type": "NO_AVAILABLE_TRANSPORT",
- "entities": [
- {
- "entity_key": "ord0001",
- "entity_type": "ORDER"
}
]
}
]
}
Очистка данных для перепланирования перед планированием.
Данные, которые необходимо очистить.
required | Array of objects (location) [ 1 .. 15001 ] items unique Список локаций, которые используются в заказах и сменах. |
required | Array of objects (order) [ 1 .. 15001 ] items unique Список заказов. |
required | Array of objects (performer) [ 1 .. 15001 ] items unique Список доступных исполнителей. |
required | Array of objects (transport) [ 1 .. 15001 ] items unique Список доступного транспорта. |
Array of objects (hardlink) [ 0 .. 15001 ] items unique Default: [] Список назначений. | |
required | Array of objects (trip) [ 0 .. 15001 ] items unique Существующие рейсы. |
object (facts) Произошедшие события. | |
Array of objects (routing_transport_matrix_list) [ 0 .. 12 ] items unique Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации | |
object (replan_settings) Настройки перепланирования. | |
dataset_name | string (dataset_name) [ 0 .. 1000 ] characters Название датасета. Техническое поле, не влияющее на планирование. |
required | Array of objects (location) [ 1 .. 15001 ] items unique Список локаций, которые используются в заказах и сменах. |
required | Array of objects (order) [ 1 .. 15001 ] items unique Список заказов. |
required | Array of objects (performer) [ 1 .. 15001 ] items unique Список доступных исполнителей. |
required | Array of objects (transport) [ 1 .. 15001 ] items unique Список доступного транспорта. |
Array of objects (hardlink) [ 0 .. 15001 ] items unique Default: [] Список назначений. | |
required | Array of objects (trip) [ 0 .. 15001 ] items unique Существующие рейсы. |
object (facts) Произошедшие события. | |
Array of objects (routing_transport_matrix_list) [ 0 .. 12 ] items unique Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации | |
object (replan_settings) Настройки перепланирования. | |
dataset_name | string (dataset_name) [ 0 .. 1000 ] characters Название датасета. Техническое поле, не влияющее на планирование. |
{- "locations": [
- {
- "key": "location01",
- "geopoint": {
- "latitude": 55.692789,
- "longitude": 37.554554
}, - "arrival_duration": "P1Y1M1DT2H12M34.3S",
- "departure_duration": "P1Y1M1DT2H12M34.3S",
- "work_windows": [ ],
- "compatibilities": {
- "transport_restrictions": [ ]
}, - "attributes": [ ]
}
], - "orders": [
- {
- "key": "order01",
- "demands": [
- {
- "key": "demand_1",
- "demand_type": "WORK",
- "target_cargos": [
- "cargo01"
], - "precedence_in_trip": 1,
- "precedence_in_order": 1,
- "possible_events": [
- {
- "key": "event_1",
- "location_key": "location01",
- "duration": "P1Y1M1DT2H12M34.3S",
- "reward": 199.9,
- "hard_time_window": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "soft_time_window": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}
], - "attributes": [ ]
}
], - "cargos": [ ],
- "compatibilities": {
- "order_features": [ ],
- "order_restrictions": [ ],
- "performer_restrictions": [ ],
- "performer_blacklist": [ ]
}, - "attributes": [ ]
}
], - "performers": [
- {
- "key": "performer0001",
- "shifts": [
- {
- "key": "shift01",
- "availability_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "working_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "start_location_key": "start_location01",
- "finish_location_key": "finish_location01",
- "max_locations": 15,
- "max_stops": 15,
- "tariff": {
- "cost_per_shift": 2000,
- "constraints": [
- {
- "stage_length": "PT24H",
- "cost_per_unit": 0.001
}
], - "max_penalty_cost": 2000
}, - "work_and_rest_rules": {
- "first_break": {
- "max_work_duration_sum": "P1Y1M1DT2H12M34.3S",
- "duration": "P1Y1M1DT2H12M34.3S"
}
}, - "attributes": [ ]
}
], - "own_transport_type": "CAR",
- "compatibilities": {
- "performer_features": [ ],
- "performer_features_lifetimes": [ ],
- "transport_restrictions": [ ]
}, - "limits": {
- "max_work_shifts": 3
}, - "attributes": [ ]
}
], - "transports": [
- {
- "key": "transport001",
- "shifts": [
- {
- "key": "shift01",
- "availability_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "working_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "start_location_key": "start_location01",
- "finish_location_key": "finish_location01",
- "tariff": {
- "cost_per_shift": 2000,
- "constraints": [
- {
- "stage_length": 100000000,
- "cost_per_unit": 0.001
}
], - "transportation_cost": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}, - "max_penalty_cost": 2000
}, - "attributes": [ ]
}
], - "transport_type": "CAR",
- "boxes": [ ],
- "compatibilities": {
- "transport_features": [ ],
- "transport_features_lifetimes": [ ],
- "performer_restrictions": [ ]
}, - "limits": {
- "max_boxes": 2,
- "max_capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}, - "attributes": [ ]
}
], - "hardlinks": [ ],
- "trips": [
- {
- "key": "631988f0-9e27-11ed-a8fc-0242ac120002",
- "name": "1-ABC",
- "performer": {
- "performer_key": "performer0001",
- "shift_key": "performer0001_shift01",
- "shift_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}, - "transport": {
- "transport_key": "transport001",
- "shift_key": "performer01",
- "shift_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}, - "states": [
- {
- "time": "2024-02-21T09:30:00+03:00",
- "order_key": "order01",
- "demand_key": "demand01.1",
- "event_key": "event01",
- "location_key": "location01",
- "flags": [ ],
- "cargo_placements": [ ],
- "attributes": [ ]
}
], - "waitlist": [
- "order02"
], - "attributes": [ ]
}
], - "facts": {
- "order_facts": [
- {
- "key": "fact_01",
- "time": "2024-02-21T09:30:00+03:00",
- "type": "ORDER_DONE",
- "order_key": "order_01",
- "demand_key": "order_01_demand_01"
}
], - "performer_facts": [
- {
- "key": "fact_01",
- "time": "2024-02-21T09:30:00+03:00",
- "performer_key": "performer_01",
- "location_key": "location01"
}
]
}, - "external_routing": [ ],
- "replan_settings": {
- "replan_strategy": {
- "reorder": true,
- "plan_new_orders": true,
- "create_new_trips": true
}, - "trips_settings": {
- "configuration": "optimize_distance",
- "trip_start_time_strategy": "LOWEST_COST",
- "assumptions": {
- "transport_factor": [ ],
- "capacity_factor": [ ],
- "demands_extra_duration": [ ],
- "feature_lifetimes": [ ],
- "disable_compatibility": true,
- "disable_capacity": true,
- "same_order_time_window": true,
- "expand_shift_time_window": true
}, - "penalties": {
- "compatibilities": [ ]
}
}, - "geo_settings": {
- "geo_provider": "OSRM",
- "toll_roads": false,
- "ferry_crossing": false,
- "traffic_jams": false,
- "flight_distance": true,
- "restricted_zones": [
- "ART_MOSCOW_MKAD_CARGO_FRAME"
]
}, - "calculation_settings": {
- "max_calculation_time": "PT4M30S",
- "max_waiting_time": "PT2H",
- "result_ttl": "PT4M30S",
- "result_timezone": 3,
- "treat_warnings_as_errors": true,
- "precision": 3
}
}, - "dataset_name": "custom_dataset_one"
}
{- "locations": [
- {
- "key": "location01",
- "geopoint": {
- "latitude": 55.692789,
- "longitude": 37.554554
}, - "arrival_duration": "P1Y1M1DT2H12M34.3S",
- "departure_duration": "P1Y1M1DT2H12M34.3S",
- "work_windows": [ ],
- "compatibilities": {
- "transport_restrictions": [ ]
}, - "attributes": [ ]
}
], - "orders": [
- {
- "key": "order01",
- "demands": [
- {
- "key": "demand_1",
- "demand_type": "WORK",
- "target_cargos": [
- "cargo01"
], - "precedence_in_trip": 1,
- "precedence_in_order": 1,
- "possible_events": [
- {
- "key": "event_1",
- "location_key": "location01",
- "duration": "P1Y1M1DT2H12M34.3S",
- "reward": 199.9,
- "hard_time_window": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "soft_time_window": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}
], - "attributes": [ ]
}
], - "cargos": [ ],
- "compatibilities": {
- "order_features": [ ],
- "order_restrictions": [ ],
- "performer_restrictions": [ ],
- "performer_blacklist": [ ]
}, - "attributes": [ ]
}
], - "performers": [
- {
- "key": "performer0001",
- "shifts": [
- {
- "key": "shift01",
- "availability_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "working_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "start_location_key": "start_location01",
- "finish_location_key": "finish_location01",
- "max_locations": 15,
- "max_stops": 15,
- "tariff": {
- "cost_per_shift": 2000,
- "constraints": [
- {
- "stage_length": "PT24H",
- "cost_per_unit": 0.001
}
], - "max_penalty_cost": 2000
}, - "work_and_rest_rules": {
- "first_break": {
- "max_work_duration_sum": "P1Y1M1DT2H12M34.3S",
- "duration": "P1Y1M1DT2H12M34.3S"
}
}, - "attributes": [ ]
}
], - "own_transport_type": "CAR",
- "compatibilities": {
- "performer_features": [ ],
- "performer_features_lifetimes": [ ],
- "transport_restrictions": [ ]
}, - "limits": {
- "max_work_shifts": 3
}, - "attributes": [ ]
}
], - "transports": [
- {
- "key": "transport001",
- "shifts": [
- {
- "key": "shift01",
- "availability_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "working_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "start_location_key": "start_location01",
- "finish_location_key": "finish_location01",
- "tariff": {
- "cost_per_shift": 2000,
- "constraints": [
- {
- "stage_length": 100000000,
- "cost_per_unit": 0.001
}
], - "transportation_cost": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}, - "max_penalty_cost": 2000
}, - "attributes": [ ]
}
], - "transport_type": "CAR",
- "boxes": [ ],
- "compatibilities": {
- "transport_features": [ ],
- "transport_features_lifetimes": [ ],
- "performer_restrictions": [ ]
}, - "limits": {
- "max_boxes": 2,
- "max_capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}, - "attributes": [ ]
}
], - "hardlinks": [ ],
- "trips": [
- {
- "key": "631988f0-9e27-11ed-a8fc-0242ac120002",
- "name": "1-ABC",
- "performer": {
- "performer_key": "performer0001",
- "shift_key": "performer0001_shift01",
- "shift_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}, - "transport": {
- "transport_key": "transport001",
- "shift_key": "performer01",
- "shift_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}, - "states": [
- {
- "time": "2024-02-21T09:30:00+03:00",
- "order_key": "order01",
- "demand_key": "demand01.1",
- "event_key": "event01",
- "location_key": "location01",
- "flags": [ ],
- "cargo_placements": [ ],
- "attributes": [ ]
}
], - "waitlist": [
- "order02"
], - "attributes": [ ]
}
], - "facts": {
- "order_facts": [
- {
- "key": "fact_01",
- "time": "2024-02-21T09:30:00+03:00",
- "type": "ORDER_DONE",
- "order_key": "order_01",
- "demand_key": "order_01_demand_01"
}
], - "performer_facts": [
- {
- "key": "fact_01",
- "time": "2024-02-21T09:30:00+03:00",
- "performer_key": "performer_01",
- "location_key": "location01"
}
]
}, - "external_routing": [ ],
- "replan_settings": {
- "replan_strategy": {
- "reorder": true,
- "plan_new_orders": true,
- "create_new_trips": true
}, - "trips_settings": {
- "configuration": "optimize_distance",
- "trip_start_time_strategy": "LOWEST_COST",
- "assumptions": {
- "transport_factor": [ ],
- "capacity_factor": [ ],
- "demands_extra_duration": [ ],
- "feature_lifetimes": [ ],
- "disable_compatibility": true,
- "disable_capacity": true,
- "same_order_time_window": true,
- "expand_shift_time_window": true
}, - "penalties": {
- "compatibilities": [ ]
}
}, - "geo_settings": {
- "geo_provider": "OSRM",
- "toll_roads": false,
- "ferry_crossing": false,
- "traffic_jams": false,
- "flight_distance": true,
- "restricted_zones": [
- "ART_MOSCOW_MKAD_CARGO_FRAME"
]
}, - "calculation_settings": {
- "max_calculation_time": "PT4M30S",
- "max_waiting_time": "PT2H",
- "result_ttl": "PT4M30S",
- "result_timezone": 3,
- "treat_warnings_as_errors": true,
- "precision": 3
}
}, - "dataset_name": "custom_dataset_one"
}
Используется для конвертации входных и выходных данных в формат VRt.Universal XLSX.
Запрос на конвертацию в XLSX.
Array of objects (location) [ 0 .. 15001 ] items unique Список локаций, которые используются в заказах и сменах. | |
Array of objects (order) [ 0 .. 15001 ] items unique Список заказов. | |
Array of objects (performer) [ 0 .. 15001 ] items unique Список доступных исполнителей. | |
Array of objects (transport) [ 0 .. 15001 ] items unique Список доступного транспорта. | |
Array of objects (hardlink) [ 0 .. 15001 ] items unique Список назначений. | |
Array of objects (trip) [ 0 .. 15001 ] items unique Существующие рейсы. | |
object (facts) Произошедшие события. | |
object or null (plan_statistics) Общая статистика по запланированным рейсам. | |
Array of objects (routing_transport_matrix_list) [ 0 .. 12 ] items unique Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации | |
object (plan_settings) Настройки планирования. | |
object (replan_settings) Настройки перепланирования. | |
object (actualize_settings) Настройки актуализации. | |
dataset_name | string (dataset_name) [ 0 .. 1000 ] characters Название датасета. Техническое поле, не влияющее на планирование. |
Файл с данными в формате XLSX.
{- "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-02-08T05:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T05:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T05:00:00+00:00",
- "to": "2024-02-08T07:00:00+00:00"
}
}
]
}
]
}
], - "performers": [
- {
- "key": "performer_1",
- "shifts": [
- {
- "key": "performer_1_shift",
- "availability_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-08T20:59:59+00:00"
}, - "working_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-08T20:59:59+00:00"
}, - "working_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "transport": {
- "transport_key": "transport_1",
- "shift_key": "transport_1_shift",
- "shift_time": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "states": [
- {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:00:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:20:52Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:52Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:52Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:38:39Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:53:39Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [ ],
- "attributes": [ ]
}
], - "waitlist": [ ],
- "attributes": [ ]
}
]
}
{- "tracedata": {
- "code": "215b87e0-4407-4e0f-b2cc-8540f8f0cad7",
- "client": "veeroute_|_example",
- "server": "edge",
- "service": "UNIVERSAL",
- "operation": "run_plan_calculation",
- "time": "2024-02-28T17:13:27.945583194Z"
}, - "message": "logical",
- "schema_errors": [ ],
- "logical_errors": [
- {
- "type": "UNIQUE_IDS_VIOLATION",
- "entities": [
- {
- "entity_key": "order_1",
- "entity_type": "ORDER"
}
]
}
], - "warnings": [ ]
}
Используется для конвертации данных из формата VRt.Universal XLSX в формат VRt.Universal JSON.
Запрос на конвертацию в JSON.
Файл с данными в формате XLSX.
Array of objects (location) [ 0 .. 15001 ] items unique Список локаций, которые используются в заказах и сменах. | |
Array of objects (order) [ 0 .. 15001 ] items unique Список заказов. | |
Array of objects (performer) [ 0 .. 15001 ] items unique Список доступных исполнителей. | |
Array of objects (transport) [ 0 .. 15001 ] items unique Список доступного транспорта. | |
Array of objects (hardlink) [ 0 .. 15001 ] items unique Список назначений. | |
Array of objects (trip) [ 0 .. 15001 ] items unique Существующие рейсы. | |
object (facts) Произошедшие события. | |
object or null (plan_statistics) Общая статистика по запланированным рейсам. | |
Array of objects (routing_transport_matrix_list) [ 0 .. 12 ] items unique Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации | |
object (plan_settings) Настройки планирования. | |
object (replan_settings) Настройки перепланирования. | |
object (actualize_settings) Настройки актуализации. | |
dataset_name | string (dataset_name) [ 0 .. 1000 ] characters Название датасета. Техническое поле, не влияющее на планирование. |
{- "locations": [
- {
- "key": "location01",
- "geopoint": {
- "latitude": 55.692789,
- "longitude": 37.554554
}, - "arrival_duration": "P1Y1M1DT2H12M34.3S",
- "departure_duration": "P1Y1M1DT2H12M34.3S",
- "work_windows": [ ],
- "compatibilities": {
- "transport_restrictions": [ ]
}, - "attributes": [ ]
}
], - "orders": [
- {
- "key": "order01",
- "demands": [
- {
- "key": "demand_1",
- "demand_type": "WORK",
- "target_cargos": [
- "cargo01"
], - "precedence_in_trip": 1,
- "precedence_in_order": 1,
- "possible_events": [
- {
- "key": "event_1",
- "location_key": "location01",
- "duration": "P1Y1M1DT2H12M34.3S",
- "reward": 199.9,
- "hard_time_window": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "soft_time_window": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}
], - "attributes": [ ]
}
], - "cargos": [ ],
- "compatibilities": {
- "order_features": [ ],
- "order_restrictions": [ ],
- "performer_restrictions": [ ],
- "performer_blacklist": [ ]
}, - "attributes": [ ]
}
], - "performers": [
- {
- "key": "performer0001",
- "shifts": [
- {
- "key": "shift01",
- "availability_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "working_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "start_location_key": "start_location01",
- "finish_location_key": "finish_location01",
- "max_locations": 15,
- "max_stops": 15,
- "tariff": {
- "cost_per_shift": 2000,
- "constraints": [
- {
- "stage_length": "PT24H",
- "cost_per_unit": 0.001
}
], - "max_penalty_cost": 2000
}, - "work_and_rest_rules": {
- "first_break": {
- "max_work_duration_sum": "P1Y1M1DT2H12M34.3S",
- "duration": "P1Y1M1DT2H12M34.3S"
}
}, - "attributes": [ ]
}
], - "own_transport_type": "CAR",
- "compatibilities": {
- "performer_features": [ ],
- "performer_features_lifetimes": [ ],
- "transport_restrictions": [ ]
}, - "limits": {
- "max_work_shifts": 3
}, - "attributes": [ ]
}
], - "transports": [
- {
- "key": "transport001",
- "shifts": [
- {
- "key": "shift01",
- "availability_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "working_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "start_location_key": "start_location01",
- "finish_location_key": "finish_location01",
- "tariff": {
- "cost_per_shift": 2000,
- "constraints": [
- {
- "stage_length": 100000000,
- "cost_per_unit": 0.001
}
], - "transportation_cost": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}, - "max_penalty_cost": 2000
}, - "attributes": [ ]
}
], - "transport_type": "CAR",
- "boxes": [ ],
- "compatibilities": {
- "transport_features": [ ],
- "transport_features_lifetimes": [ ],
- "performer_restrictions": [ ]
}, - "limits": {
- "max_boxes": 2,
- "max_capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}, - "attributes": [ ]
}
], - "hardlinks": [
- {
- "key": "group01",
- "links": [
- {
- "type": "ORDER",
- "entity_key": "ord0001"
}, - {
- "type": "ORDER",
- "entity_key": "ord0001"
}
]
}
], - "trips": [
- {
- "key": "631988f0-9e27-11ed-a8fc-0242ac120002",
- "name": "1-ABC",
- "performer": {
- "performer_key": "performer0001",
- "shift_key": "performer0001_shift01",
- "shift_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}, - "transport": {
- "transport_key": "transport001",
- "shift_key": "performer01",
- "shift_time": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}, - "states": [
- {
- "time": "2024-02-21T09:30:00+03:00",
- "order_key": "order01",
- "demand_key": "demand01.1",
- "event_key": "event01",
- "location_key": "location01",
- "flags": [ ],
- "cargo_placements": [ ],
- "attributes": [ ]
}
], - "waitlist": [
- "order02"
], - "attributes": [ ]
}
], - "facts": {
- "order_facts": [
- {
- "key": "fact_01",
- "time": "2024-02-21T09:30:00+03:00",
- "type": "ORDER_DONE",
- "order_key": "order_01",
- "demand_key": "order_01_demand_01"
}
], - "performer_facts": [
- {
- "key": "fact_01",
- "time": "2024-02-21T09:30:00+03:00",
- "performer_key": "performer_01",
- "location_key": "location01"
}
]
}, - "statistics": {
- "total_statistics": {
- "cost": 1231.1,
- "reward": 2343.3,
- "measurements": {
- "driving_time": "P1Y1M1DT2H12M34.3S",
- "waiting_time": "P1Y1M1DT2H12M34.3S",
- "break_time": "P1Y1M1DT2H12M34.3S",
- "working_time": "P1Y1M1DT2H12M34.3S",
- "arriving_time": "P1Y1M1DT2H12M34.3S",
- "departure_time": "P1Y1M1DT2H12M34.3S",
- "total_time": "P1Y1M1DT2H12M34.3S",
- "distance": 5200,
- "time_window": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}, - "trips_count": 250,
- "performers_count": 157,
- "orders_count": 1700,
- "plan_orders_count": 1003,
- "waitlist_orders_count": 697,
- "cargo_capacity_ratio": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}, - "max_transport_load": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}, - "quality": {
- "soft_time_window_violations": {
- "before": {
- "keys": [
- "obj1"
], - "count": 1700
}, - "after": {
- "keys": [
- "obj1"
], - "count": 1700
}
}, - "hard_time_window_violations": {
- "before": {
- "keys": [
- "obj1"
], - "count": 1700
}, - "after": {
- "keys": [
- "obj1"
], - "count": 1700
}
}
}
}, - "trips_statistics": [
- {
- "trip_key": "trip01",
- "statistics": {
- "cost": 1231.1,
- "reward": 2343.3,
- "measurements": {
- "driving_time": "P1Y1M1DT2H12M34.3S",
- "waiting_time": "P1Y1M1DT2H12M34.3S",
- "break_time": "P1Y1M1DT2H12M34.3S",
- "working_time": "P1Y1M1DT2H12M34.3S",
- "arriving_time": "P1Y1M1DT2H12M34.3S",
- "departure_time": "P1Y1M1DT2H12M34.3S",
- "total_time": "P1Y1M1DT2H12M34.3S",
- "distance": 5200,
- "time_window": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}, - "trips_count": 250,
- "performers_count": 157,
- "orders_count": 1700,
- "plan_orders_count": 1003,
- "waitlist_orders_count": 697,
- "cargo_capacity_ratio": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}, - "max_transport_load": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}, - "quality": {
- "soft_time_window_violations": {
- "before": {
- "keys": [
- "obj1"
], - "count": 1700
}, - "after": {
- "keys": [
- "obj1"
], - "count": 1700
}
}, - "hard_time_window_violations": {
- "before": {
- "keys": [
- "obj1"
], - "count": 1700
}, - "after": {
- "keys": [
- "obj1"
], - "count": 1700
}
}
}
}, - "stop_statistics": [
- {
- "location_key": "location01",
- "demand_ids": [
- "demand01"
], - "stop_time_window": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}, - "measurements": {
- "driving_time": "P1Y1M1DT2H12M34.3S",
- "waiting_time": "P1Y1M1DT2H12M34.3S",
- "break_time": "P1Y1M1DT2H12M34.3S",
- "working_time": "P1Y1M1DT2H12M34.3S",
- "arriving_time": "P1Y1M1DT2H12M34.3S",
- "departure_time": "P1Y1M1DT2H12M34.3S",
- "total_time": "P1Y1M1DT2H12M34.3S",
- "distance": 5200,
- "time_window": {
- "from": "2024-02-21T09:30:00+03:00",
- "to": "2024-02-21T19:45:00Z"
}
}, - "upload": {
- "count": 1460,
- "capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}, - "download": {
- "count": 1460,
- "capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}, - "max_load": {
- "count": 1460,
- "capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}, - "arrival_load": {
- "count": 1460,
- "capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}, - "departure_load": {
- "count": 1460,
- "capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}
}
], - "total_load": {
- "count": 1460,
- "capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}, - "max_load": {
- "count": 1460,
- "capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}, - "max_transfer_load": {
- "count": 1460,
- "capacity": {
- "mass": 10,
- "volume": 2,
- "capacity_a": 1,
- "capacity_b": 2,
- "capacity_c": 3
}
}
}
]
}, - "external_routing": [ ],
- "plan_settings": {
- "trips_settings": {
- "configuration": "optimize_distance",
- "trip_start_time_strategy": "LOWEST_COST",
- "assumptions": {
- "transport_factor": [ ],
- "capacity_factor": [ ],
- "demands_extra_duration": [ ],
- "feature_lifetimes": [ ],
- "disable_compatibility": true,
- "disable_capacity": true,
- "same_order_time_window": true,
- "expand_shift_time_window": true
}, - "penalties": {
- "compatibilities": [ ]
}
}, - "geo_settings": {
- "geo_provider": "OSRM",
- "toll_roads": false,
- "ferry_crossing": false,
- "traffic_jams": false,
- "flight_distance": true,
- "restricted_zones": [
- "ART_MOSCOW_MKAD_CARGO_FRAME"
]
}, - "calculation_settings": {
- "max_calculation_time": "PT4M30S",
- "max_waiting_time": "PT2H",
- "result_ttl": "PT4M30S",
- "result_timezone": 3,
- "treat_warnings_as_errors": true,
- "precision": 3
}
}, - "replan_settings": {
- "replan_strategy": {
- "reorder": true,
- "plan_new_orders": true,
- "create_new_trips": true
}, - "trips_settings": {
- "configuration": "optimize_distance",
- "trip_start_time_strategy": "LOWEST_COST",
- "assumptions": {
- "transport_factor": [ ],
- "capacity_factor": [ ],
- "demands_extra_duration": [ ],
- "feature_lifetimes": [ ],
- "disable_compatibility": true,
- "disable_capacity": true,
- "same_order_time_window": true,
- "expand_shift_time_window": true
}, - "penalties": {
- "compatibilities": [ ]
}
}, - "geo_settings": {
- "geo_provider": "OSRM",
- "toll_roads": false,
- "ferry_crossing": false,
- "traffic_jams": false,
- "flight_distance": true,
- "restricted_zones": [
- "ART_MOSCOW_MKAD_CARGO_FRAME"
]
}, - "calculation_settings": {
- "max_calculation_time": "PT4M30S",
- "max_waiting_time": "PT2H",
- "result_ttl": "PT4M30S",
- "result_timezone": 3,
- "treat_warnings_as_errors": true,
- "precision": 3
}
}, - "actualize_settings": {
- "current_time": "2024-02-21T09:30:00+03:00",
- "geo_settings": {
- "geo_provider": "OSRM",
- "toll_roads": false,
- "ferry_crossing": false,
- "traffic_jams": false,
- "flight_distance": true,
- "restricted_zones": [
- "ART_MOSCOW_MKAD_CARGO_FRAME"
]
}, - "calculation_settings": {
- "max_calculation_time": "PT4M30S",
- "max_waiting_time": "PT2H",
- "result_ttl": "PT4M30S",
- "result_timezone": 3,
- "treat_warnings_as_errors": true,
- "precision": 3
}
}, - "dataset_name": "custom_dataset_one"
}
Используется для конвертации входных данных в формат THRIFT.
Запрос на конвертацию в THRIFT.
Array of objects (location) [ 0 .. 15001 ] items unique Список локаций, которые используются в заказах и сменах. | |
Array of objects (order) [ 0 .. 15001 ] items unique Список заказов. | |
Array of objects (performer) [ 0 .. 15001 ] items unique Список доступных исполнителей. | |
Array of objects (transport) [ 0 .. 15001 ] items unique Список доступного транспорта. | |
Array of objects (hardlink) [ 0 .. 15001 ] items unique Список назначений. | |
Array of objects (trip) [ 0 .. 15001 ] items unique Существующие рейсы. | |
object (facts) Произошедшие события. | |
object or null (plan_statistics) Общая статистика по запланированным рейсам. | |
Array of objects (routing_transport_matrix_list) [ 0 .. 12 ] items unique Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации | |
object (plan_settings) Настройки планирования. | |
object (replan_settings) Настройки перепланирования. | |
object (actualize_settings) Настройки актуализации. | |
dataset_name | string (dataset_name) [ 0 .. 1000 ] characters Название датасета. Техническое поле, не влияющее на планирование. |
Файл с данными в текстовом формате.
{- "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-02-08T05:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T05:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T05:00:00+00:00",
- "to": "2024-02-08T07:00:00+00:00"
}
}
]
}
]
}
], - "performers": [
- {
- "key": "performer_1",
- "shifts": [
- {
- "key": "performer_1_shift",
- "availability_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-08T20:59:59+00:00"
}, - "working_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-07T21:00:00+00:00",
- "to": "2024-02-08T20:59:59+00:00"
}, - "working_time": {
- "from": "2024-02-07T21:00:00+00:00",
- "to": "2024-02-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-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "transport": {
- "transport_key": "transport_1",
- "shift_key": "transport_1_shift",
- "shift_time": {
- "from": "2024-02-08T04:38:34Z",
- "to": "2024-02-08T05:53:39Z"
}
}, - "states": [
- {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_storage",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T04:38:34Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:00:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}, - {
- "box_key": "box_1",
- "cargo_key": "order_2_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_2",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:10:00Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:20:52Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [
- {
- "box_key": "box_1",
- "cargo_key": "order_1_cargos"
}
], - "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:52Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_1",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:30:52Z",
- "flags": [
- "RELOCATING"
], - "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:38:39Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-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_placements": [ ],
- "attributes": [ ]
}, - {
- "time": "2024-02-08T05:53:39Z",
- "flags": [
- "INSIDE_LOCATION",
- "AROUND_LOCATION"
], - "location_key": "location_client_3",
- "cargo_placements": [ ],
- "attributes": [ ]
}
], - "waitlist": [ ],
- "attributes": [ ]
}
]
}
{- "tracedata": {
- "code": "215b87e0-4407-4e0f-b2cc-8540f8f0cad7",
- "client": "veeroute_|_example",
- "server": "edge",
- "service": "UNIVERSAL",
- "operation": "run_plan_calculation",
- "time": "2024-02-28T17:13:27.945583194Z"
}, - "message": "logical",
- "schema_errors": [ ],
- "logical_errors": [
- {
- "type": "UNIQUE_IDS_VIOLATION",
- "entities": [
- {
- "entity_key": "order_1",
- "entity_type": "ORDER"
}
]
}
], - "warnings": [ ]
}
Проверка доступности сервиса.
health required | number<double> [ 0 .. 1 ] Текущий показатель здоровья сервиса. |
{- "health": 0.999
}
Получение версии сервиса.
major required | integer<int32> [ 1 .. 100 ] Версия продукта. В рамках одной версии гарантируется совместимость общих структур данных между сервисами. |
minor required | integer<int32> [ 0 .. 111 ] Минорная версия сервиса. Изменение версии указывает на новую функциональность. Обновление имеет обратную совместимость в рамках мажорной версии сервиса. |
build required | string [ 1 .. 64 ] characters Версия сборки. |
{- "major": 4,
- "minor": 4,
- "build": "1754RC"
}
Получение файла с документацией на этот сервис.
filename required | string [ 6 .. 128 ] characters Example: file_en.html Название файла. |
Файл с данными в формате HTML.
{- "resource_id": "resource_id",
- "detail": {
- "tracedata": {
- "code": "11111111-2222-3333-4444-555555555555",
- "client": "company_|_username",
- "server": "server_name",
- "service": "UNIVERSAL",
- "operation": "run_plan_calculation",
- "time": "2024-02-21T09:30:00+03:00"
}
}
}