openapi: 3.0.3 info: title: VRt.Universal [UV] version: 6.20.2289 license: name: Proprietary url: https://veeroute.ru/ termsOfService: https://veeroute.ru/resources/terms_of_service contact: name: Veeroute Support Team email: servicedesk@veeroute.com x-logo: url: ../images/universal.svg backgroundColor: '#FAFAFA' altText: VRt.Universal description: '# Описание Программный интерфейс для универсального планирования рейсов. ## Возможности * Возможность забора груза из любой локации * Возможность разгрузки в любой локации * Парные заявки нескольких типов: `PICKUP` (погрузка), `DROP` (выгрузка) * Одиночные заявки нескольких типов: `DROP_FROM_BOX` (выгрузка груза, который уже находится в кузове), `PICKUP_TO_BOX` (забор груза в кузов без последующей выгрузки), `WORK` (работа на локации без перемещения груза) * Комплексный заказ может состоять из любого числа заявок любых типов * Транспорт и исполнители разделены на разные сущности, при планирование происходит оптимальное назначение исполнителя на транспорт * У транспорта несколько отсеков - каждый из которых может вмещать груз и обладает собственными характеристиками * Учёт совместимости груза с транспортом по параметрам габарита груза (длина, ширина, высота, дополнительные параметры вместимости) * Учёт совместимостей груз-отсек транспорта (возможность учесть свойства отсека: холодильник, термо-сумка, крепежи и т.п) * Заявки-заменители, т.е. возможность выполнить одну из заявок-заменителей, выбор которой происходит на основе её географического местоположения и временного окна ## Поддержка ограничений Ограничения на **исполнителя**: * Место старта/финиша * Учет передвижения исполнителя до точки старта транспорта * График доступности исполнителя - список временных окон, в которые исполнитель может совершать перемещения и совершать работу на локациях * Максимальная продолжительность работы исполнителя в течение заданного временного периода Ограничения на **транспорт**: * Место старта/финиша * График доступности транспорта - список временных окон, в которые транспорт может совершать перемещения * Максимальная протяженность маршрута * Несколько отсеков в транспорте, каждый со своими параметрами * Ограничение сверху на суммируемые вместимости (вес, объем, количество заказов, количество заявок) Ограничения на **заказ**: * Жесткие временные окна * Возможность указать разные допустимые окна работы локации и окна желаемого выполнения заявки * Учет порядка исполнения заявок в пределах маршрута * Список желаемых временных окон выполнения с разными стоимостями для каждого из них ## Используемые совместимости Сущности являются совместимыми, если список свойств одной сущности полностью покрывает список требований другой сущности (наоборот для `performer_blacklist` - списки не должны пересекаться). Поддерживаемые совместимости: | Название | Требования | Свойства | |-------------------------|----------------------------------|------------------------------| | Заказ - Исполнитель | order.performer_restrictions | performer.performer_features | | Заказ - Не Исполнитель | order.performer_blacklist | performer.performer_features | | Груз - Отсек | order.cargo.box_restrictions | transport.box.box_features | | Локация - Транспорт | location.transport_restrictions | transport.transport_features | | Транспорт - Исполнитель | transport.performer_restrictions | performer.performer_features | | Исполнитель - Транспорт | performer.transport_restrictions | transport.transport_features | | Заказ - Заказ | order.order_restrictions | order.order_features | | Груз - Груз | cargo.cargo_restrictions | cargo.cargo_features | Примеры бизнес правил: | Название | Пример бизнес-правила | |-------------------------|---------------------------------------------------------------------------------------| | Заказ - Исполнитель | Для выполнения заказа водитель должен иметь особое разрешение | | Заказ - Не Исполнитель | Водитель в черном списке | | Груз - Отсек | Для перевозки замороженной продукции необходим отсек с особым температурным режимом | | Локация - Транспорт | Ограничения на высоту транспорта | | Транспорт - Исполнитель | Для грузового транспорта водитель должен иметь категорию `C` | | Исполнитель - Транспорт | Водителю разрешено работать только на определенном транспорте | | Заказ - Заказ | Нельзя перевозить рыбу и фрукты в одном отсеке | | Груз - Груз | Два груза нельзя одновременно размещать в одном отсеке транспорта, по очереди - можно | ## Назначения Механизм назначений (`hardlinks`) необходим для указания требований по нахождению заказов, исполнителя и транспорта в одном рейсе. Назначение гарантирует нахождения сущностей в одном рейсе и не гарантирует факт планирования сущности. Например, если исполнитель не успевает выполнить заказ, то он не запланируется, но назначится на рейс (попадет в `waitlist`). Также назначение не отменяет указанные совместимости (и штрафы за нарушение совместимостей). Например, если заказ не может быть выполнен исполнителем, он не запланируется, но назначится на рейс (попадет в `waitlist`). ## Размещение грузов в кузове Список способностей объекта вращаться (с шагом в 90 градусов): * `ALL` - можно поворачивать по любой оси любое количество раз * `YAW` - можно повернуть один раз по вертикальной оси (вокруг своей оси) * `PITCH` - можно повернуть один раз по поперечной оси (поставить вертикально) * `ROLL` - можно повернуть один раз по продольной оси (положить на бок) ![rotation](../images/universal_cargo_yaw_pitch_roll.svg) ## Модель рейса Рейс описывается списком состояний исполнителя, при этом одновременно исполнитель может находится в нескольких состояниях (например быть внутри рабочего временного окна локации и выполнять заказ на этой же локации). Возможные значения флагов, отвечающих за географическое положение: * `AROUND_LOCATION` - исполнитель находится рядом с локацией - в процессе парковки или выезда с нее. * `INSIDE_LOCATION` - исполнитель находится на локации. Возможные значения флагов, отвечающих за нахождения во временных окнах: * `INSIDE_WORKING_WINDOW` - исполнитель находится внутри рабочего временного окна. * `INSIDE_LOCATION_WINDOW` - исполнитель находится внутри времени работы локации. * `INSIDE_EVENT_HARD_WINDOW` - исполнитель находится внутри жесткого временного окна. * `INSIDE_EVENT_SOFT_WINDOW` - исполнитель находится внутри мягкого временного окна. Возможные значения флагов, отвечающих за действия: * `ON_DEMAND` - исполнитель работает над заявкой. * `WAITING` - исполнитель находится в режиме ожидания. * `RELOCATING` - исполнитель перемещается к следующей остановке. * `BREAK` - исполнитель находится на перерыве. ### Пример маршрута с множеством состояний в каждый момент времени | Время | Набор активных флагов | Локация / Заказ / Заявка / Событие | Комментарий | |:------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------|:----------------------------------------------------------------| | 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** | Расставить как можно больше заказов, затем оптимизировать количество машин, а затем надёжность | В дополнение к существующим вариантам планирования возможно создание целевой функции непосредственно под бизнес-процессы клиента ([запросить конфигурацию](mailto:servicedesk@veeroute.com)). Для разработки рекомендуется использовать **optimize_cars_then_distance**, так как данная конфигурация не требует детального подбора тарифов и стоимостей заказов. ## Валидация данных Валидация входных данных состоит из нескольких этапов, которые описаны ниже. ### 1. Проверка по схеме Если запрос не проходит по схеме, то планирование не запускается целиком и такая ошибка возвращается вместе с кодом 400 в `schema_errors`. Мы рекомендуем проверять запрос по схеме (или yaml-файлу) перед отправкой на сервер. ### 2. Проверка на логические ошибки, которые не позволяют продолжить планирование Корректные по схеме данные проходят второй этап проверки на возможность запуска планирования. Пример ошибок на данном этапе - ключи, ведущие на пустые сущности, или если все заказы несовместимы со всеми исполнителями, т.е. то, что делает задачу планирования бессмысленной. Данные ошибки возвращаются вместе с кодом 400 в `logical_errors`. ### 3. Проверка на логические ошибки, которые не позволяют продолжить планирование На третьем этапе происходит проверка каждой сущности отдельно. Все сущности, которые не прошли проверку - вырезаются из исходной задачи и не отправляются на планирование. В зависимости от настройки `treat_warnings_as_errors` результаты данного типа проверки возвращаются в `warnings` вместе с кодом 400, либо вместе с результатом планирования. ### 4. Проверки в процессе планирования Часть проверок можно осуществить только в процессе планирования. Например - что согласно указанным тарифам и по актуальному прогнозу пробок физически невозможно доехать до определенной точки. Результаты данных проверок возвращаются в `warnings` либо вместе с результатом планирования. ## Диаграмма сущностей ![erd](../uml/universal.svg) # Xlsx Описание формата 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}` - ключ атрибута. Можно заводить несколько. Эти данные не учитываются в планировании. | Описываемый объект: ## Исполнители Название листа `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}` - ключ атрибута. Можно заводить несколько. Эти данные не учитываются в планировании. | Описываемый объект: ## Транспорт Название листа `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}` - ключ атрибута. Можно заводить несколько. Эти данные не учитываются в планировании. | Описываемый объект: ## Кузова Название листа `transports.boxes`. Список отсеков транспорта, которые могут вмещать груз. Таблица обязательна, если в расчете есть заказы с заявками типов `PICKUP` и `DROP`. В описании отсеков обязательны те поля, которые описывают грузы. | Название | Описание | Примечание | |-----------------------------------------------|-----------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **key** | Ключ отсека | Уникальный идентификатор, используется для идентификации размещения грузов по отсекам. | | capacity.mass | Масса, кг | Ограничение по массе, которое может единовременно находиться в отсеке | | capacity.volume | Объем, м3 | Ограничение по объему, которое может единовременно находиться в отсеке | | capacity.capacity_a | Дополнительный параметр вместимости (A) | Для измерения грузов и отсеков в альтернативных единицах измерения. Например, для учета грузов в штуках (у груза данный параметр равен единице, у отсека - максимальному количеству вмещаемых грузов) | | capacity.capacity_b | Дополнительный параметр вместимости (B) | Для измерения грузов и отсеков в альтернативных единицах измерения. | | capacity.capacity_c | Дополнительный параметр вместимости (C) | Для измерения грузов и отсеков в альтернативных единицах измерения. | | compatibilities
.width | Ширина в метрах | | | compatibilities
.height | Высота в метрах | | | compatibilities
.length | Длина в метрах | | | compatibilities
.box_features | Список свойств отсека | По оценивается возможность перевозки груза в данном отсеке | | limits
.max_one_cargo_capacity.mass | Масса в килограммах | Ограничение по полям `capacity` для одного груза | | limits
.max_one_cargo_capacity.volume | Объем в кубических метрах | Ограничение по полям `capacity` для одного груза | | limits
.max_one_cargo_capacity.capacity_a | Дополнительный параметр вместимости (A) | Ограничение по полям `capacity` для одного груза | | limits
.max_one_cargo_capacity.capacity_b | Дополнительный параметр вместимости (B) | Ограничение по полям `capacity` для одного груза | | limits
.max_one_cargo_capacity.capacity_c | Дополнительный параметр вместимости (C) | Ограничение по полям `capacity` для одного груза | Описываемый объект: ## Заказы Название листа `orders`. Список заказов. | Название | Описание | Примечание | |----------------------------------------------------|---------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------| | **key** | Ключ заказа | Повторяющийся ключ заказа означает заявки одного заказа | | **cargos.key** | Список грузов | Может содержать один груз для `DROP`, список для `PICKUP`, пустой для `WORK`. | | **demands.key** | Ключ заявки, уникальный идентификатор | | | demands.demand_type | Тип заявки | Загрузка - `PICKUP`, выгрузка - `DROP`, работа на локации - `WORK`. | | demands.target_cargos | Список ключей грузов | Для `PICKUP`, один ключ груза для `DROP`, пустой ключ для `WORK` | | demands.precedence_in_trip | Приоритет внутри рейса | 0 - приоритет не учитывается. По умолчанию: `0`. | | demands.precedence_in_order | Приоритет внутри заказа | 0 - приоритет не учитывается. По умолчанию: `0`. | | demands
.possible_events.key | Ключ события, уникальный идентификатор | Описание объекта временного окна и локаций, в котором возможно выполнение заявки | | demands
.possible_events.location_key | Ключ локации, в которой возможно данное событие | | | demands
.possible_events.duration | Время выполнения события | | | demands
.possible_events.reward | Вознаграждение за выполнение данного события | | | demands
.possible_events.hard_time_window.from | Начало жесткого временного окна | | | demands
.possible_events.hard_time_window.to | Конец жесткого временного окна | | | demands
.possible_events.soft_time_window.from | Начало мягкого временного окна | | | demands
.possible_events.soft_time_window.to | Конец мягкого временного окна | | | demands
.attributes.{key} | Атрибуты. Используются для указания служебной информации | `{key}` - ключ атрибута. Можно заводить несколько. Эти данные не учитываются в планировании. | | compatibilities
.order_features | Список свойств заказа | | | compatibilities
.order_restrictions | Список требований к заказу, выполняемому в этом же рейсе | | | compatibilities
.performer_restrictions | Список необходимых требований к исполнителю | Используется для проверки совместимости исполнителя и заказа (работы). | | compatibilities
.performer_blacklist | Список требований, наличие которых у исполнителя не допустимо | Используется для проверки совместимости исполнителя и заказа (работы). Данный список не должен пересекаться с `performer_restrictions` | | attributes.{key} | Атрибуты, используются для указания служебной информации | `{key}` - ключ атрибута. Можно заводить несколько. Эти данные не учитываются в планировании. | Описываемый объект: ## Грузы Название листа `orders.cargos`. Список грузов. Может содержать один груз для `DROP`, список для `PICKUP`, пустой для `WORK`. Таблица не обязательна, если все заявки имеют тип `WORK`. | Название | Описание | Примечание | |-----------------------------------------|-----------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **key** | Ключ груза, уникальный идентификатор | | | capacity.mass | Масса в килограммах | | | capacity.volume | Объем в кубических метрах | | | capacity.capacity_a | Дополнительный параметр вместимости (A) | Для измерения грузов и отсеков в альтернативных единицах измерения. Например, для учета грузов в штуках (у груза данный параметр равен единице, у отсека - максимальному количеству вмещаемых грузов). | | capacity.capacity_b | Дополнительный параметр вместимости (B) | | | capacity.capacity_c | Дополнительный параметр вместимости (C) | | | compatibilities
.width | Ширина в метрах | Используется для проверки вместимости в отсек транспорта по ширине. | | compatibilities
.height | Высота в метрах | Используется для проверки вместимости в отсек транспорта по высоте | | compatibilities
.length | Длина в метрах | Используется для проверки вместимости в отсек транспорта по длине | | compatibilities
.rotation | Список способностей объекта вращаться | Шаг вращения 90 градусов. Если список пустой - объект вращать запрещено. Доступные значения: `ALL`, `YAW`, `PITCH`, `ROLL` | | compatibilities
.box_restrictions | Список требования к отсеку транспорта | | | compatibilities
.cargo_features | Список свойств груза | Используется для проверки совместимости груза с другими грузами. Несовместимые грузы не могу находится одновременно в одном отсеке транспорта | | compatibilities
.cargo_restrictions | Список необходимых требований к грузу | Используется для проверки совместимости груза с другими грузами. Несовместимые грузы не могу находится одновременно в одном отсеке транспорта | Описываемый объект: ## Назначения Название листа `hardlinks`. Список назначений. Описываемый объект: ## Рейсы Название листа `trips`. Список рейсов. Описываемый объект: ## Факты Название листа `facts`. Список фактов. Описываемый объект: ## Настройки планирования Название листа `plan_settings`. Настройки планирования. Описываемый объект: ## Настройки актуализации Название листа `actualize_settings`. Настройки актуализации. Описываемый объект: ## Настройки перепланирования Название листа `replan_settings`. Настройки перепланирования. Описываемый объект: ' servers: - url: https://api.edge.veeroute.tech description: Окружение для интеграции и ознакомления с новой функциональностью - url: https://api.prod.veeroute.com description: Основное окружение security: - ApiKeyAuth: [] tags: - name: Plan description: 'Планирование - создание рейсов, которые учитывают все заданные ограничения, на основе данных о заказах, исполнителях и транспорте. Запросы на планирования возможно выполнять в синхронном (для тестирования) и асинхронном (для основного использования) режимах. ' - name: Actualize description: 'Актуализация рейсов - обновление планового времени выполнения заказов с учетом фактов и без изменения порядка обьезда. Актуализация проходит в три этапа - проверка, применение фактов, обновление времен у невыполненных состояний рейсов. Чтобы получить результат применения фактов к исходной задаче воспользуйтесь [очисткой данных для актуализации](#operation/run_actualize_refining). Учет текущего времени `current_time`: * Учитываются только те факты, которые произошли позже `current_time`. * Минимальное время всех состояний вычисляемых рейсов берется из `current_time`. Учет фактов о заказах: * Если у заказа выполнены все заявки - он считается завершенным. * Если заказ завершен или отменен - он, и сущности на которые ссылается только он, удаляются из данных для актуализации. * Если у заказа выполнена заявка с типом `PICKUP`, то соответствующая ей заявка с типом `DROP` будет преобразована в заявку с типом `DROP_FROM_BOX`. * Факт о заказе имеет больший приоритет, чем факты о заявках по этому заказу (если факты о заявках противоречат факту о заказе - они не будут учтены). * На каждый рейс разрешен только один незакрытый факт `DEMAND_START` (закрывается фактом `DEMAND_DONE`) - так как исполнитель может в один момент времени выполнять только одну заявку. * Если есть факт о работе по заявке, которая противоречит плановому порядку в указанном рейсе - будет сперва завершена эта заявка, затем продолжится выполнение рейса согласно запланированному порядку. Учет фактов об исполнителе: * Список фактов о нахождении исполнителя в определенной локации. * Если рейс начался (время факта позже планового времени начала рейса) - транспорт считается в той же локации, что и исполнитель. * При наличии нескольких фактов учитывается только самый поздний по полю `time`. * Локация, на которую ссылается факт, должна находится в списке `locations`. Учет существующих рейсов: * Удаляются сущности, на которые не ссылаются входные рейсы - локации, исполнители, транспорт, жесткие связи, заказы, заявки, события. * Назначенные на рейс смены исполнителя и транспорта не могут использоваться в других рейсах. Полученные в результате актуализации рейсы содержат только те работы, которые осталось выполнить. ' - name: Replan description: 'Перепланирование - создание новых рейсов на основе уже существующих рейсов с учетом фактов. Перепланирование проходит в три этапа - проверка, применение фактов и создание ограничений для планирования на базе существующих рейсов, планирование. Чтобы получить результат применения фактов к исходной задаче воспользуйтесь [очисткой данных для перепланирования](#operation/run_replan_refining). Учет текущего времени `current_time`: * Учитываются только те факты, которые произошли позже `current_time`. * Минимальное время всех состояний вычисляемых рейсов берется из `current_time`. ' - name: Convert description: 'Конвертация данных. ' - name: System description: 'Системные функции. Вспомогательный функционал, общий для всех сервисов. ' externalDocs: description: Основной сайт url: https://veeroute.ru/ paths: /universal/plan/calculation: post: tags: - Plan summary: Планирование (SYNC) description: 'Синхронный метод для создания рейсов. Данный метод рекомендуется только для тестового использования и ручного запуска расчетов на небольшом объеме данных. Для боевой среды рекомендуется использовать [асинхронный метод](#operation/run_plan_calculation_async). ' operationId: run_plan_calculation requestBody: description: Новый запрос на планирование. required: true content: application/json: schema: $ref: '#/components/schemas/plan_task' examples: PlanTaskTokyo: $ref: '#/components/examples/PlanTaskTokyo' PlanTaskMoscow: $ref: '#/components/examples/PlanTaskMoscow' PlanTaskDenver: $ref: '#/components/examples/PlanTaskDenver' PlanTaskBerlin: $ref: '#/components/examples/PlanTaskBerlin' PlanTaskBeijing: $ref: '#/components/examples/PlanTaskBeijing' responses: '200': description: Успешное выполнение content: application/json: schema: $ref: '#/components/schemas/plan_result' examples: PlanResultTokyo: $ref: '#/components/examples/PlanResultTokyo' PlanResultMoscow: $ref: '#/components/examples/PlanResultMoscow' PlanResultDenver: $ref: '#/components/examples/PlanResultDenver' PlanResultBerlin: $ref: '#/components/examples/PlanResultBerlin' PlanResultBeijing: $ref: '#/components/examples/PlanResultBeijing' '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' x-codeSamples: - lang: Python source: 'from vrt_lss_universal import * from vrt_lss_universal.apis import * from vrt_lss_universal.models import * # settings HOST = ''https://api.edge.veeroute.tech'' # production env https://api.prod.veeroute.com'' TOKEN = ''PASTETOKENHERE'' # create client configuration = Configuration() configuration.host = HOST configuration.access_token = TOKEN client = ApiClient(configuration) # create api instances system_api = SystemApi(client) plan_api = PlanApi(client) # run check check_response = system_api.check() print(check_response) # run sync calculation task = PlanTask(...) result = plan_api.run_plan_calculation(task) print(result)' /universal/plan/calculation_async: post: tags: - Plan summary: Планирование (ASYNC) description: 'Создание рейсов. Получение результата производится с помощью метода [result](#operation/read_plan_result), а удаление - с помощью [delete](#operation/delete_plan_result). ' operationId: run_plan_calculation_async requestBody: description: Запуск асинхронного планирования. required: true content: application/json: schema: $ref: '#/components/schemas/plan_task' examples: PlanTaskTokyo: $ref: '#/components/examples/PlanTaskTokyo' PlanTaskMoscow: $ref: '#/components/examples/PlanTaskMoscow' PlanTaskDenver: $ref: '#/components/examples/PlanTaskDenver' PlanTaskBerlin: $ref: '#/components/examples/PlanTaskBerlin' PlanTaskBeijing: $ref: '#/components/examples/PlanTaskBeijing' responses: '200': description: Успешное выполнение content: application/json: schema: $ref: '#/components/schemas/calculation_async_result' '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' /universal/plan/calculation_async/{id}: parameters: - $ref: '#/components/parameters/result_id' get: tags: - Plan summary: Состояние расчета description: Получение состояния расчета по идентификатору расчета. operationId: read_plan_calculation_state responses: '200': description: Успешное выполнение content: application/json: schema: $ref: '#/components/schemas/calculation_state' '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' delete: tags: - Plan summary: Отмена расчета description: Отмена процесса планирования по идентификатору расчета. operationId: cancel_plan_calculation responses: '204': description: Успешное выполнение - планирование отменено '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' /universal/plan/result/{id}: parameters: - $ref: '#/components/parameters/result_id' get: tags: - Plan summary: Получение результата description: Получение результата планирования по идентификатору расчета. operationId: read_plan_result responses: '200': description: Успешное выполнение - планирование завершено. content: application/json: schema: $ref: '#/components/schemas/plan_result' examples: PlanResultTokyo: $ref: '#/components/examples/PlanResultTokyo' PlanResultMoscow: $ref: '#/components/examples/PlanResultMoscow' PlanResultDenver: $ref: '#/components/examples/PlanResultDenver' PlanResultBerlin: $ref: '#/components/examples/PlanResultBerlin' PlanResultBeijing: $ref: '#/components/examples/PlanResultBeijing' '202': description: Планирование в процессе. content: application/json: schema: $ref: '#/components/schemas/plan_result' '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' delete: tags: - Plan summary: Удаление результата description: Удаление результата по идентификатору расчета. operationId: delete_plan_result responses: '204': description: Успешное выполнение - планирование удалено. '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' /universal/plan/validation: post: tags: - Plan summary: Валидация данных description: Проверка данных для планирования перед использованием. operationId: run_plan_validation requestBody: description: Данные, которые необходимо проверить. required: true content: application/json: schema: $ref: '#/components/schemas/plan_task' examples: PlanTaskTokyo: $ref: '#/components/examples/PlanTaskTokyo' PlanTaskMoscow: $ref: '#/components/examples/PlanTaskMoscow' PlanTaskDenver: $ref: '#/components/examples/PlanTaskDenver' PlanTaskBerlin: $ref: '#/components/examples/PlanTaskBerlin' PlanTaskBeijing: $ref: '#/components/examples/PlanTaskBeijing' responses: '200': description: Успешное выполнение. content: application/json: schema: $ref: '#/components/schemas/validate_result' examples: ValidateResultExample: $ref: '#/components/examples/ValidateResultExample' '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' /universal/replan/calculation: post: tags: - Replan summary: Перепланирование (SYNC) description: 'Перепланирование - создание рейсов на основе данных о заказах, исполнителях и транспорте. ' operationId: run_replan_calculation requestBody: description: Новый запрос на перепланирование. required: true content: application/json: schema: $ref: '#/components/schemas/replan_task' examples: ReplanTaskMoscow: $ref: '#/components/examples/ReplanTaskMoscow' responses: '200': description: Успешное выполнение content: application/json: schema: $ref: '#/components/schemas/plan_result' examples: ReplanResultMoscow: $ref: '#/components/examples/ReplanResultMoscow' '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' x-codeSamples: - lang: Python source: 'from vrt_lss_universal import * from vrt_lss_universal.apis import * from vrt_lss_universal.models import * # settings HOST = ''https://api.edge.veeroute.tech'' # production env https://api.prod.veeroute.com'' TOKEN = ''PASTETOKENHERE'' # create client configuration = Configuration() configuration.host = HOST configuration.access_token = TOKEN client = ApiClient(configuration) # create api instances system_api = SystemApi(client) plan_api = PlanApi(client) # run check check_response = system_api.check() print(check_response) # run sync calculation task = ReplanTask(...) result = plan_api.run_replan_calculation(task) print(result)' /universal/replan/calculation_async: post: tags: - Replan summary: Перепланирование (ASYNC) description: 'Перепланирование - изменение существующих и создание новых рейсов на основе произошедших фактов и данных о заказах, исполнителях и транспорте. Получение результата производится с помощью метода [result](#operation/read_replan_result), а удаление - с помощью [delete](#operation/delete_replan_result). ' operationId: run_replan_calculation_async requestBody: description: Запуск асинхронного перепланирования. required: true content: application/json: schema: $ref: '#/components/schemas/replan_task' examples: ReplanTaskMoscow: $ref: '#/components/examples/ReplanTaskMoscow' responses: '200': description: Успешное выполнение content: application/json: schema: $ref: '#/components/schemas/calculation_async_result' '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' /universal/replan/calculation_async/{id}: parameters: - $ref: '#/components/parameters/result_id' get: tags: - Replan summary: Состояние расчета description: Получение состояния расчета по идентификатору расчета. operationId: read_replan_calculation_state responses: '200': description: Успешное выполнение content: application/json: schema: $ref: '#/components/schemas/calculation_state' '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' delete: tags: - Replan summary: Отмена расчета description: Отмена процесса планирования по идентификатору расчета. operationId: cancel_replan_calculation_async responses: '204': description: Успешное выполнение - расчет отменен '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' /universal/replan/result/{id}: parameters: - $ref: '#/components/parameters/result_id' get: tags: - Replan summary: Получение результата description: Получение результата перепланирования по идентификатору расчета. operationId: read_replan_result responses: '200': description: Успешное выполнение - перепланирование завершено. content: application/json: schema: $ref: '#/components/schemas/plan_result' examples: ReplanResultMoscow: $ref: '#/components/examples/ReplanResultMoscow' '202': description: Планирование в процессе. content: application/json: schema: $ref: '#/components/schemas/plan_result' '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' delete: tags: - Replan summary: Удаление результата description: Удаление результата перепланирования по идентификатору расчета. operationId: delete_replan_result responses: '204': description: Успешное выполнение - планирование удалено '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' /universal/replan/validation: post: tags: - Replan summary: Валидация данных description: Проверка данных для перепланирования перед использованием. operationId: run_replan_validation requestBody: description: Данные, которые необходимо проверить. required: true content: application/json: schema: $ref: '#/components/schemas/replan_task' examples: ReplanTaskMoscow: $ref: '#/components/examples/ReplanTaskMoscow' responses: '200': description: Успешное выполнение content: application/json: schema: $ref: '#/components/schemas/validate_result' examples: ValidateResultExample: $ref: '#/components/examples/ValidateResultExample' '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' /universal/replan/refining: post: tags: - Replan summary: Очистка данных description: Очистка данных для перепланирования перед планированием. operationId: run_replan_refining requestBody: description: Данные, которые необходимо очистить. required: true content: application/json: schema: $ref: '#/components/schemas/replan_task' responses: '200': description: Успешное выполнение content: application/json: schema: $ref: '#/components/schemas/replan_task' '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' /universal/actualize/calculation: post: tags: - Actualize summary: Актуализация (SYNC) description: Актуализация ранее запланированных рейсов. operationId: run_actualize_calculation requestBody: description: Новый запрос на актуализацию. required: true content: application/json: schema: $ref: '#/components/schemas/actualize_task' examples: ActualizeTaskMoscow: $ref: '#/components/examples/ActualizeTaskMoscow' responses: '200': description: Успешное выполнение content: application/json: schema: $ref: '#/components/schemas/plan_result' '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' /universal/actualize/validation: post: tags: - Actualize summary: Валидация данных description: Проверка данных для актуализации перед использованием. operationId: run_actualize_validation requestBody: description: Данные, которые необходимо проверить. required: true content: application/json: schema: $ref: '#/components/schemas/actualize_task' responses: '200': description: Успешное выполнение content: application/json: schema: $ref: '#/components/schemas/validate_result' examples: ValidateResultExample: $ref: '#/components/examples/ValidateResultExample' '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' /universal/actualize/refining: post: tags: - Actualize summary: Очистка данных description: Очистка данных для актуализации перед планированием. operationId: run_actualize_refining requestBody: description: Данные, которые необходимо очистить. required: true content: application/json: schema: $ref: '#/components/schemas/actualize_task' examples: ActualizeTaskMoscow: $ref: '#/components/examples/ActualizeTaskMoscow' responses: '200': description: Успешное выполнение content: application/json: schema: $ref: '#/components/schemas/actualize_task' '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' /universal/convert/json_to_xlsx: post: tags: - Convert summary: JSON >> XLSX description: Используется для конвертации входных и выходных данных в формат [VRt.Universal XLSX](#section/Xlsx). operationId: run_convert_json_to_xlsx requestBody: description: Запрос на конвертацию в XLSX. required: true content: application/json: schema: $ref: '#/components/schemas/universal_data' examples: ConvertTaskMoscow: $ref: '#/components/examples/ConvertTaskMoscow' responses: '200': description: Успешное выполнение content: application/octet-stream: schema: $ref: '#/components/schemas/file_xlsx' '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '403': $ref: '#/components/responses/403' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' /universal/convert/xlsx_to_json: post: tags: - Convert summary: XLSX >> JSON description: 'Используется для конвертации данных из формата [VRt.Universal XLSX](#section/Xlsx) в формат VRt.Universal JSON. ' operationId: run_convert_xlsx_to_json requestBody: description: Запрос на конвертацию в JSON. required: true content: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet: schema: $ref: '#/components/schemas/file_xlsx' responses: '200': description: Успешное выполнение content: application/json: schema: $ref: '#/components/schemas/universal_data' '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '403': $ref: '#/components/responses/403' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' /universal/convert/json_to_thrift: post: tags: - Convert summary: JSON >> THRIFT description: Используется для конвертации входных данных в формат THRIFT. operationId: run_convert_json_to_thrift requestBody: description: Запрос на конвертацию в THRIFT. required: true content: application/json: schema: $ref: '#/components/schemas/universal_data' examples: ConvertTaskMoscow: $ref: '#/components/examples/ConvertTaskMoscow' responses: '200': description: Успешное выполнение content: text/plain: schema: $ref: '#/components/schemas/file_text' '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '403': $ref: '#/components/responses/403' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' /universal/system/check: get: tags: - System summary: Проверка доступности description: Проверка доступности сервиса. operationId: check security: [] responses: '200': description: Успешное выполнение content: application/json: schema: $ref: '#/components/schemas/check_result' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' /universal/system/version: get: tags: - System summary: Получение версии сервиса description: Получение версии сервиса. operationId: version security: [] responses: '200': description: Успешное выполнение content: application/json: schema: $ref: '#/components/schemas/version_result' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' /universal/file/{filename}: parameters: - $ref: '#/components/parameters/filename' get: tags: - System summary: Получение документации description: Получение файла с документацией на этот сервис. operationId: file security: [] responses: '200': description: Успешное выполнение content: text/html: schema: $ref: '#/components/schemas/file_html' text/plain: schema: $ref: '#/components/schemas/file_json' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' '504': $ref: '#/components/responses/504' default: $ref: '#/components/responses/503' components: securitySchemes: ApiKeyAuth: description: "Для [аутентификации](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication)\ \ клиента \nиспользуется [JWT токен](https://ru.wikipedia.org/wiki/JSON_Web_Token),\ \ \nкоторый необходимо указывать в заголовке для каждого запроса в формате:\n\ \n`Authorization: Bearer `.\n\nУникальный токен для пользовательского\ \ аккаунта необходимо получить с помощью VRt.Account API.\n" type: http scheme: bearer bearerFormat: JWT schemas: geopoint: description: Географическая точка. type: object additionalProperties: false properties: latitude: description: Широта в градусах. type: number format: double minimum: -90 maximum: 90 example: 55.692789 longitude: description: Долгота в градусах. type: number format: double minimum: -180 maximum: 180 example: 37.554554 required: - latitude - longitude time_duration: description: 'Продолжительность временного отрезка в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations). ' type: string format: duration x-custom-format: duration pattern: ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$ minLength: 3 maxLength: 16 default: PT0S example: P1Y1M1DT2H12M34.3S time_window: description: Временное окно. type: object additionalProperties: false nullable: true properties: from: description: 'Дата и время в соответствии с [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6). ' type: string format: date-time example: '2024-02-21T09:30:00+03:00' to: description: 'Дата и время в соответствии с [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6). ' type: string format: date-time example: '2024-02-21T19:45:00Z' required: - from - to compatibility_tag: description: Тег, используемый для определения [совместимости](#section/Opisanie/Ispolzuemye-sovmestimosti). type: string minLength: 1 maxLength: 256 example: B1 compatibility_tag_list: description: 'Список тегов которые определяют свойство или требование. ' type: array minItems: 0 maxItems: 1000 uniqueItems: true default: [] items: $ref: '#/components/schemas/compatibility_tag' location_compatibilities: description: '[Совместимости](#section/Opisanie/Ispolzuemye-sovmestimosti) локации с транспортом. ' type: object additionalProperties: false nullable: true properties: transport_restrictions: description: 'Список необходимых требований к транспорту. Используется для проверки совместимости транспорта с локацией. ' $ref: '#/components/schemas/compatibility_tag_list' attribute: description: Атрибут. type: object additionalProperties: false properties: key: description: Ключ атрибута. type: string minLength: 1 maxLength: 100 example: attribute_name value: description: Значение атрибута. type: string minLength: 0 maxLength: 2000 example: X51 required: - key - value attributes: description: Атрибуты. Используются для указания служебной информации. type: array minItems: 0 maxItems: 1000 uniqueItems: true default: [] items: $ref: '#/components/schemas/attribute' location: description: 'Локация - уникальное географическое местоположение объекта с параметрами доступности. ' type: object additionalProperties: false properties: key: description: Ключ локации, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: location01 geopoint: $ref: '#/components/schemas/geopoint' arrival_duration: description: Время на подъезд (парковку) на локации, в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations). $ref: '#/components/schemas/time_duration' departure_duration: description: Время на отъезд от локации, в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations). $ref: '#/components/schemas/time_duration' work_windows: description: 'Список временных окон работы локации. Если список пустой или не указан - локация работает без ограничений по времени. ' type: array uniqueItems: true minItems: 0 maxItems: 100 default: [] items: $ref: '#/components/schemas/time_window' compatibilities: $ref: '#/components/schemas/location_compatibilities' attributes: $ref: '#/components/schemas/attributes' required: - key - geopoint demand_type: description: "Тип заявки:\n * `PICKUP` - загрузка\n * `DROP` - выгрузка\n\ \ * `WORK` - работа на локации\n * `PICKUP_TO_BOX` - загрузка в кузов\n\ \ * `DROP_FROM_BOX` - выгрузка из кузова\n" nullable: false type: string enum: - PICKUP - DROP - WORK - PICKUP_TO_BOX - DROP_FROM_BOX example: WORK cargo_list: description: "Список ключей грузов, зависит от типа заявки, в которой находятся\ \ грузы:\n * `PICKUP` - список ключей\n * `DROP` - один ключ\n * `WORK`\ \ - пустой список\n * `PICKUP_TO_BOX` - один ключ\n * `DROP_FROM_BOX` -\ \ один ключ\n" type: array minItems: 0 maxItems: 1000 uniqueItems: true items: description: Ключ груза. type: string minLength: 1 maxLength: 1024 example: - cargo01 possible_event: description: 'Возможное событие. Объединяет географическую локацию и временное окно, в которое возможно выполнение заявки. ' type: object additionalProperties: false properties: key: description: Ключ события, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: event_1 location_key: description: Ключ локации, в которой возможно данное событие. type: string minLength: 1 maxLength: 1024 example: location01 duration: description: Время выполнения события, в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations). $ref: '#/components/schemas/time_duration' reward: description: Вознаграждение за выполнение данного события. type: number format: double minimum: 0 maximum: 1000000000 default: 1000.1 example: 199.9 hard_time_window: $ref: '#/components/schemas/time_window' soft_time_window: $ref: '#/components/schemas/time_window' required: - key - location_key - hard_time_window demand: description: Заявка на единичное действие с грузом (загрузка / выгрузка) или работу на локации. type: object additionalProperties: false properties: key: description: Ключ заявки, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: demand_1 demand_type: $ref: '#/components/schemas/demand_type' target_cargos: $ref: '#/components/schemas/cargo_list' precedence_in_trip: description: Приоритет внутри рейса, 0 - приоритет не учитывается. type: integer format: int32 minimum: 0 maximum: 15001 example: 1 default: 0 precedence_in_order: description: Приоритет внутри заказа, 0 - приоритет не учитывается. type: integer format: int32 minimum: 0 maximum: 15001 example: 1 default: 0 possible_events: description: Список временных окон и ключей локаций, в которых возможно выполнение заявки. type: array uniqueItems: true minItems: 1 maxItems: 25 items: $ref: '#/components/schemas/possible_event' attributes: $ref: '#/components/schemas/attributes' required: - key - demand_type - possible_events capacity: description: Характеритистики вместимости. type: object additionalProperties: false nullable: true properties: mass: description: Масса в килограммах. type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 10 volume: description: Объем в кубических метрах. type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 2 capacity_a: description: 'Дополнительный параметр (A) для измерения грузов и отсеков в альтернативных единицах измерения. Например, для учета грузов в штуках (у груза данный параметр равен единице, у отсека - максимальному количеству вмещаемых грузов). ' type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 1 capacity_b: description: 'Дополнительный параметр (B) для измерения грузов и отсеков в альтернативных единицах измерения. ' type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 2 capacity_c: description: 'Дополнительный параметр (C) для измерения грузов и отсеков в альтернативных единицах измерения. ' type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 3 cargo_rotation_type: description: "Способность груза вращаться с шагом в 90 градусов вокруг осей:\n\ \ * `ALL` - любых осей.\n * `YAW` - вокруг оси Z.\n * `PITCH` - вокруг\ \ оси Y.\n * `ROLL` - вокруг оси X.\n" type: string enum: - ALL - YAW - PITCH - ROLL default: ALL example: ALL cargo_rotation: description: "Список способностей объекта вращаться (с шагом в 90 градусов):\n\ \ * `ALL` - можно поворачивать по любой оси любое количество раз\n * `YAW`\ \ - можно повернуть один раз по вертикальной оси (вокруг своей оси)\n * `PITCH`\ \ - можно повернуть один раз по поперечной оси (поставить вертикально)\n \ \ * `ROLL` - можно повернуть один раз по продольной оси (положить на бок)\n\ \nЕсли список пустой - объект вращать запрещено.\n\nПодробнее про [размещение\ \ грузов в кузове](#section/Opisanie/Razmeshenie-gruzov-v-kuzove)." type: array minItems: 0 maxItems: 4 uniqueItems: true default: [] items: $ref: '#/components/schemas/cargo_rotation_type' example: - ALL cargo_compatibilities: description: '[Совместимости](#section/Opisanie/Ispolzuemye-sovmestimosti) груза с отсеком транспорта и другими грузами. ' type: object additionalProperties: false nullable: true properties: width: description: Ширина в метрах, используется для проверки вместимости в отсек транспорта. type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 1 height: description: Высота в метрах, используется для проверки вместимости в отсек транспорта. type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 0.3 length: description: Длина в метрах, используется для проверки вместимости в отсек транспорта. type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 2.2 rotation: $ref: '#/components/schemas/cargo_rotation' box_restrictions: description: 'Список необходимых требований к отсеку транспорта, в котором может перевозиться этот груз. ' $ref: '#/components/schemas/compatibility_tag_list' cargo_features: description: 'Список свойств груза. Используется для проверки совместимости груза с другими грузами. Несовместимые грузы не могу находится одновременно в одном отсеке транспорта. ' $ref: '#/components/schemas/compatibility_tag_list' cargo_restrictions: description: 'Список необходимых требований к грузу. Используется для проверки совместимости груза с другими грузами. Несовместимые грузы не могу находится одновременно в одном отсеке транспорта. ' $ref: '#/components/schemas/compatibility_tag_list' cargo: description: 'Груз. Вне зависимости от размеров груз может перемещаться только внутри отсека транспорта. ' type: object additionalProperties: false properties: key: description: Ключ груза, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: cargo01 capacity: $ref: '#/components/schemas/capacity' description: Аддитивные меры груза. compatibilities: $ref: '#/components/schemas/cargo_compatibilities' target_box_key: description: 'Ключ отсека транспорта, в котором уже находится груз. Применимо только для груза, который находится в заявке с типом `DROP_FROM_BOX`. Для других типов заявок ключ должен быть пустым. ' type: string minLength: 1 maxLength: 1024 nullable: true default: null example: box01 required: - key order_compatibilities: description: '[Совместимости](#section/Opisanie/Ispolzuemye-sovmestimosti) заказа с исполнителями и другими заказами. ' type: object additionalProperties: false nullable: true properties: order_features: description: 'Список свойств заказа. Используется для проверки совместимости заказа с другими заказами. Несовместимые заказы не могу находится в одном рейсе. ' $ref: '#/components/schemas/compatibility_tag_list' order_restrictions: description: 'Список требований к заказу, выполняемому в этом же рейсе. Используется для проверки совместимости заказа с другими заказами. Несовместимые заказы не могу находится в одном рейсе. ' $ref: '#/components/schemas/compatibility_tag_list' performer_restrictions: description: 'Список необходимых требований к исполнителю, который может выполнить данный заказ. ' $ref: '#/components/schemas/compatibility_tag_list' performer_blacklist: description: 'Список требований, наличие которых у исполнителя не допустимо. Данный список не должен пересекаться с `performer_restrictions`. ' $ref: '#/components/schemas/compatibility_tag_list' order: description: Заказ на перемещение груза, содержит список заявок. type: object additionalProperties: false properties: key: description: Ключ заказа, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: order01 demands: description: Список заявок. type: array uniqueItems: true minItems: 1 maxItems: 1000 items: $ref: '#/components/schemas/demand' cargos: description: 'Список грузов, на которые ссылаются заявки данного заказа. Список должен быть пустой, если все заявки заказа имеют тип `WORK`. ' type: array uniqueItems: true minItems: 0 maxItems: 1000 default: [] items: $ref: '#/components/schemas/cargo' compatibilities: $ref: '#/components/schemas/order_compatibilities' attributes: $ref: '#/components/schemas/attributes' required: - key - demands performer_tariff_constraint: description: Оплачиваемый промежуток времени - составная часть тарифа. type: object additionalProperties: false properties: stage_length: description: Длина оплачиваемого периода, в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations). type: string format: duration x-custom-format: duration pattern: ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$ minLength: 3 maxLength: 16 default: PT24H example: P1T8H30M20S cost_per_unit: description: 'Стоимость внутри оплачиваемого периода, денежная единица за секунду работы. ' type: number format: double minimum: 0.001 maximum: 10000 default: 0.001 example: 5.05 performer_tariff: description: Тариф, определяет стоимость и временные ограничения смены. type: object additionalProperties: false properties: cost_per_shift: description: Цена за использование смены, денежная единица. type: number format: double minimum: 0.001 maximum: 1000000 default: 0.001 example: 2000 constraints: description: Список составных частей тарифа. type: array minItems: 1 maxItems: 100 uniqueItems: false items: $ref: '#/components/schemas/performer_tariff_constraint' default: - stage_length: PT24H cost_per_unit: 0.001 max_penalty_cost: description: 'Максимальная сумма штрафов, которую может получить исполнитель в рамках данной смены, денежная единица. Если параметр не указан или указан как null - исполнитель может нарушать без ограничений. ' type: number format: double nullable: true default: null minimum: 0 maximum: 1000000 example: 2000 break: description: Условие наступления и характеристики перерыва. type: object additionalProperties: false nullable: true properties: max_work_duration_sum: description: Суммарное время работы, после которого необходимо сделать перерыв, в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations). $ref: '#/components/schemas/time_duration' duration: description: Продолжительность перерыва, в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations). $ref: '#/components/schemas/time_duration' required: - max_work_duration_sum - duration work_and_rest_rules: description: 'Режим труда и отдыха. ' type: object additionalProperties: false properties: first_break: $ref: '#/components/schemas/break' description: 'Первый перерыв в простом виде - не позже чем через N секунд от планового времени начала работы должен быть один перерыв длительностью M секунд. Время ожидания не учитывается как рабочее время. Работа не может быть прервана перерывом. Если много заказов в одной локации - то между выполнением заказов может быть запланирован перерыв. ' performer_shift: description: 'Рабочая смена исполнителя, которая определяет доступность ресурса для планирования внутри его временного окна доступности. ' type: object additionalProperties: false properties: key: description: Ключ смены, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: shift01 availability_time: description: Временное окно смены, в которое исполнитель может выполнять работу на локациях и осуществлять перемещение между локациями. $ref: '#/components/schemas/time_window' working_time: description: Рабочее временное окно, в которые исполнитель может выполнять работу на локациях, должно быть внутри временного окна смены. $ref: '#/components/schemas/time_window' start_location_key: description: 'Ключ начальной локациями. Если ключ не задан - то рейс начинается на первом заказе. ' type: string minLength: 1 maxLength: 1024 nullable: true default: null example: start_location01 finish_location_key: description: 'Ключ финальной локации. Если ключ не задан - то рейс завершается на последнем заказе. ' type: string minLength: 1 maxLength: 1024 nullable: true default: null example: finish_location01 max_locations: description: 'Ограничение количества уникальных локаций в одном рейсе, включая локации старта и финиша. Если параметр не указан или указан как null - то количество локаций не ограничено. ' type: integer format: int32 minimum: 1 maximum: 1000 nullable: true default: null example: 15 max_stops: description: 'Ограничение количества остановок в одном рейсе, включая локации старта и финиша. Если параметр не указан или указан как null - то количество остановок не ограничено. ' type: integer format: int32 minimum: 1 maximum: 1000 nullable: true default: null example: 15 tariff: $ref: '#/components/schemas/performer_tariff' work_and_rest_rules: $ref: '#/components/schemas/work_and_rest_rules' attributes: $ref: '#/components/schemas/attributes' required: - key - availability_time - working_time transport_type: description: "Типы транспорта:\n * `CAR` - легковой автомобиль\n * `TRUCK_1500`\ \ - грузовой автомобиль с разрешенной массой не более 1500 кг\n * `TRUCK_3000`\ \ - грузовой автомобиль с разрешенной массой не более 3000 кг\n * `TRUCK_5000`\ \ - грузовой автомобиль с разрешенной массой не более 5000 кг\n * `TRUCK_10000`\ \ - грузовой автомобиль с разрешенной массой не более 10000 кг\n * `TRUCK_20000`\ \ - грузовой автомобиль с разрешенной массой не более 20000 кг\n * `TRUCK_GARBAGE_1`\ \ - грузовой автомобиль для перевозки мусора (тип 1) \n * `TRUCK_GARBAGE_2`\ \ - грузовой автомобиль для перевозки мусора (тип 2)\n * `TUK_TUK` - моторикша\n\ \ * `BICYCLE` - велосипед\n * `PEDESTRIAN` - пешеход \n * `PUBLIC_TRANSPORT`\ \ - общественный транспорт\n\nРазрешенная масса - это масса снаряженного транспорта\ \ с грузом и водителем, установленная предприятием-изготовителем в качестве\ \ максимально допустимой.\n" type: string enum: - CAR - TRUCK_1500 - TRUCK_3000 - TRUCK_5000 - TRUCK_10000 - TRUCK_20000 - TRUCK_GARBAGE_1 - TRUCK_GARBAGE_2 - TUK_TUK - BICYCLE - PEDESTRIAN - PUBLIC_TRANSPORT default: CAR example: CAR feature_lifetime: description: Время жизни тега. type: object additionalProperties: false properties: feature: $ref: '#/components/schemas/compatibility_tag' time_windows: description: 'Список временных окон, внутри которых существует указанный тег. Если на совместимость влияют несколько свойств с разными окнами - сущности будут считаться совместимыми внутри пересечения окон. ' type: array minItems: 1 maxItems: 4 uniqueItems: true items: $ref: '#/components/schemas/time_window' required: - feature - time_windows feature_lifetime_list: description: 'Список ограничения на время жизни тегов. ' type: array minItems: 0 maxItems: 1000 default: [] uniqueItems: true items: $ref: '#/components/schemas/feature_lifetime' performer_compatibilities: description: '[Совместимости](#section/Opisanie/Ispolzuemye-sovmestimosti) исполнителя с транспортом и заказами. ' type: object additionalProperties: false nullable: true properties: performer_features: description: 'Список свойств исполнителя. Используется для проверки совместимости исполнителя с заказами. ' $ref: '#/components/schemas/compatibility_tag_list' performer_features_lifetimes: description: 'Ограничения на время жизни свойств исполнителя. Влияет на совместимость Исполнитель-Заказ. ' $ref: '#/components/schemas/feature_lifetime_list' transport_restrictions: description: 'Список необходимых требований к транспорту. Используется для проверки совместимости транспорта с исполнителем. ' $ref: '#/components/schemas/compatibility_tag_list' performer_limits: description: 'Ограничение на рабочую загрузку исполнителя. ' type: object additionalProperties: false nullable: true properties: max_work_shifts: description: Ограничение количества смен исполнителя в одном планировании. type: integer format: int32 minimum: 1 maximum: 31 default: 31 example: 3 performer: description: 'Исполнитель. Выполняет заказы, используя транспорт. ' type: object additionalProperties: false properties: key: description: Ключ исполнителя, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: performer0001 shifts: description: Список рабочих смен исполнителя. type: array uniqueItems: true minItems: 1 maxItems: 15001 items: $ref: '#/components/schemas/performer_shift' own_transport_type: $ref: '#/components/schemas/transport_type' compatibilities: $ref: '#/components/schemas/performer_compatibilities' limits: $ref: '#/components/schemas/performer_limits' attributes: $ref: '#/components/schemas/attributes' required: - key - shifts transport_tariff_constraint: description: Оплачиваемый пробег - составная часть тарифа. type: object additionalProperties: false properties: stage_length: description: Длина оплачиваемой части пути, в метрах. type: integer format: int32 minimum: 1 maximum: 100000000 default: 100000000 example: 200000 cost_per_unit: description: 'Стоимость внутри оплачиваемой части пути, денежная единица за один метр. ' type: number format: double minimum: 0.001 maximum: 10000 default: 0.001 example: 5.05 transport_tariff: description: Тариф, определяет стоимость работы транспорта и ограничения по пробегу за смену. type: object additionalProperties: false properties: cost_per_shift: description: Цена за использование смены, денежная единица. type: number format: double minimum: 0.001 maximum: 1000000 default: 0.001 example: 2000 constraints: description: Список составных частей тарифа. type: array minItems: 1 maxItems: 100 uniqueItems: false items: $ref: '#/components/schemas/transport_tariff_constraint' default: - stage_length: 100000000 cost_per_unit: 0.001 transportation_cost: description: Стоимость перемещения 1 единицы меры груза на 1 метр (по каждому полю capacity соответственно), в условных денежных единицах. $ref: '#/components/schemas/capacity' max_penalty_cost: description: 'Максимальная сумма штрафов, которую может получить транспорт в рамках данной смены, денежная единица. ' type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 2000 deprecated: true transport_shift: description: 'Рабочая смена транспорта. Определяет доступность транспорта для планирования. Конец смены обнуляет оставшийся в кузове груз после выполнения заявок типов `DROP_FROM_BOX` и `PICKUP_TO_BOX`. ' type: object additionalProperties: false properties: key: description: Ключ смены, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: shift01 availability_time: description: Временное окно смены, в которое транспорт может осуществлять перемещение между локациями и использоваться исполнителем в работах на локациях. $ref: '#/components/schemas/time_window' working_time: deprecated: true description: Рабочее временное окно, в которые транспорт может использоваться исполнителем в работах на локациях, должно быть внутри временного окна смены. $ref: '#/components/schemas/time_window' start_location_key: description: 'Ключ начальной локациями. Если ключ не задан - то путь транспорта начинается на первом заказе. ' type: string minLength: 1 maxLength: 1024 nullable: true default: null example: start_location01 finish_location_key: description: 'Ключ финальной локации. Если ключ не задан - то путь транспорта завершается на последнем заказе. ' type: string minLength: 1 maxLength: 1024 nullable: true default: null example: finish_location01 tariff: $ref: '#/components/schemas/transport_tariff' attributes: $ref: '#/components/schemas/attributes' required: - key - availability_time - working_time box_compatibilities: description: '[Совместимости](#section/Opisanie/Ispolzuemye-sovmestimosti) отсека транспорта. ' type: object additionalProperties: false nullable: true properties: width: description: Ширина в метрах. type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 1 height: description: Высота в метрах. type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 3.1 length: description: Длина в метрах. type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 2.1 box_features: description: 'Список свойств отсека. Используется для проверки совместимости груза с отсеком. ' $ref: '#/components/schemas/compatibility_tag_list' box_limits: description: '`max_one_cargo_capacity` - ограничение по полям capacity для *одного* груза. ' type: object additionalProperties: false nullable: true properties: max_one_cargo_capacity: $ref: '#/components/schemas/capacity' box: description: 'Отсек транспорта, который способен вмещать грузы. ' type: object additionalProperties: false properties: key: description: Ключ отсека, уникальный идентификатор, используется для идентификации размещения грузов по отсекам. type: string minLength: 1 maxLength: 1024 example: box01 capacity: description: Вместимость отсека, которая ограничивает максимальную сумму по всем полям `capacity` у *всех* грузов. $ref: '#/components/schemas/capacity' compatibilities: $ref: '#/components/schemas/box_compatibilities' limits: $ref: '#/components/schemas/box_limits' required: - key transport_compatibilities: description: '[Совместимости](#section/Opisanie/Ispolzuemye-sovmestimosti) транспорта с исполнителями и локациями. ' type: object additionalProperties: false nullable: true properties: transport_features: description: 'Список свойств транспорта. Используется для проверки совместимости транспорта с локациями и исполнителями. ' $ref: '#/components/schemas/compatibility_tag_list' transport_features_lifetimes: description: 'Ограничения на время жизни свойств транспорта. Влияет на совместимость Транспорт-Локация. ' $ref: '#/components/schemas/feature_lifetime_list' performer_restrictions: description: 'Список необходимых требований к исполнителю для использования данного транспорта. ' $ref: '#/components/schemas/compatibility_tag_list' transport_limits: description: 'Ограничения на загрузку транспорт. ' type: object additionalProperties: false nullable: true properties: max_boxes: description: 'Ограничение максимального количества используемых отсеков транспорта в одном рейсе. Если параметр не указан или указан как null - то количество отсеков не ограничено. Ограничение не должно превышать количество отсеков. ' type: integer format: int32 nullable: true default: null minimum: 0 maximum: 100 example: 2 max_capacity: $ref: '#/components/schemas/capacity' description: 'Параметр дополнительно ограничивает максимально возможную загрузку транспорта в целом суммарно по всем отсекам. Если параметр не задан - загрузка ограничивается только каждым отсеком. Применимо только если у транспорта больше одного отсека. Параметр не должен быть меньше вместимости любого отсека. ' transport: description: 'Транспорт. Исполнитель использует транспорт для перемещения и перевозки грузов. ' type: object additionalProperties: false properties: key: description: Ключ транспорта, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: transport001 shifts: description: Список рабочих смен транспорта. type: array uniqueItems: true minItems: 1 maxItems: 15001 items: $ref: '#/components/schemas/transport_shift' transport_type: $ref: '#/components/schemas/transport_type' boxes: description: Список отсеков транспорта, которые могут вмещать груз. type: array minItems: 0 maxItems: 100 uniqueItems: true default: [] items: $ref: '#/components/schemas/box' compatibilities: $ref: '#/components/schemas/transport_compatibilities' limits: $ref: '#/components/schemas/transport_limits' attributes: $ref: '#/components/schemas/attributes' required: - key - shifts hardlink_element_type: description: 'Тип сущности-цели, которая связана назначением с другими сущностями. Может быть заказом, сменой исполнителя, сменой транспорта. ' type: string enum: - ORDER - PERFORMER_SHIFT - TRANSPORT_SHIFT example: ORDER hardlink_element: description: Элемент группы назначения. type: object additionalProperties: false properties: type: $ref: '#/components/schemas/hardlink_element_type' entity_key: description: Ключ сущности-цели (соответственно заказа или смены). type: string minLength: 1 maxLength: 1024 example: ord0001 required: - type - entity_key hardlink: description: "Назначение, необходимое чтобы связать сущности в одну группу.\ \ Может состоять из двух сущностей или более. Пример применения:\n * назначение\ \ водителя на транспорт (связь смен исполнителя и траспорта).\n * назначение\ \ заказа на исполнителя (связь заказа со сменой исполнителя).\n * указание\ \ необходимости выполнять несколько заказов в одном рейсе (связь заказов между\ \ собой).\n" type: object additionalProperties: false properties: key: description: Ключ назначения. type: string minLength: 1 maxLength: 1024 example: group01 links: description: Список элементов группы назначения. type: array minItems: 2 maxItems: 1000 items: $ref: '#/components/schemas/hardlink_element' required: - key - links plan_configuration: description: "Название конфигурации планирования.\nКонфигурация определяет цель\ \ и качество результата. \n[Перечень доступных](#section/Opisanie/Konfiguraciya-planirovaniya)\ \ конфигураций планирования." type: string minLength: 1 maxLength: 256 default: default example: optimize_distance trip_start_time_strategy: description: "Стратегия выбора оптимального времени начала рейса:\n * `EARLIEST_FINISH`\ \ - оптимальное время начала рейса с целью пораньше завершить все заказы.\n\ \ * `LOWEST_COST` - оптимальное время рейса с целью увеличения процента попаданий\ \ в мягкие временные окна и минимизации общей стоимости рейса.\n" type: string enum: - EARLIEST_FINISH - LOWEST_COST default: EARLIEST_FINISH example: LOWEST_COST transport_factor: description: Коэффициент изменения скорости указанного типа транспорта. type: object additionalProperties: false properties: transport_type: $ref: '#/components/schemas/transport_type' speed: description: Множитель средней скорости транспорта. type: number format: double minimum: 0.1 maximum: 100000 example: 2.5 required: - transport_type - speed capacity_factor: description: 'Коэффициенты изменения вместимости указанного типа транспорта. Умножает все соответствующие поля `capacity` у всех отсеков у всех транспортов указанного типа. ' type: object additionalProperties: false properties: transport_type: $ref: '#/components/schemas/transport_type' capacity: $ref: '#/components/schemas/capacity' required: - transport_type - capacity demand_extra_duration: description: 'Дополнительное время выполнения заявки определенным исполнителем. ' type: object additionalProperties: false properties: demand_key: description: Ключ заявки, для событий которой необходимо увеличить время выполнения. type: string nullable: true default: null minLength: 1 maxLength: 1024 example: demand01.1 performer_key: description: Ключ исполнителя. type: string minLength: 1 maxLength: 1024 example: performer0001 additional_duration: description: 'Дополнительное время выполнения всех событий указанной заявки для всех смен указанного исполнителя. В формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations). ' $ref: '#/components/schemas/time_duration' required: - demand_key - performer_key - additional_duration trip_assumptions: description: 'Допущения при планировании. Предназначены для корректировки бизнес-логики планирования и массового изменения входных данных. ' type: object additionalProperties: false properties: transport_factor: description: Коэффициенты изменения скорости транспорта. type: array minItems: 0 maxItems: 12 default: [] uniqueItems: true items: $ref: '#/components/schemas/transport_factor' capacity_factor: description: 'Коэффициенты изменения вместимости транспорта. Изменяют параметры `capacity` у всех отсеков и `max_capacity` у транспорта. ' type: array minItems: 0 maxItems: 12 default: [] uniqueItems: true items: $ref: '#/components/schemas/capacity_factor' demands_extra_duration: description: 'Список дополнительных времен выполнения заявки определенными исполнителями. Действует для указанной пары исполнитель-заявка для всех смен исполнителя и всех вариантов исполнения заявки. ' type: array minItems: 0 maxItems: 15001 default: [] uniqueItems: true items: $ref: '#/components/schemas/demand_extra_duration' feature_lifetimes: deprecated: true description: 'Ограничения на время жизни свойств исполнителя и транспорта. Влияет только на совместимости Исполнитель-Заказ и Транспорт-Локация. ' $ref: '#/components/schemas/feature_lifetime_list' disable_compatibility: description: 'Отключить учет совместимостей. Если указано `true` - все становится совместимо со всем. ' type: boolean default: false example: true disable_capacity: description: 'Отключить учет вместимостей. Если указано `true` - весь транспорт вмещает неограниченное количество грузов. ' type: boolean default: false example: true same_order_time_window: description: 'Использовать для расчетов одинаковое (указанное) временное окно для заказов и заявок. Временное окно берется от начала самого раннего до конца самого позднего окна из всех заказов и заявок. ' type: boolean default: false example: true expand_shift_time_window: description: 'Расширить временное окно для смен исполнителей и транспорта. Левая граница первой смены одной сущности расширяется до левой границы указанного окна, правая до правой границы или начала следующего окна на эту же сущность. Каждая следующая смена сдвигает правую границу до следующей смены или до правой границы указанного окна. ' type: boolean default: false example: true compatibility_penalty: description: 'Штраф за нарушение совместимости. При учете нарушения совместимости с локацией штраф применяется за каждую остановку на локации. ' type: object additionalProperties: false properties: tag: $ref: '#/components/schemas/compatibility_tag' penalty: description: 'Штраф за нарушение совместимости по указанному тегу. ' type: number format: double minimum: 0 maximum: 1000000 example: 2000 required: - tag - penalty trip_penalties: description: 'Штрафы при планировании - возможность нарушить часть бизнес-правил. ' type: object additionalProperties: false properties: compatibilities: description: Штрафы за каждый факт нарушения совместимости. type: array uniqueItems: true minItems: 0 maxItems: 1000000 default: [] items: $ref: '#/components/schemas/compatibility_penalty' trips_settings: description: Настройки создания рейсов. type: object additionalProperties: false properties: configuration: $ref: '#/components/schemas/plan_configuration' trip_start_time_strategy: $ref: '#/components/schemas/trip_start_time_strategy' assumptions: $ref: '#/components/schemas/trip_assumptions' penalties: $ref: '#/components/schemas/trip_penalties' geo_settings: description: 'Настройки использования гео-данных. ' type: object additionalProperties: false properties: geo_provider: description: Поставщик гео-данных. type: string default: OSRM minLength: 1 maxLength: 256 example: OSRM toll_roads: description: Использовать платные дороги. type: boolean default: true example: false ferry_crossing: description: Использовать паромные переправы. type: boolean default: true example: false traffic_jams: description: Учет пробок при планировании маршрутов. type: boolean default: true example: false flight_distance: description: 'Использовать для расчетов расстояния по прямой. Если указано `false` - расстояния рассчитываются по дорогам. При включении данного параметра не используется поставщик гео-данных и автоматически выключается учет пробок (`traffic_jams`). ' type: boolean default: false example: true restricted_zones: description: 'Список зон, через которые запрещено проезжать. ' type: array deprecated: true minItems: 0 maxItems: 5 uniqueItems: true default: [] items: description: Идентификатор зоны. type: string minLength: 1 maxLength: 256 example: - ART_MOSCOW_MKAD_CARGO_FRAME calculation_settings: description: Настройки процесса расчета. type: object additionalProperties: false properties: max_calculation_time: description: 'Максимальное время расчета. Старт отсчета начинается от времени завершения загрузки данных на сервер и начала расчета. ' type: string format: duration x-custom-format: duration pattern: ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$ minLength: 3 maxLength: 16 default: PT20M example: PT4M30S max_waiting_time: description: 'Максимальное время нахождения расчета в очереди. Старт отсчета начинается от времени завершения загрузки данных на сервер. ' type: string format: duration x-custom-format: duration pattern: ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$ minLength: 3 maxLength: 16 default: PT20M example: PT2H result_ttl: description: 'Время жизни результата расчета. Старт отсчета начинается от времени завершения расчета. ' type: string format: duration x-custom-format: duration pattern: ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$ minLength: 3 maxLength: 16 default: PT20M example: PT4M30S result_timezone: description: 'Временная зона, в которой возвращается результат расчета. ' type: integer format: int32 minimum: -12 maximum: 12 default: 0 example: 3 treat_warnings_as_errors: description: 'Относится к предупреждениям как к ошибкам и не запускать расчет если хотя бы одна сущность содержит невалидные данные. ' type: boolean default: false example: true precision: description: 'Указание точности полей типа double в порядковом номере знака после запятой. По умолчанию 2, т.е. точность 0.01. ' type: integer format: int32 minimum: 0 maximum: 6 default: 2 example: 3 plan_settings: description: Настройки планирования. type: object additionalProperties: false properties: trips_settings: $ref: '#/components/schemas/trips_settings' geo_settings: $ref: '#/components/schemas/geo_settings' calculation_settings: $ref: '#/components/schemas/calculation_settings' waypoint: description: 'Точка пути. ' type: object additionalProperties: false properties: name: description: Название точки, может использоваться как идентификатор. type: string nullable: true default: null minLength: 0 maxLength: 1024 example: central geopoint: $ref: '#/components/schemas/geopoint' duration: $ref: '#/components/schemas/time_duration' description: Время остановки на точке, в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations). required: - geopoint routing_matrix_line: description: Линия значений в матрице расстояний (в метрах) или продолжительностей (в секундах) маршрутов между точками. type: array minItems: 2 maxItems: 15001 uniqueItems: false items: description: 'Расстояние (в метрах) или продолжительность (в секундах) маршрута между точками. Отрицательное значение (-1) означает невозможность проезда между указанными точками. ' type: integer format: int64 minimum: -1 maximum: 10000000 example: 1500 routing_matrix: description: Матрица расстояний и времен. type: object additionalProperties: false properties: waypoints: description: Массив географических точек, между которыми вычислены расстояния и времена. type: array minItems: 2 maxItems: 15001 uniqueItems: false items: $ref: '#/components/schemas/waypoint' distances: description: 'Длины маршрутов между точками, в метрах. Значения в массиве упорядочены в соответствии с порядком элементов в параметре `waypoints`. Каждая строчка матрицы - массив расстояний из искомой точки до каждой другой точки. ' type: array minItems: 2 maxItems: 15001 uniqueItems: false items: $ref: '#/components/schemas/routing_matrix_line' durations: description: 'Массив продолжительностей маршрутов между точками, в секундах. Значения в массиве упорядочены в соответствии с порядком элементов в параметре `waypoints`. Каждая строчка матрицы - массив времен перемещений из искомой точки до каждой другой точки. ' type: array minItems: 2 maxItems: 15001 uniqueItems: false items: $ref: '#/components/schemas/routing_matrix_line' required: - waypoints - distances - durations routing_transport_matrix: description: Матрица времен и расстояний для определенного типа транспорта. type: object additionalProperties: false properties: transport_type: $ref: '#/components/schemas/transport_type' matrix: $ref: '#/components/schemas/routing_matrix' required: - transport_type - matrix routing_transport_matrix_list: description: 'Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации `external_routing` не учитываются параметры `geo_settings`. ' type: array uniqueItems: true minItems: 0 maxItems: 12 default: [] items: $ref: '#/components/schemas/routing_transport_matrix' dataset_name: description: 'Название датасета. Техническое поле, не влияющее на планирование. ' type: string minLength: 0 maxLength: 1000 default: '' example: custom_dataset_one plan_task: description: Задача для планирования. type: object additionalProperties: false properties: locations: description: Список локаций, которые используются в заказах и сменах. type: array uniqueItems: true minItems: 1 maxItems: 15001 items: $ref: '#/components/schemas/location' orders: description: Список заказов. type: array uniqueItems: true minItems: 1 maxItems: 15001 items: $ref: '#/components/schemas/order' performers: description: Список доступных исполнителей. type: array uniqueItems: true minItems: 1 maxItems: 15001 items: $ref: '#/components/schemas/performer' transports: description: Список доступного транспорта. type: array uniqueItems: true minItems: 1 maxItems: 15001 items: $ref: '#/components/schemas/transport' hardlinks: description: Список назначений. type: array uniqueItems: true minItems: 0 maxItems: 15001 default: [] items: $ref: '#/components/schemas/hardlink' plan_settings: $ref: '#/components/schemas/plan_settings' external_routing: $ref: '#/components/schemas/routing_transport_matrix_list' dataset_name: $ref: '#/components/schemas/dataset_name' required: - locations - orders - performers - transports service_name: description: Название сервиса. type: string enum: - UNIVERSAL - ROUTING - ACCOUNT - ADMIN - STUDIO - MONITOR - PACKER - AGRO - STOCK - LONGHAUL - CLUSTER - CARGOTIMETABLE example: UNIVERSAL operation_id: description: Идентификатор операции. type: string minLength: 3 maxLength: 256 example: run_plan_calculation tracedata: description: Данные используемые для трассировки запросов. type: object additionalProperties: false properties: code: description: 'Уникальный идентификатор процесса. Если запущен асинхронный процесс, то код для него будет одинаковый, хотя другие поля могут отличаться. ' type: string format: uuid example: 11111111-2222-3333-4444-555555555555 client: description: 'Уникальный идентификатор клиента (`company_key` + `_|_` + `username`), который совершил запрос. ' type: string pattern: \w+ minLength: 2 maxLength: 256 example: company_|_username server: description: Уникальный идентификатор сервера. type: string pattern: \w+ minLength: 2 maxLength: 256 example: server_name service: $ref: '#/components/schemas/service_name' operation: $ref: '#/components/schemas/operation_id' time: description: Дата и время вызова метода сервиса в соответствии с [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6). type: string format: date-time example: '2024-02-21T09:30:00+03:00' required: - code - client - server - service - operation - time trip_name: description: Краткое наименование рейса. type: string minLength: 0 maxLength: 64 default: '' example: 1-ABC assigned_performer: description: Назначенная на определенное время (`shift_time`) смена исполнителя. type: object additionalProperties: false properties: performer_key: description: Ключ исполнителя, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: performer0001 shift_key: description: Ключ смены исполнителя. type: string minLength: 1 maxLength: 1024 example: performer0001_shift01 shift_time: $ref: '#/components/schemas/time_window' required: - performer_key - shift_key - shift_time assigned_transport: description: Назначенная на определенное время (`shift_time`) смена транспорта. type: object additionalProperties: false properties: transport_key: description: Ключ транспорта, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: transport001 shift_key: description: Ключ смены транспорта. type: string minLength: 1 maxLength: 1024 example: performer01 shift_time: $ref: '#/components/schemas/time_window' required: - transport_key - shift_key - shift_time trip_state_flag: description: 'Логический [флаг состояния](#section/Opisanie/Model-reisa) в рамках рейса. ' type: string enum: - AROUND_LOCATION - INSIDE_LOCATION - INSIDE_LOCATION_WINDOW - INSIDE_WORKING_WINDOW - INSIDE_EVENT_HARD_WINDOW - INSIDE_EVENT_SOFT_WINDOW - ON_DEMAND - WAITING - RELOCATING - BREAK example: RELOCATING cargo_placement: description: Расположение одного груза в отсеке. type: object additionalProperties: false properties: box_key: description: Ключ отсека. type: string minLength: 1 maxLength: 1024 example: box01 cargo_key: description: Ключ груза. type: string minLength: 1 maxLength: 1024 example: cargo01 required: - box_key - cargo_key cargo_placement_list: description: Список расположений грузов в транспорте на начало состояния. type: array uniqueItems: true minItems: 0 maxItems: 1000 default: [] items: $ref: '#/components/schemas/cargo_placement' trip_state: description: Состояние рейса. type: object additionalProperties: false properties: time: description: Время начала действия в соответствии с [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6). type: string format: date-time example: '2024-02-21T09:30:00+03:00' order_key: description: Ключ заказа, с которым производится действие. type: string nullable: true default: null minLength: 1 maxLength: 1024 example: order01 demand_key: description: Ключ заявки, с которой производится действие. type: string nullable: true default: null minLength: 1 maxLength: 1024 example: demand01.1 event_key: description: Ключ события, с которым производится действие. type: string nullable: true default: null minLength: 1 maxLength: 1024 example: event01 location_key: description: Ключ локации, в которой производится действие. type: string nullable: true default: null minLength: 1 maxLength: 1024 example: location01 flags: description: "Список флагов, совокупность которых описывает текущее состояние.\n\ Возможные значения флагов, отвечающих за географическое положение:\n \ \ * `AROUND_LOCATION` - исполнитель находится рядом с локацией - в процессе\ \ парковки или выезда с нее.\n * `INSIDE_LOCATION` - исполнитель находится\ \ на локации.\n\nВозможные значения флагов, отвечающих за нахождения во\ \ временных окнах:\n * `INSIDE_WORKING_WINDOW` - исполнитель находится\ \ внутри рабочего временного окна.\n * `INSIDE_LOCATION_WINDOW` - исполнитель\ \ находится внутри времени работы локации.\n * `INSIDE_EVENT_HARD_WINDOW`\ \ - исполнитель находится внутри жесткого временного окна.\n * `INSIDE_EVENT_SOFT_WINDOW`\ \ - исполнитель находится внутри мягкого временного окна.\n\nВозможные\ \ значения флагов, отвечающих за действия:\n * `ON_DEMAND` - исполнитель\ \ работает над заявкой.\n * `WAITING` - исполнитель находится в режиме\ \ ожидания. \n * `RELOCATING` - исполнитель перемещается к следующей\ \ остановке.\n * `BREAK` - исполнитель находится на перерыве.\n" type: array uniqueItems: true minItems: 0 maxItems: 9 default: [] items: $ref: '#/components/schemas/trip_state_flag' cargo_placements: $ref: '#/components/schemas/cargo_placement_list' attributes: $ref: '#/components/schemas/attributes' required: - time - flags trip_waitlist: description: Список ключей заказов, назначенных на исполнителя, но не запланированных на определенное время. type: array minItems: 0 maxItems: 15001 uniqueItems: true items: description: Ключ заказа. type: string minLength: 1 maxLength: 1024 example: - order02 trip: description: 'Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя. ' type: object additionalProperties: false properties: key: description: Уникальный идентификатор рейса. type: string minLength: 1 maxLength: 1024 example: 631988f0-9e27-11ed-a8fc-0242ac120002 name: $ref: '#/components/schemas/trip_name' performer: $ref: '#/components/schemas/assigned_performer' transport: $ref: '#/components/schemas/assigned_transport' states: description: Список состояний исполнителя. type: array uniqueItems: false minItems: 0 maxItems: 15001 items: $ref: '#/components/schemas/trip_state' waitlist: $ref: '#/components/schemas/trip_waitlist' attributes: $ref: '#/components/schemas/attributes' required: - key - performer - transport - states measurements: description: 'Измерения времен и дистанций для работ на локации, отдельных рейсов и планирования в целом. ' type: object additionalProperties: false properties: driving_time: $ref: '#/components/schemas/time_duration' waiting_time: $ref: '#/components/schemas/time_duration' break_time: $ref: '#/components/schemas/time_duration' working_time: $ref: '#/components/schemas/time_duration' arriving_time: $ref: '#/components/schemas/time_duration' departure_time: $ref: '#/components/schemas/time_duration' total_time: $ref: '#/components/schemas/time_duration' distance: description: Расстояние в метрах. type: integer format: int32 minimum: 0 maximum: 4000000000 example: 5200 time_window: $ref: '#/components/schemas/time_window' required: - driving_time - waiting_time - break_time - working_time - arriving_time - departure_time - total_time - distance - time_window object_metrics: description: Метрики объектов. type: object additionalProperties: false properties: keys: description: Список ключей объектов. type: array uniqueItems: true minItems: 0 maxItems: 15001 items: description: Ключ объекта. type: string minLength: 1 maxLength: 1024 example: - obj1 count: description: Суммарное количество объектов. type: integer format: int32 minimum: 0 default: 0 maximum: 15001 example: 1700 time_window_violations: description: "Статистика по нарушениям временных окон. \n" type: object additionalProperties: false properties: before: $ref: '#/components/schemas/object_metrics' description: Количество и ключи заказов, у которые запланированы до наступления разрешенного временного окна. after: $ref: '#/components/schemas/object_metrics' description: Количество и ключи заказов, у которые запланированы после наступления разрешенного временного окна. quality_statistics: description: 'Статистические показатели качества. ' type: object additionalProperties: false properties: soft_time_window_violations: $ref: '#/components/schemas/time_window_violations' description: Статистика по нарушению мягких временных окон. hard_time_window_violations: $ref: '#/components/schemas/time_window_violations' description: Статистика по нарушению жестких временных окон. statistics: description: 'Общая статистика по одному либо совокупности рейсов. ' type: object additionalProperties: false properties: cost: description: 'Суммарные затраты, которые считаются на базе тарифов исполнителей и транспорта. Суммарная стоимость при этом равна разнице между суммарным вознаграждением (`reward`) и расходами (`cost`). ' type: number format: double minimum: 0 example: 1231.1 reward: description: Суммарное вознаграждение за выполнение заказов. type: number format: double minimum: 0 example: 2343.3 measurements: $ref: '#/components/schemas/measurements' description: "Измерения времен и дистанций для совокупности и отдельных\ \ рейсов:\n\n * `driving_time` - продолжительность времени вождения\n\ \ * `waiting_time` - суммарное время ожидания по всем локациям\n * `break_time`\ \ - суммарное время перерывов по всем локациям\n * `working_time` - суммарное\ \ время выполнения работ на всех локациях, входящих в рейс\n * `arriving_time`\ \ - суммарное время на подъезд/парковку на локациях\n * `departure_time`\ \ - суммарное время на отъезд от локаций\n * `time_window` - время начала\ \ первого рейса и время окончания последнего, если рейсов нет - возвращается\ \ время левой границы горизонта планирования, при этом поля from\\to имеют\ \ одинаковое значение\n * `total_time` - суммарное время, складывается\ \ из `driving_time` + `waiting_time` + `break_time` + `working_time` +\ \ `arriving_time` + `departure_time`\n * `distance` - суммарная протяжённость\ \ рейса/совокупности рейсов, в метрах\n" trips_count: description: Суммарное количество запланированных рейсов. type: integer format: int32 minimum: 0 maximum: 15001 example: 250 performers_count: description: Суммарное количество исполнителей, задействованных в выполнении заказов. type: integer format: int32 minimum: 0 maximum: 15001 example: 157 orders_count: description: Суммарное количество запланированных и назначенных заказов. type: integer format: int32 minimum: 0 maximum: 15001 example: 1700 plan_orders_count: description: Суммарное количество запланированных заказов. type: integer format: int32 minimum: 0 maximum: 15001 example: 1003 waitlist_orders_count: description: Суммарное количество назначенных заказов. type: integer format: int32 minimum: 0 maximum: 15001 example: 697 cargo_capacity_ratio: $ref: '#/components/schemas/capacity' description: 'Отношение суммарных аддитивных мер перевезенного груза к суммарной вместимости отсеков. В долях единицы. Может быть больше единицы. ' max_transport_load: $ref: '#/components/schemas/capacity' description: 'Отношение максимальной загрузки отсеков к суммарной вместимости отсеков. В долях единицы. Не может быть больше единицы. ' quality: $ref: '#/components/schemas/quality_statistics' required: - cost - reward - measurements - trips_count - performers_count - orders_count - plan_orders_count - waitlist_orders_count - cargo_capacity_ratio - max_transport_load transport_load: description: Загрузка транспорта. type: object additionalProperties: false properties: count: description: Количество заказов. type: integer format: int32 minimum: 0 maximum: 15001 example: 1460 capacity: $ref: '#/components/schemas/capacity' required: - count - capacity stop_statistics: description: 'Статистика по конкретной остановке в рейсе. ' type: object additionalProperties: false properties: location_key: description: Ключ локации, на которой происходит остановка. type: string minLength: 1 maxLength: 1024 example: location01 demand_ids: description: Список ключей заявок выполненных на этой остановке. type: array minItems: 0 maxItems: 15001 uniqueItems: true items: description: 'Идентификатор заявки, получается по следующей формуле: идентификатор заказа + ''#'' + идентификатор заявки. ' type: string minLength: 1 maxLength: 1024 example: demand01 stop_time_window: description: 'Временное окно остановки - от начала парковки до полного отъезда с локации. Продолжительность окна складывается из `waiting_time` + `break_time` + `working_time` + `arriving_time` + `departure_time`. ' $ref: '#/components/schemas/time_window' measurements: $ref: '#/components/schemas/measurements' description: "Измерения времен и дистанций для работ на остановке:\n\n \ \ * `driving_time` - время движения от предыдущей остановки до текущей\ \ локации\n * `waiting_time` - продолжительность ожидания исполнения\ \ работы на локации\n * `break_time` - продолжительность перерыва исполнителя\ \ на локации\n * `working_time` - время, затраченное на непосредственное\ \ выполнение работ на локации\n * `arriving_time` - время, затраченное\ \ на подъезд/парковку на локации\n * `departure_time` - время, затраченное\ \ на отъезд от локации\n * `time_window` - временное окно от начала движения\ \ к остановке до окончания отъезда с остановки\n * `total_time` - суммарное\ \ время на остановку, складывается из `driving_time` + `waiting_time`\ \ + `break_time` + `working_time` + `arriving_time` + `departure_time`\n\ \ * `distance` - расстояние от предыдущей остановки до текущей\n" upload: $ref: '#/components/schemas/transport_load' description: Суммарная загрузка товаров в транспорт на этой остановке. download: $ref: '#/components/schemas/transport_load' description: Суммарная выгрузка товаров из транспорта на этой остановке. max_load: $ref: '#/components/schemas/transport_load' description: Максимальная загрузка транспорта в процессе загрузки/выгрузки на остановке. arrival_load: $ref: '#/components/schemas/transport_load' description: Загрузка транспорта в момент его прибытия в данную остановку. departure_load: $ref: '#/components/schemas/transport_load' description: Загрузка транспорта в момент его отъезда от данной остановки. required: - location_key - demand_ids - stop_time_window - measurements - upload - download - max_load - arrival_load - departure_load trip_statistics: description: 'Статистика по конкретному рейсу. ' type: object additionalProperties: false properties: trip_key: description: Ключ рейса, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: trip01 statistics: $ref: '#/components/schemas/statistics' stop_statistics: description: Статистика по каждой остановке в рейсе. type: array minItems: 0 maxItems: 15001 uniqueItems: false items: $ref: '#/components/schemas/stop_statistics' total_load: $ref: '#/components/schemas/transport_load' description: Суммарная загрузка транспорта за все время рейса. max_load: $ref: '#/components/schemas/transport_load' description: Максимальная загрузка транспорта за все время рейса (по каждому измерению) - и в движении и на точках погрузки\разгрузки. max_transfer_load: $ref: '#/components/schemas/transport_load' description: Максимальная загрузка транспорта за все время рейса (по каждому измерению) в движении. required: - trip_key - statistics - stop_statistics - total_load - max_load - max_transfer_load plan_statistics: description: 'Общая статистика по запланированным рейсам. ' type: object additionalProperties: false nullable: true properties: total_statistics: $ref: '#/components/schemas/statistics' description: Суммарная статистика по всем рейсам. trips_statistics: description: 'Список статистик по каждому запланированному рейсу отдельно. ' type: array uniqueItems: true minItems: 0 maxItems: 15001 items: $ref: '#/components/schemas/trip_statistics' required: - total_statistics - trips_statistics entity_warning_type: description: "Тип предупреждения:\n * `NO_AVAILABLE_TRANSPORT` - заказ не возможно\ \ выполнить, так как нет ни одного доступного (по ограничениям смен) транспорта\n\ \ * `NO_AVAILABLE_PERFORMER` - заказ не возможно выполнить, так как нет ни\ \ одного доступного (по ограничениям смен) исполнителя\n * `NO_COMPATIBLE_TRANSPORT`\ \ - заказ не возможно выполнить, так как нет ни одного совместимого (по вместимости\ \ и\\или тегам совместимости) транспорта\n * `NO_COMPATIBLE_PERFORMER` -\ \ заказ не возможно выполнить, так как нет ни одного совместимого (по тегам\ \ совместимости) исполнителя\n * `PICKUP_AND_DROP_VIOLATION` - для каждого\ \ груза в рамках заказа должна быть ровно одна погрузка и ровно одна выгрузка\ \ (кроме заявок `PICKUP_TO_BOX` и `DROP_FROM_BOX`)\n * `PICKUP_AND_DROP_VIOLATION_PRECEDENCE_IN_ORDER`\ \ - для каждого груза в рамках заказа должна погрузка должна идти перед выгрузкой\ \ (`precedence_in_order`)\n * `PICKUP_AND_DROP_VIOLATION_PRECEDENCE_IN_TRIP`\ \ - заданы противоречивые требования на порядок следования заявок (`precedence_in_trip`)\n\ \ * `VIOLATION_PRECEDENCE_IN_TRIP_AND_ORDER` - требования на порядок следования\ \ заявок в рейсе (`precedence_in_trip`) и в заказе (`precedence_in_order`)\ \ противоречат друг другу\n * `TIME_WINDOW_VIOLATION` - время начала временного\ \ окна позже времени окончания окна или временное окно превышает максимально\ \ допустимое\n * `DURATION_VIOLATION` - продолжительность не соответствует\ \ разрешенному интервалу\n * `ORDER_WINDOWS_INTERSECTION_VIOLATION` - мягкие\ \ окна не должны выходить за границы жесткого окна\n * `PERFORMER_SHIFTS_INTERSECTION_VIOLATION`\ \ - рабочие смены исполнителя не должны пересекаться \n * `TRANSPORT_SHIFTS_INTERSECTION_VIOLATION`\ \ - рабочие смены транспорта не должны пересекаться\n * `LOCATION_WINDOWS_INTERSECTION_VIOLATION`\ \ - временные диапазоны рабочих окон одной локации не должны пересекаться\n\ \ * `INVALID_LOCATION_DURATIONS` - у локации есть рабочее окно которое меньше\ \ суммы времен `arrival + departure`\n * `NO_TRANSPORT_BOXES` - если существуют\ \ заказы с грузом - то у транспорта должен быть хотя бы один отсек \n * `MAX_CAPACITY_VIOLATION`\ \ - ограничение `max_capacity` превышает суммарную вместимость всех отсеков\ \ или указывается для одного отсека или меньше вместимости какого-то отсека\n\ \ * `MAX_BOXES_VIOLATION` - ограничение `max_boxes` больше или равно суммарного\ \ количества отсеков или указывается для одного отсека или равно нулю\n *\ \ `TOO_MANY_CARGOS_FOR_DROP_VIOLATION` - количество грузов для заявки, имеющей\ \ тип `DROP` / `DROP_FROM_BOX`, должно быть не больше единицы\n * `EMPTY_CARGOES_LIST`\ \ - пустой список грузов у заявок, имеющих тип `DROP` / `DROP_FROM_BOX` /\ \ `PICKUP` / `PICKUP_TO_BOX`\n * `CARGO_WORK_VIOLATION` - у заявки типа `WORK`\ \ список грузов должен быть пустой\n * `GEODATA_TIME_WINDOW_VIOLATION` -\ \ горизонт планирования превышает максимально доступное значение\n * `SHIFT_RESTRICTIONS_COULD_BE_MORE_PRECISE`\ \ - рабочее окно `working_window` смены исполнителя не лежит полностью внутри\ \ окна доступности `availability_window`\n * `DURATION_DOES_NOT_FIT_INTO_HARD_WINDOW`\ \ - продолжительность события не помещается в жесткое временное окно\n *\ \ `DURATION_DOES_NOT_FIT_INTO_SOFT_WINDOW` - продолжительность события не\ \ помещается в мягкое временное окно\n * `EXTRA_DURATION_DOES_NOT_FIT_INTO_SOFT_WINDOW`\ \ - дополнительное время на выполнение заявки не помещается в мягкое временное\ \ окно\n * `MAX_CALCULATION_TIME_VIOLATION` - превышено максимальное допустимое\ \ время расчета\n * `MAX_WAITING_TIME_VIOLATION` - превышено максимальное\ \ допустимое время ожидания\n * `INVALID_HARDLINK` - связь невозможно учесть,\ \ нельзя назначать на транспорт заказ с заявками с типом `WORK`\n * `CARGO_BOX_VIOLATION`\ \ - для заявок всех типов кроме `DROP_FROM_BOX` ключ отсека, где находится\ \ груз, должен быть пустым\n * `CARGO_MULTIBOX_VIOLATION` - для заявки типа\ \ `DROP_FROM_BOX` указанные грузы находятся в отсеках разных транспортов\n\ \ * `CARGO_CAPACITY_VIOLATION` - указанный груз на борту превышает размеры\ \ отсека, в котором он находится\n * `CARGO_ORDER_VIOLATION` - указанный\ \ в заказе груз не присутствует в заявках\n * `FEATURE_LIFETIME_VIOLATION`\ \ - окна свойств пересекаются между собой или рабочее окно `working_window`\ \ смены исполнителя или транспорта не пересекается с временным окном свойства\n" type: string enum: - NO_AVAILABLE_TRANSPORT - NO_AVAILABLE_PERFORMER - NO_COMPATIBLE_TRANSPORT - NO_COMPATIBLE_PERFORMER - PICKUP_AND_DROP_VIOLATION - PICKUP_AND_DROP_VIOLATION_PRECEDENCE_IN_ORDER - PICKUP_AND_DROP_VIOLATION_PRECEDENCE_IN_TRIP - VIOLATION_PRECEDENCE_IN_TRIP_AND_ORDER - TIME_WINDOW_VIOLATION - DURATION_VIOLATION - ORDER_WINDOWS_INTERSECTION_VIOLATION - PERFORMER_SHIFTS_INTERSECTION_VIOLATION - TRANSPORT_SHIFTS_INTERSECTION_VIOLATION - LOCATION_WINDOWS_INTERSECTION_VIOLATION - INVALID_LOCATION_DURATIONS - NO_TRANSPORT_BOXES - MAX_CAPACITY_VIOLATION - MAX_BOXES_VIOLATION - TOO_MANY_CARGOS_FOR_DROP_VIOLATION - EMPTY_CARGOES_LIST - CARGO_WORK_VIOLATION - GEODATA_TIME_WINDOW_VIOLATION - SHIFT_RESTRICTIONS_COULD_BE_MORE_PRECISE - DURATION_DOES_NOT_FIT_INTO_HARD_WINDOW - DURATION_DOES_NOT_FIT_INTO_SOFT_WINDOW - EXTRA_DURATION_DOES_NOT_FIT_INTO_SOFT_WINDOW - MAX_CALCULATION_TIME_VIOLATION - MAX_WAITING_TIME_VIOLATION - INVALID_HARDLINK - CARGO_BOX_VIOLATION - CARGO_MULTIBOX_VIOLATION - CARGO_CAPACITY_VIOLATION - CARGO_ORDER_VIOLATION - FEATURE_LIFETIME_VIOLATION example: TIME_WINDOW_VIOLATION entity_type: description: Тип сущности. type: string enum: - TASK - SETTINGS - ORDER - ORDER_LINK - PERFORMER - PERFORMER_LINK - TRANSPORT - TRANSPORT_LINK - HARDLINK - HARDLINK_LINK - LOCATION - LOCATION_LINK - BOX - BOX_LINK - TRIP - TRIP_LINK - CARGO - CARGO_LINK - DEMAND - DEMAND_LINK - EVENT - EVENT_LINK - PERFORMER_SHIFT - PERFORMER_SHIFT_LINK - TRANSPORT_SHIFT - TRANSPORT_SHIFT_LINK example: ORDER entity_path: description: 'Описание сущности и путь до нее. ' type: object additionalProperties: false nullable: true properties: entity_key: description: Ключ целевой сущности. type: string nullable: true maxLength: 1024 example: order_0001 entity_type: $ref: '#/components/schemas/entity_type' child_entity: $ref: '#/components/schemas/entity_path' required: - entity_key - entity_type entity_warning: description: Описание предупреждения. type: object additionalProperties: false properties: type: $ref: '#/components/schemas/entity_warning_type' info: description: Информация о предупреждении. type: string nullable: true minLength: 0 maxLength: 2048 example: entity warning entities: description: Список сущностей, которые относятся к предупреждению. type: array uniqueItems: false minItems: 0 maxItems: 15001 items: $ref: '#/components/schemas/entity_path' required: - type - entities entity_warning_list: description: Список предупреждений. type: array uniqueItems: false minItems: 0 maxItems: 15001 items: $ref: '#/components/schemas/entity_warning' example: [] unplanned_items: description: Список незапланированных сущностей. type: object additionalProperties: false properties: order_keys: description: Список ключей незапланированных заказов. type: array uniqueItems: true minItems: 0 maxItems: 15001 items: description: Ключ, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: key_01 order_keys_count: description: Количество незапланированных заказов. type: integer format: int32 minimum: 0 maximum: 15001 default: 0 example: 99 performer_keys: description: Список ключей исполнителей, не участвующих ни в одном рейсе. type: array uniqueItems: true minItems: 0 maxItems: 15001 items: description: Ключ, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: key_01 performer_keys_count: description: Количество незапланированных исполнителей. type: integer format: int32 minimum: 0 maximum: 15001 default: 0 example: 99 transport_keys: description: Список ключей транспорта, не участвующих ни в одном рейсе. type: array uniqueItems: true minItems: 0 maxItems: 15001 items: description: Ключ, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: key_01 transport_keys_count: description: Количество незапланированного транспорта. type: integer format: int32 minimum: 0 maximum: 15001 default: 0 example: 99 hardlink_keys: description: Список ключей связей, не участвующих ни в одном рейсе. type: array uniqueItems: true minItems: 0 maxItems: 15001 items: description: Ключ, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: key_01 hardlink_keys_count: description: Количество незапланированных связей. type: integer format: int32 minimum: 0 maximum: 15001 default: 0 example: 99 calculation_progress: description: 'Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов. ' type: integer format: int32 default: 0 minimum: 0 maximum: 100 example: 52 calculation_status: description: "Статус расчета:\n * `WAITING` - расчет ожидает запуска.\n *\ \ `IN_PROGRESS` - расчет в процессе.\n * `FINISHED_IN_TIME` - расчет завершился\ \ раньше указанного времени на планирование.\n * `FINISHED_OUT_OF_TIME` -\ \ расчет завершился, так как закончилось указанное время на планирование,\ \ при этом полученные маршруты могут не соответствовать целям планирования\ \ (при этом они гарантированно валидные).\n * `CANCELED` - расчет был отменен,\ \ так как была получена команда на отмену.\n * `CANCELED_BY_TIMEOUT` - расчет\ \ был отменен автоматически, так как превышено время ожидания в очереди.\n\ \ * `FAILED` - расчет завершился с ошибкой.\n" type: string enum: - WAITING - IN_PROGRESS - FINISHED_IN_TIME - FINISHED_OUT_OF_TIME - CANCELED - CANCELED_BY_TIMEOUT - FAILED example: FINISHED_IN_TIME calculation_info: description: Информация о расчете. type: object additionalProperties: false properties: status: $ref: '#/components/schemas/calculation_status' result_version: description: Версия текущего результата расчета. type: integer format: int32 minimum: 0 maximum: 1000000 example: 133 preparing_time: description: Время подготовки к расчету (конвертация данных), формат [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations). $ref: '#/components/schemas/time_duration' business_validation_time: description: Время бизнес-проверки данных, формат [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations). $ref: '#/components/schemas/time_duration' math_validation_time: description: Время математической проверки данных, формат [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations). $ref: '#/components/schemas/time_duration' waiting_time: description: Время ожидания расчета в очереди, формат [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations). $ref: '#/components/schemas/time_duration' calculation_time: description: Время фактического расчета, формат [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations). $ref: '#/components/schemas/time_duration' required: - status - result_version - preparing_time - business_validation_time - math_validation_time - waiting_time - calculation_time plan_result: description: 'Результат планирования. Может быть промежуточным (в процессе расчета) и полным (по завершению расчета). ' type: object additionalProperties: false properties: tracedata: $ref: '#/components/schemas/tracedata' trips: description: Расписание рейсов, назначенных на исполнителей. type: array uniqueItems: true minItems: 0 maxItems: 15001 default: [] items: $ref: '#/components/schemas/trip' statistics: $ref: '#/components/schemas/plan_statistics' warnings: $ref: '#/components/schemas/entity_warning_list' unplanned_items: $ref: '#/components/schemas/unplanned_items' progress: $ref: '#/components/schemas/calculation_progress' info: $ref: '#/components/schemas/calculation_info' required: - tracedata - trips - statistics - progress - info schema_error: description: Ошибка по схеме. type: object additionalProperties: false properties: entity: description: Идентификатор целевой сущности. type: string nullable: true maxLength: 1024 example: order_0001 message: description: Сообщение об ошибке. type: string example: bad input data required: - entity - message schema_error_list: description: Список ошибок. type: array uniqueItems: false minItems: 0 maxItems: 15001 items: $ref: '#/components/schemas/schema_error' example: [] entity_error_type: description: "Тип ошибки:\n * `INCONSISTENT_REFERENCE` - ссылка на несуществующую\ \ сущность\n * `UNIQUE_IDS_VIOLATION` - все идентификаторы должны быть уникальными\n\ \ * `INVALID_ROUTING_MATRIX` - проблема с размерностью матрицы гео-данных\n\ \ * `INVALID_GEO_PROVIDER` - проблема с указанным гео-провайдером\n * `COMPATIBILITY_CARGO_BOX`\ \ - ни один груз не совместим ни с одним отсеком\n * `COMPATIBILITY_TRANSPORT_PERFORMER`\ \ - ни один транспорт не совместим ни с одним исполнителем\n * `COMPATIBILITY_TRANSPORT_LOCATION`\ \ - ни один транспорт не совместим ни с одной локацией\n * `COMPATIBILITY_ORDER_PERFORMER`\ \ - ни один заказ не совместим ни с одним транспортом\n * `INCONSISTENT_HARDLINK`\ \ - ключ сущности должен находиться только в одной связи\n * `PLANNING_HORIZON_EXCEEDED`\ \ - превышен горизонт планирования (разница между самой ранней и самой поздней\ \ временными отметками)\n * `TOO_MANY_WARNINGS` - количество предупреждений\ \ (`warning`) больше 15 000\n" type: string enum: - INCONSISTENT_REFERENCE - UNIQUE_IDS_VIOLATION - INVALID_ROUTING_MATRIX - INVALID_GEO_PROVIDER - COMPATIBILITY_CARGO_BOX - COMPATIBILITY_TRANSPORT_PERFORMER - COMPATIBILITY_TRANSPORT_LOCATION - COMPATIBILITY_ORDER_PERFORMER - INCONSISTENT_HARDLINK - PLANNING_HORIZON_EXCEEDED - TOO_MANY_WARNINGS example: INCONSISTENT_REFERENCE entity_error: description: Описание ошибки во входных данных. type: object additionalProperties: false properties: type: $ref: '#/components/schemas/entity_error_type' info: description: Информация об ошибке. type: string nullable: true minLength: 0 maxLength: 2048 example: entity error entities: description: Список сущностей, которые вызвали ошибку. type: array uniqueItems: false minItems: 0 maxItems: 15001 items: $ref: '#/components/schemas/entity_path' required: - type - entities entity_error_list: description: 'Список ошибок в исходных данных, из-за которых запуск расчета невозможен. ' type: array uniqueItems: false minItems: 0 maxItems: 15001 items: $ref: '#/components/schemas/entity_error' custom_400_with_errors_and_warnings: description: Детализация по ошибке 400. type: object additionalProperties: false properties: tracedata: $ref: '#/components/schemas/tracedata' message: description: Сообщение об ошибке. type: string nullable: true example: bad task data schema_errors: $ref: '#/components/schemas/schema_error_list' logical_errors: $ref: '#/components/schemas/entity_error_list' warnings: $ref: '#/components/schemas/entity_warning_list' required: - tracedata general_401: description: Детализация по ошибке 401. type: object additionalProperties: false properties: tracedata: $ref: '#/components/schemas/tracedata' message: description: Сообщение об ошибке. type: string nullable: true example: Unauthorized required: - tracedata general_402: description: Детализация по ошибке 402. type: object additionalProperties: false properties: tracedata: $ref: '#/components/schemas/tracedata' message: description: Сообщение об ошибке. type: string nullable: true example: Payment Required required: - tracedata general_404: description: Детализация по ошибке 404. type: object additionalProperties: false properties: resource_id: description: Идентификатор ресурса. type: string nullable: true default: null example: resource_id detail: description: Детализация по ресурсу. type: object additionalProperties: false nullable: true properties: tracedata: $ref: '#/components/schemas/tracedata' required: - tracedata general_429: description: Детализация по ошибке 429. type: object additionalProperties: false properties: tracedata: $ref: '#/components/schemas/tracedata' message: description: Сообщение об ошибке. type: string nullable: true example: Too many requests required: - tracedata general_500: description: Детализация по ошибке 500. type: object additionalProperties: false properties: tracedata: $ref: '#/components/schemas/tracedata' message: description: Сообщение об ошибке. type: string nullable: true example: Internal Server Error required: - tracedata calculation_id: description: Идентификатор расчета. type: string format: uuid example: 11111111-2222-3333-4444-555555555555 calculation_async_result: description: Результат запуска асинхронного расчета. type: object additionalProperties: false properties: tracedata: $ref: '#/components/schemas/tracedata' id: $ref: '#/components/schemas/calculation_id' required: - id - tracedata calculation_state: description: Текущее состояние расчета. type: object additionalProperties: false properties: tracedata: $ref: '#/components/schemas/tracedata' progress: $ref: '#/components/schemas/calculation_progress' info: $ref: '#/components/schemas/calculation_info' required: - tracedata - progress - info validate_result: description: Результат проверки данных. type: object additionalProperties: false properties: tracedata: $ref: '#/components/schemas/tracedata' warnings: $ref: '#/components/schemas/entity_warning_list' required: - tracedata - warnings fact_time: description: Дата и время создания факта в формате [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6). type: string format: date-time example: '2024-02-21T09:30:00+03:00' order_fact_type: description: "Возможные типы факта о заказе (заявке):\n * `ORDER_DONE` - исполнитель\ \ закончил выполнять заказ, связанный с заказом груз более не находится в\ \ отсеках транспорта\n * `ORDER_CANCEL` - заказ был отменен, поведение аналогично\ \ `ORDER_DONE`\n * `DEMAND_START` - исполнитель начал выполнять заявку \n\ \ * `DEMAND_DONE` - исполнитель закончил выполнять заявку\n" type: string enum: - ORDER_DONE - ORDER_CANCEL - DEMAND_START - DEMAND_DONE example: ORDER_DONE order_fact: description: 'Факт о заказе - совершенное действие с заказом или его частью (заявкой). ' type: object additionalProperties: false properties: key: description: Ключ факта. type: string minLength: 1 maxLength: 1024 example: fact_01 time: $ref: '#/components/schemas/fact_time' type: $ref: '#/components/schemas/order_fact_type' order_key: description: Ключ заказа. type: string minLength: 1 maxLength: 1024 example: order_01 demand_key: description: Ключ заявки, обязателен для фактов с типом `DEMAND_DONE` и `DEMAND_START`. type: string nullable: true minLength: 1 maxLength: 1024 example: order_01_demand_01 default: null required: - key - time - type - order_key performer_fact: description: Факт о нахождении исполнителя в определенной локации. type: object additionalProperties: false properties: key: description: Ключ факта. type: string minLength: 1 maxLength: 1024 example: fact_01 time: $ref: '#/components/schemas/fact_time' performer_key: description: Ключ исполнителя. type: string minLength: 1 maxLength: 1024 example: performer_01 location_key: description: Ключ локации, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: location01 required: - key - time - performer_key - location_key facts: description: 'Произошедшие события. ' type: object additionalProperties: false properties: order_facts: description: 'Список фактов по заказам - совершенных действий с заказами или его частями (заявками). ' type: array uniqueItems: false minItems: 0 maxItems: 50001 items: $ref: '#/components/schemas/order_fact' performer_facts: description: 'Список фактов о нахождении исполнителя в определенной локации. При наличии нескольких фактов учитывается только самый поздний по полю `time`. Локация, на которую ссылается факт, должна находится в списке `locations`. ' type: array uniqueItems: false minItems: 0 maxItems: 15001 items: $ref: '#/components/schemas/performer_fact' replan_strategy: description: Стратегия перепланирования. type: object additionalProperties: false properties: reorder: description: Возможность изменять существующий порядок выполнения заказов. type: boolean default: false example: true plan_new_orders: description: Возможность планировать новые заказы в существующие или новые (если включена опция `create_new_trips`) рейсы. type: boolean default: false example: true create_new_trips: description: Возможность создавать новые рейсы. type: boolean default: false example: true replan_settings: description: Настройки перепланирования. type: object additionalProperties: false properties: replan_strategy: $ref: '#/components/schemas/replan_strategy' trips_settings: $ref: '#/components/schemas/trips_settings' geo_settings: $ref: '#/components/schemas/geo_settings' calculation_settings: $ref: '#/components/schemas/calculation_settings' replan_task: description: Задача для перепланирования. type: object additionalProperties: false properties: locations: description: Список локаций, которые используются в заказах и сменах. type: array uniqueItems: true minItems: 1 maxItems: 15001 items: $ref: '#/components/schemas/location' orders: description: Список заказов. type: array uniqueItems: true minItems: 1 maxItems: 15001 items: $ref: '#/components/schemas/order' performers: description: Список доступных исполнителей. type: array uniqueItems: true minItems: 1 maxItems: 15001 items: $ref: '#/components/schemas/performer' transports: description: Список доступного транспорта. type: array uniqueItems: true minItems: 1 maxItems: 15001 items: $ref: '#/components/schemas/transport' hardlinks: description: Список назначений. type: array uniqueItems: true minItems: 0 maxItems: 15001 default: [] items: $ref: '#/components/schemas/hardlink' trips: description: Существующие рейсы. type: array uniqueItems: true minItems: 0 maxItems: 15001 items: $ref: '#/components/schemas/trip' facts: $ref: '#/components/schemas/facts' external_routing: $ref: '#/components/schemas/routing_transport_matrix_list' replan_settings: $ref: '#/components/schemas/replan_settings' dataset_name: $ref: '#/components/schemas/dataset_name' required: - locations - orders - performers - transports - trips actualize_settings: description: 'Настройки актуализации. ' type: object additionalProperties: false properties: current_time: description: 'Указание даты и времени, которое для актуализации будет являться текущим, в соответствии с [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6). Если не указано - берется текущее время получения запроса сервером. ' type: string format: date-time nullable: true example: '2024-02-21T09:30:00+03:00' geo_settings: $ref: '#/components/schemas/geo_settings' calculation_settings: $ref: '#/components/schemas/calculation_settings' actualize_task: description: 'Задача на актуализацию рейсов. ' type: object additionalProperties: false properties: locations: description: Список локаций, которые используются в заказах и сменах. type: array uniqueItems: true minItems: 1 maxItems: 15001 items: $ref: '#/components/schemas/location' orders: description: Список заказов. type: array uniqueItems: true minItems: 1 maxItems: 15001 items: $ref: '#/components/schemas/order' performers: description: Список доступных исполнителей. type: array uniqueItems: true minItems: 1 maxItems: 15001 items: $ref: '#/components/schemas/performer' transports: description: Список доступного транспорта. type: array uniqueItems: true minItems: 1 maxItems: 15001 items: $ref: '#/components/schemas/transport' hardlinks: description: Список назначений. type: array uniqueItems: true minItems: 0 maxItems: 15001 items: $ref: '#/components/schemas/hardlink' trips: description: Существующие рейсы. type: array uniqueItems: true minItems: 0 maxItems: 15001 items: $ref: '#/components/schemas/trip' facts: $ref: '#/components/schemas/facts' external_routing: $ref: '#/components/schemas/routing_transport_matrix_list' actualize_settings: $ref: '#/components/schemas/actualize_settings' dataset_name: $ref: '#/components/schemas/dataset_name' required: - locations - orders - performers - transports - trips universal_data: description: 'Формат VRt.Universal JSON. Общий список данных и настроек, объединяет все данные для планирования, перепланирования и актуализации. ' type: object additionalProperties: false properties: locations: description: Список локаций, которые используются в заказах и сменах. type: array uniqueItems: true minItems: 0 maxItems: 15001 items: $ref: '#/components/schemas/location' orders: description: Список заказов. type: array uniqueItems: true minItems: 0 maxItems: 15001 items: $ref: '#/components/schemas/order' performers: description: Список доступных исполнителей. type: array uniqueItems: true minItems: 0 maxItems: 15001 items: $ref: '#/components/schemas/performer' transports: description: Список доступного транспорта. type: array uniqueItems: true minItems: 0 maxItems: 15001 items: $ref: '#/components/schemas/transport' hardlinks: description: Список назначений. type: array uniqueItems: true minItems: 0 maxItems: 15001 items: $ref: '#/components/schemas/hardlink' trips: description: Существующие рейсы. type: array uniqueItems: true minItems: 0 maxItems: 15001 items: $ref: '#/components/schemas/trip' facts: $ref: '#/components/schemas/facts' statistics: $ref: '#/components/schemas/plan_statistics' external_routing: $ref: '#/components/schemas/routing_transport_matrix_list' plan_settings: $ref: '#/components/schemas/plan_settings' replan_settings: $ref: '#/components/schemas/replan_settings' actualize_settings: $ref: '#/components/schemas/actualize_settings' dataset_name: $ref: '#/components/schemas/dataset_name' file_xlsx: description: Файл с данными в формате [XLSX](https://ru.wikipedia.org/wiki/Microsoft_Excel). type: string format: byte general_403: description: Детализация по ошибке 403. type: object additionalProperties: false properties: tracedata: $ref: '#/components/schemas/tracedata' message: description: Сообщение об ошибке. type: string nullable: true example: Forbidden required: - tracedata file_text: description: Файл с данными в текстовом формате. type: string check_result: description: Результат проверки работоспособности сервиса. type: object additionalProperties: false properties: health: description: "Текущий показатель здоровья сервиса. \n0 означает неготовность\ \ сервиса выполнять задачи. \n1 означает полную готовность сервиса\ \ для выполнения задач.\n" type: number format: double minimum: 0 maximum: 1 example: 0.999 required: - health version_result: description: Версия сервиса. type: object additionalProperties: false properties: major: description: "Версия продукта.\nВ рамках одной версии гарантируется совместимость\ \ общих структур данных между сервисами. \nИзменение версии указывает\ \ на несовместимые с предыдущими версиями продукта (и, соответственно,\ \ всех сервисов) изменения.\n" type: integer format: int32 minimum: 1 maximum: 100 example: 4 minor: description: 'Минорная версия сервиса. Изменение версии указывает на новую функциональность. Обновление имеет обратную совместимость в рамках мажорной версии сервиса. ' type: integer format: int32 minimum: 0 maximum: 111 example: 4 build: description: "Версия сборки. \nИзменяется при обновлении документации\ \ и исправлении ошибок.\n" type: string minLength: 1 maxLength: 64 example: 1754RC required: - major - minor - build file_html: description: Файл с данными в формате [HTML](https://html.spec.whatwg.org/). type: string file_json: description: Файл с данными в формате [JSON](https://www.json.org/). type: string examples: PlanTaskTokyo: summary: Токио value: locations: - key: location_client_1 geopoint: latitude: 35.7048259 longitude: 139.7297071 - key: location_client_2 geopoint: latitude: 35.71861 longitude: 139.7190533 - key: location_client_3 geopoint: latitude: 35.7099049 longitude: 139.7265958 - key: location_storage geopoint: latitude: 35.7042346 longitude: 139.6531996 orders: - key: order_1 demands: - key: demand_1_drop demand_type: DROP target_cargos: - order_1_cargos possible_events: - key: demand_1_drop_event location_key: location_client_1 duration: PT10M hard_time_window: from: '2024-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 PlanTaskMoscow: summary: Москва value: locations: - key: location_client_1 geopoint: latitude: 55.713699 longitude: 37.621839 - key: location_client_2 geopoint: latitude: 55.630721 longitude: 37.62493 - key: location_client_3 geopoint: latitude: 55.722801 longitude: 37.674984 - key: location_storage geopoint: latitude: 55.685853 longitude: 37.43181 orders: - key: order_1 demands: - key: demand_1_drop demand_type: DROP target_cargos: - order_1_cargos possible_events: - key: demand_1_drop_event location_key: location_client_1 duration: PT10M hard_time_window: from: '2024-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 PlanTaskDenver: summary: Денвер value: locations: - key: location_client_1 geopoint: latitude: 39.7116126 longitude: -104.9145664 - key: location_client_2 geopoint: latitude: 39.7851755 longitude: -104.9285619 - key: location_client_3 geopoint: latitude: 39.745829 longitude: -105.0013897 - key: location_storage geopoint: latitude: 39.82519 longitude: -105.1185757 orders: - key: order_1 demands: - key: demand_1_drop demand_type: DROP target_cargos: - order_1_cargos possible_events: - key: demand_1_drop_event location_key: location_client_1 duration: PT10M hard_time_window: from: '2024-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 PlanTaskBerlin: summary: Берлин value: locations: - key: location_client_1 geopoint: latitude: 52.431792 longitude: 13.3383233 - key: location_client_2 geopoint: latitude: 52.458667 longitude: 13.3772083 - key: location_client_3 geopoint: latitude: 52.437161 longitude: 13.4654563 - key: location_storage geopoint: latitude: 52.532906 longitude: 13.3431423 orders: - key: order_1 demands: - key: demand_1_drop demand_type: DROP target_cargos: - order_1_cargos possible_events: - key: demand_1_drop_event location_key: location_client_1 duration: PT10M hard_time_window: from: '2024-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 PlanTaskBeijing: summary: Пекин value: locations: - key: location_client_1 geopoint: latitude: 39.873105 longitude: 116.3563913 - key: location_client_2 geopoint: latitude: 39.929733 longitude: 116.3203273 - key: location_client_3 geopoint: latitude: 39.9227559 longitude: 116.3260136 - key: location_storage geopoint: latitude: 39.904054 longitude: 116.2568843 orders: - key: order_1 demands: - key: demand_1_drop demand_type: DROP target_cargos: - order_1_cargos possible_events: - key: demand_1_drop_event location_key: location_client_1 duration: PT10M hard_time_window: from: '2024-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 PlanResultTokyo: summary: Токио value: 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: [] PlanResultMoscow: summary: Москва value: tracedata: code: db3952a6-a529-4a42-b870-e5c6a419b29a client: veeroute_|_example server: edge service: UNIVERSAL operation: run_plan_calculation time: '2024-02-28T17:06:33.856Z' trips: - key: ef2a1ae6-778c-49ca-b765-a1a365428941-performer_1_shift performer: performer_key: performer_1 shift_key: performer_1_shift shift_time: from: '2024-02-08T04:39:37Z' to: '2024-02-08T05:53:46Z' transport: transport_key: transport_1 shift_key: transport_1_shift shift_time: from: '2024-02-08T04:39:37Z' to: '2024-02-08T05:53:46Z' states: - time: '2024-02-08T04:39:37Z' flags: - INSIDE_LOCATION - AROUND_LOCATION location_key: location_storage cargo_placements: [] attributes: [] - time: '2024-02-08T04:39:37Z' flags: - INSIDE_LOCATION - AROUND_LOCATION - INSIDE_LOCATION_WINDOW - ON_DEMAND - INSIDE_EVENT_HARD_WINDOW 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:39:37Z' 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:39:37Z' flags: - INSIDE_LOCATION - AROUND_LOCATION - INSIDE_LOCATION_WINDOW - ON_DEMAND - INSIDE_EVENT_HARD_WINDOW 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:39:37Z' 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:39:37Z' flags: - 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:39:37Z' 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: - AROUND_LOCATION location_key: location_client_2 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_2 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 - INSIDE_LOCATION_WINDOW - ON_DEMAND - INSIDE_EVENT_HARD_WINDOW order_key: order_2 demand_key: demand_2_drop event_key: demand_2_drop_event location_key: location_client_2 cargo_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_2 cargo_placements: - box_key: box_1 cargo_key: order_1_cargos attributes: [] - time: '2024-02-08T05:10:00Z' flags: - 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:55Z' flags: - AROUND_LOCATION location_key: location_client_1 cargo_placements: - box_key: box_1 cargo_key: order_1_cargos attributes: [] - time: '2024-02-08T05:20:55Z' 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:55Z' flags: - INSIDE_LOCATION - AROUND_LOCATION - INSIDE_LOCATION_WINDOW - ON_DEMAND - INSIDE_EVENT_HARD_WINDOW order_key: order_1 demand_key: demand_1_drop event_key: demand_1_drop_event location_key: location_client_1 cargo_placements: - box_key: box_1 cargo_key: order_1_cargos attributes: [] - time: '2024-02-08T05:30:55Z' flags: - INSIDE_LOCATION - AROUND_LOCATION location_key: location_client_1 cargo_placements: [] attributes: [] - time: '2024-02-08T05:30:55Z' flags: - AROUND_LOCATION location_key: location_client_1 cargo_placements: [] attributes: [] - time: '2024-02-08T05:30:55Z' flags: - RELOCATING cargo_placements: [] attributes: [] - time: '2024-02-08T05:38:46Z' flags: - AROUND_LOCATION location_key: location_client_3 cargo_placements: [] attributes: [] - time: '2024-02-08T05:38:46Z' flags: - INSIDE_LOCATION - AROUND_LOCATION location_key: location_client_3 cargo_placements: [] attributes: [] - time: '2024-02-08T05:38:46Z' flags: - INSIDE_LOCATION - AROUND_LOCATION - INSIDE_LOCATION_WINDOW - ON_DEMAND - INSIDE_EVENT_HARD_WINDOW order_key: order_3 demand_key: demand_3_work event_key: demand_3_work_event location_key: location_client_3 cargo_placements: [] attributes: [] - time: '2024-02-08T05:53:46Z' flags: - INSIDE_LOCATION - AROUND_LOCATION location_key: location_client_3 cargo_placements: [] attributes: [] name: 1-HVFB waitlist: [] attributes: [] statistics: total_statistics: cost: 6789.4 reward: 3000.3 measurements: driving_time: PT39M9S waiting_time: PT0S break_time: PT0S working_time: PT35M arriving_time: PT0S departure_time: PT0S total_time: PT1H14M9S distance: 34040 time_window: from: '2024-02-08T04:39:37Z' to: '2024-02-08T05:53:46Z' trips_count: 1 performers_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.01 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: ef2a1ae6-778c-49ca-b765-a1a365428941-performer_1_shift statistics: cost: 6789.4 reward: 3000.3 measurements: driving_time: PT39M9S waiting_time: PT0S break_time: PT0S working_time: PT35M arriving_time: PT0S departure_time: PT0S total_time: PT1H14M9S distance: 34040 time_window: from: '2024-02-08T04:39:37Z' to: '2024-02-08T05:53:46Z' trips_count: 1 performers_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.01 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:39:37Z' to: '2024-02-08T04:39:37Z' 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:39:37Z' to: '2024-02-08T04:39:37Z' upload: count: 2 capacity: mass: 2 volume: 0 capacity_a: 0 capacity_b: 0 capacity_c: 0 download: count: 0 capacity: mass: 0 volume: 0 capacity_a: 0 capacity_b: 0 capacity_c: 0 max_load: count: 2 capacity: mass: 2 volume: 0 capacity_a: 0 capacity_b: 0 capacity_c: 0 arrival_load: count: 0 capacity: mass: 0 volume: 0 capacity_a: 0 capacity_b: 0 capacity_c: 0 departure_load: count: 2 capacity: mass: 2 volume: 0 capacity_a: 0 capacity_b: 0 capacity_c: 0 - location_key: location_client_2 demand_ids: - demand_2_drop stop_time_window: from: '2024-02-08T05:00:00Z' to: '2024-02-08T05:10:00Z' measurements: driving_time: PT20M23S waiting_time: PT0S break_time: PT0S working_time: PT10M arriving_time: PT0S departure_time: PT0S total_time: PT30M23S distance: 17111 time_window: from: '2024-02-08T04:39:37Z' 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: 2 capacity: mass: 2 volume: 0 capacity_a: 0 capacity_b: 0 capacity_c: 0 arrival_load: count: 2 capacity: mass: 2 volume: 0 capacity_a: 0 capacity_b: 0 capacity_c: 0 departure_load: count: 1 capacity: mass: 1 volume: 0 capacity_a: 0 capacity_b: 0 capacity_c: 0 - location_key: location_client_1 demand_ids: - demand_1_drop stop_time_window: from: '2024-02-08T05:20:55Z' to: '2024-02-08T05:30:55Z' measurements: driving_time: PT10M55S waiting_time: PT0S break_time: PT0S working_time: PT10M arriving_time: PT0S departure_time: PT0S total_time: PT20M55S distance: 9897 time_window: from: '2024-02-08T05:10:00Z' to: '2024-02-08T05:30:55Z' upload: count: 0 capacity: mass: 0 volume: 0 capacity_a: 0 capacity_b: 0 capacity_c: 0 download: count: 1 capacity: mass: 1 volume: 0 capacity_a: 0 capacity_b: 0 capacity_c: 0 max_load: count: 1 capacity: mass: 1 volume: 0 capacity_a: 0 capacity_b: 0 capacity_c: 0 arrival_load: count: 1 capacity: mass: 1 volume: 0 capacity_a: 0 capacity_b: 0 capacity_c: 0 departure_load: count: 0 capacity: mass: 0 volume: 0 capacity_a: 0 capacity_b: 0 capacity_c: 0 - location_key: location_client_3 demand_ids: - demand_3_work stop_time_window: from: '2024-02-08T05:38:46Z' to: '2024-02-08T05:53:46Z' measurements: driving_time: PT7M51S waiting_time: PT0S break_time: PT0S working_time: PT15M arriving_time: PT0S departure_time: PT0S total_time: PT22M51S distance: 7032 time_window: from: '2024-02-08T05:30:55Z' to: '2024-02-08T05:53:46Z' upload: count: 0 capacity: mass: 0 volume: 0 capacity_a: 0 capacity_b: 0 capacity_c: 0 download: count: 0 capacity: mass: 0 volume: 0 capacity_a: 0 capacity_b: 0 capacity_c: 0 max_load: count: 0 capacity: mass: 0 volume: 0 capacity_a: 0 capacity_b: 0 capacity_c: 0 arrival_load: count: 0 capacity: mass: 0 volume: 0 capacity_a: 0 capacity_b: 0 capacity_c: 0 departure_load: count: 0 capacity: mass: 0 volume: 0 capacity_a: 0 capacity_b: 0 capacity_c: 0 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: 106 preparing_time: PT0S business_validation_time: PT0S math_validation_time: PT0S waiting_time: PT0.004S calculation_time: PT15.005S warnings: [] unplanned_items: order_keys: [] order_keys_count: 0 performer_keys: [] performer_keys_count: 0 transport_keys: [] transport_keys_count: 0 hardlink_keys: [] hardlink_keys_count: 0 PlanResultDenver: summary: Денвер value: 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:45:18Z' to: '2024-02-08T05:54:57Z' transport: transport_key: transport_1 shift_key: transport_1_shift shift_time: from: '2024-02-08T04:45:18Z' to: '2024-02-08T05:54:57Z' states: - time: '2024-02-08T04:45:18Z' flags: - INSIDE_LOCATION - AROUND_LOCATION location_key: location_storage cargo_placements: [] attributes: [] - time: '2024-02-08T04:45:18Z' 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:45:18Z' 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:45:18Z' 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:45:18Z' 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:45:18Z' 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:15:49Z' 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:15:49Z' 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:25:49Z' flags: - INSIDE_LOCATION - AROUND_LOCATION location_key: location_client_1 cargo_placements: [] attributes: [] - time: '2024-02-08T05:25:49Z' flags: - RELOCATING cargo_placements: [] attributes: [] - time: '2024-02-08T05:39:57Z' flags: - INSIDE_LOCATION - AROUND_LOCATION location_key: location_client_3 cargo_placements: [] attributes: [] - time: '2024-02-08T05:39:57Z' 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:54:57Z' flags: - INSIDE_LOCATION - AROUND_LOCATION location_key: location_client_3 cargo_placements: [] attributes: [] waitlist: [] attributes: [] statistics: total_statistics: cost: 2320.68 reward: 3000.3 measurements: driving_time: PT1H9M39S waiting_time: PT0S break_time: PT0S working_time: PT35M arriving_time: PT0S departure_time: PT0S total_time: PT1H44M39S distance: 50270 time_window: from: '2024-02-08T04:45:18Z' to: '2024-02-08T05:54:57Z' 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: 2320.6800000000003 reward: 3000.3 measurements: driving_time: PT1H9M39S waiting_time: PT0S break_time: PT0S working_time: PT35M arriving_time: PT0S departure_time: PT0S total_time: PT1H44M39S distance: 50270 time_window: from: '2024-02-08T04:45:18Z' to: '2024-02-08T05:54:57Z' 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:45:18Z' to: '2024-02-08T04:45:18Z' 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: PT24M42S waiting_time: PT0S break_time: PT0S working_time: PT10M arriving_time: PT0S departure_time: PT0S total_time: PT34M42S distance: 10478 time_window: from: '2024-02-08T04:45:18Z' 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: PT15M49S waiting_time: PT0S break_time: PT0S working_time: PT10M arriving_time: PT0S departure_time: PT0S total_time: PT25M49S distance: 14689 time_window: from: '2024-02-08T05:10:00Z' to: '2024-02-08T05:25:49Z' 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: PT29M8S waiting_time: PT0S break_time: PT0S working_time: PT15M arriving_time: PT0S departure_time: PT0S total_time: PT44M8S distance: 25103 time_window: from: '2024-02-08T05:25:49Z' to: '2024-02-08T05:54:57Z' 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: [] PlanResultBerlin: summary: Берлин value: 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 break_time: PT0S working_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: [] PlanResultBeijing: summary: Пекин value: 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:50:28Z' to: '2024-02-08T05:47:33Z' transport: transport_key: transport_1 shift_key: transport_1_shift shift_time: from: '2024-02-08T04:50:28Z' to: '2024-02-08T05:47:33Z' states: - time: '2024-02-08T04:50:28Z' flags: - INSIDE_LOCATION - AROUND_LOCATION location_key: location_storage cargo_placements: [] attributes: [] - time: '2024-02-08T04:50:28Z' 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:50:28Z' 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:50:28Z' 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:50:28Z' 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:50:28Z' 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_3 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_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_1_cargos - box_key: box_1 cargo_key: order_2_cargos attributes: [] - time: '2024-02-08T05:15:00Z' flags: - INSIDE_LOCATION - AROUND_LOCATION location_key: location_client_3 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:15:00Z' 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:16:45Z' 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:16:45Z' 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:26:45Z' 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:26:45Z' flags: - RELOCATING cargo_placements: - box_key: box_1 cargo_key: order_1_cargos attributes: [] - time: '2024-02-08T05:37:33Z' 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:37:33Z' 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:47:33Z' flags: - INSIDE_LOCATION - AROUND_LOCATION location_key: location_client_1 cargo_placements: [] attributes: [] waitlist: [] attributes: [] statistics: total_statistics: cost: 2256.053 reward: 3000.3 measurements: driving_time: PT57M5S waiting_time: PT0S break_time: PT0S working_time: PT35M arriving_time: PT0S departure_time: PT0S total_time: PT1H32M5S distance: 38666 time_window: from: '2024-02-08T04:50:28Z' to: '2024-02-08T05:47:33Z' 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: 2256.0533333333333 reward: 3000.3 measurements: driving_time: PT57M5S waiting_time: PT0S break_time: PT0S working_time: PT35M arriving_time: PT0S departure_time: PT0S total_time: PT1H32M5S distance: 38666 time_window: from: '2024-02-08T04:50:28Z' to: '2024-02-08T05:47:33Z' 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:50:28Z' to: '2024-02-08T04:50:28Z' 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_3 demand_ids: - demand_3_work stop_time_window: from: '2024-02-08T04:38:34Z' to: '2024-02-08T04:38:34Z' measurements: driving_time: PT24M32S waiting_time: PT0S break_time: PT0S working_time: PT15M arriving_time: PT0S departure_time: PT0S total_time: PT39M32S distance: 8647 time_window: from: '2024-02-08T04:50:28Z' to: '2024-02-08T05:15:00Z' 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: 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: PT11M45S waiting_time: PT0S break_time: PT0S working_time: PT10M arriving_time: PT0S departure_time: PT0S total_time: PT21M45S distance: 10122 time_window: from: '2024-02-08T05:15:00Z' to: '2024-02-08T05:26:45Z' 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: PT20M48S waiting_time: PT0S break_time: PT0S working_time: PT10M arriving_time: PT0S departure_time: PT0S total_time: PT30M48S distance: 19897 time_window: from: '2024-02-08T05:26:45Z' to: '2024-02-08T05:47:33Z' 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: [] Result400: summary: Ошибка в данных value: 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: [] ValidateResultExample: summary: Пример валидации value: 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 ReplanTaskMoscow: summary: Москва value: locations: - key: location_client_1 geopoint: latitude: 55.713699 longitude: 37.621839 - key: location_client_2 geopoint: latitude: 55.630721 longitude: 37.62493 - key: location_client_3 geopoint: latitude: 55.722801 longitude: 37.674984 - key: location_storage geopoint: latitude: 55.685853 longitude: 37.43181 orders: - key: order_1 demands: - key: demand_1_drop demand_type: DROP target_cargos: - order_1_cargos possible_events: - key: demand_1_drop_event location_key: location_client_1 duration: PT10M hard_time_window: from: '2024-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: [] ReplanResultMoscow: summary: Москва value: 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: [] ActualizeTaskMoscow: summary: Москва value: locations: - key: location_client_1 geopoint: latitude: 55.713699 longitude: 37.621839 - key: location_client_2 geopoint: latitude: 55.630721 longitude: 37.62493 - key: location_client_3 geopoint: latitude: 55.722801 longitude: 37.674984 - key: location_storage geopoint: latitude: 55.685853 longitude: 37.43181 orders: - key: order_1 demands: - key: demand_1_drop demand_type: DROP target_cargos: - order_1_cargos possible_events: - key: demand_1_drop_event location_key: location_client_1 duration: PT10M hard_time_window: from: '2024-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: [] ConvertTaskMoscow: summary: Москва value: locations: - key: location_client_1 geopoint: latitude: 55.713699 longitude: 37.621839 - key: location_client_2 geopoint: latitude: 55.630721 longitude: 37.62493 - key: location_client_3 geopoint: latitude: 55.722801 longitude: 37.674984 - key: location_storage geopoint: latitude: 55.685853 longitude: 37.43181 orders: - key: order_1 demands: - key: demand_1_drop demand_type: DROP target_cargos: - order_1_cargos possible_events: - key: demand_1_drop_event location_key: location_client_1 duration: PT10M hard_time_window: from: '2024-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: [] responses: '401': description: 'Ошибка доступа - токен отсутствует или невалиден ' content: application/json: schema: $ref: '#/components/schemas/general_401' '402': description: Необходима оплата content: application/json: schema: $ref: '#/components/schemas/general_402' '403': description: 'Действие запрещено - уровень прав доступа не позволяет совершить данное действие ' content: application/json: schema: $ref: '#/components/schemas/general_403' '404': description: Запрашиваемая сущность не найдена content: application/json: schema: $ref: '#/components/schemas/general_404' '405': description: 'Метод запрещен для данного ресурса, проверьте указанный метод (POST, GET, ...) ' '406': description: 'Клиент не способен обработать формат ответа, проверьте заголовки ' '415': description: 'Неприемлемый формат запроса, проверьте заголовки ' '429': description: Превышено количество запросов content: application/json: schema: $ref: '#/components/schemas/general_429' '500': description: Внутренняя ошибка сервера content: application/json: schema: $ref: '#/components/schemas/general_500' '501': description: Функциональность не доступна для использования '502': description: Неверный шлюз '503': description: Сервис не доступен '504': description: Шлюз не отвечает 400_with_errors_and_warnings: description: Неверный запрос - данные содержат ошибки content: application/json: schema: $ref: '#/components/schemas/custom_400_with_errors_and_warnings' examples: Result400: $ref: '#/components/examples/Result400' parameters: result_id: name: id in: path description: Идентификатор расчета. required: true schema: $ref: '#/components/schemas/calculation_id' filename: name: filename description: Название файла. in: path required: true schema: description: Название файла. type: string minLength: 6 maxLength: 128 example: file_en.html