VRt.Universal [UV] (7.6.2491)

Veeroute Support Team: servicedesk@veeroute.com License: Proprietary Terms of Service

Описание

Программный интерфейс для универсального планирования рейсов.

Возможности

  • Возможность забора груза из любой локации
  • Возможность разгрузки в любой локации
  • Парные заявки нескольких типов: 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

Модель рейса

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

Значения флагов, отвечающих за географическое положение:

  • AROUND_LOCATION - исполнитель находится рядом с локацией - в процессе парковки или выезда с нее.
  • INSIDE_LOCATION - исполнитель находится на локации.

Значения флагов, отвечающих за нахождения во временных окнах:

  • INSIDE_WORKING_WINDOW - исполнитель находится внутри рабочего временного окна.
  • INSIDE_LOCATION_WINDOW - исполнитель находится внутри времени работы локации.
  • INSIDE_EVENT_HARD_WINDOW - исполнитель находится внутри жесткого временного окна.
  • INSIDE_EVENT_SOFT_WINDOW - исполнитель находится внутри мягкого временного окна.

Значения флагов, отвечающих за действия:

  • ON_DEMAND - исполнитель работает над заявкой.
  • WAITING - исполнитель находится в режиме ожидания.
  • RELOCATING - исполнитель перемещается к следующей остановке.
  • BREAK - исполнитель находится на перерыве.
  • REST - исполнитель находится на длительном отдыхе.

Пример маршрута с множеством состояний в каждый момент времени

Время Набор активных флагов Локация / Заказ / Заявка / Событие Комментарий
10:00 INSIDE_LOCATION
AROUND_LOCATION
2 / - / - / - Стартовая локация
10:10 RELOCATING - / - / - / - Едем к первому заказу
10:20 AROUND_LOCATION 2 / - / - / - Подъехали к первому заказу
10:40 AROUND_LOCATION
INSIDE_LOCATION
WAITING
2 / - / - / - Припарковались
11:00 AROUND_LOCATION
INSIDE_LOCATION
INSIDE_LOCATION_WINDOW
WAITING
INSIDE_EVENT_HARD_WINDOW
2 / - / - / - Дождались начала окна локации и одновременно доступности заказа
11:25 AROUND_LOCATION
INSIDE_LOCATION
INSIDE_LOCATION_WINDOW
ON_DEMAND
INSIDE_WORKING_WINDOW
INSIDE_EVENT_HARD_WINDOW
2 / 1 / 2 / 3 Дождались смены исполнителя
11:30 AROUND_LOCATION
INSIDE_LOCATION
INSIDE_LOCATION_WINDOW
ON_DEMAND
INSIDE_WORKING_WINDOW
INSIDE_EVENT_HARD_WINDOW
INSIDE_EVENT_SOFT_WINDOW
2 / 1 / 2 / 3 Пока работали - случилось мягкое окно
11:40 AROUND_LOCATION
INSIDE_LOCATION
INSIDE_LOCATION_WINDOW
INSIDE_WORKING_WINDOW
2 / - / - / - Закончили работать
11:45 AROUND_LOCATION
INSIDE_WORKING_WINDOW
2 / - / - /- Выехали с парковки
11:45 RELOCATING
INSIDE_WORKING_WINDOW
- / - / - / - Едем на следующий заказ

Конфигурация планирования

Для каждого планирования есть возможность указать конфигурацию планирования, которая определяет целевую функцию, желаемое качество маршрутов и скорость расчета.

Название конфигурации планирования передается в поле trips_settings.configuration.

Основные конфигурации:

Название Задача
optimize_distance Расставить как можно больше заказов, затем оптимизировать суммарный пробег (количество транспорта выбирается исходя из пробега), используется по умолчанию
optimize_transports Расставить как можно больше заказов, при этом использовать как можно меньше транспорта, при прочих равных оптимизировать время работы исполнителей
optimize_locality_grouping Расставить как можно больше заказов, при этом стремиться оптимизировать визуальную группировку маршрутов, но не их количество
optimize_cars_then_distance Расставить как можно больше заказов, затем оптимизировать количество транспорта, затем пробег
optimize_time Расставить как можно больше заказов, затем оптимизировать суммарное время работы исполнителей
optimize_cars_then_time Расставить как можно больше заказов, затем оптимизировать количество транспорта, затем суммарное время работы исполнителей
optimize_money Оптимизировать величину "прибыль - затраты", складывается из наград за заявки и расходов на исполнителей и транспорты (оптимизируемая величина неотрицательна)

Дополнительные конфигурации:

Название Задача
visual_grouping Расставить как можно больше заказов, при этом использовать как можно меньше транспорта и маршруты должны быть визуально сгруппированы
optimize_visual_grouping Расставить как можно больше заказов, затем равномерно распределить заказы с учетом зон транспортной доступности (как visual_grouping, но визуальная группировка рассчитывается иначе)
optimize_cars_then_locality_grouping Расставить как можно больше заказов, затем оптимизировать количество транспорта, затем визуальную группировку маршрутов
optimize_cars_then_single_location_grouping_sequenced Расставить как можно больше заказов, затем оптимизировать количество машин, а затем надёжность

В дополнение к существующим вариантам планирования возможно создание целевой функции непосредственно под бизнес-процессы клиента (запросить конфигурацию).

Для разработки рекомендуется использовать optimize_cars_then_distance, так как данная конфигурация не требует детального подбора тарифов и стоимостей заказов.

Валидация данных

Валидация входных данных состоит из нескольких этапов, которые описаны ниже.

1. Проверка по схеме

Если запрос не проходит по схеме, то планирование не запускается целиком и такая ошибка возвращается вместе с кодом 400 в schema_errors.

Мы рекомендуем проверять запрос по схеме (или yaml-файлу) перед отправкой на сервер.

2. Проверка на логические ошибки, которые не позволяют продолжить планирование

Корректные по схеме данные проходят второй этап проверки на возможность запуска планирования.

Пример ошибок на данном этапе - ключи, ведущие на пустые сущности, или если все заказы несовместимы со всеми исполнителями, т.е. то, что делает задачу планирования бессмысленной.

Данные ошибки возвращаются вместе с кодом 400 в logical_errors.

3. Проверка на логические ошибки, которые не позволяют продолжить планирование

На третьем этапе происходит проверка каждой сущности отдельно.

Все сущности, которые не прошли проверку - вырезаются из исходной задачи и не отправляются на планирование.

В зависимости от настройки treat_warnings_as_errors результаты данного типа проверки возвращаются в warnings вместе с кодом 400, либо вместе с результатом планирования.

4. Проверки в процессе планирования

Часть проверок можно осуществить только в процессе планирования.

Например - что согласно указанным тарифам и по актуальному прогнозу пробок физически невозможно доехать до определенной точки.

Результаты данных проверок возвращаются в warnings либо вместе с результатом планирования.

Диаграмма сущностей

erd

Plan

Планирование - создание рейсов, которые учитывают все заданные ограничения, на основе данных о заказах, исполнителях и транспорте.

Запросы на планирования возможно выполнять в синхронном (для тестирования) и асинхронном (для основного использования) режимах.

Чтобы получить результат работы очистки исходной задачи воспользуйтесь очисткой данных для планирования.

Планирование (ASYNC)

Запуск планирования рейсов - после загрузки и проверки данных возвращается идентификатор расчета process_code.

С помощью process_code можно узнать состояние расчета и получить результат, a также отменить расчет и удалить временные данные (иначе они автоматически удалятся по ttl, указанному в настройках расчета).

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required

Запуск асинхронного планирования.

required
Array of objects (location) [ 1 .. 15001 ] items unique

Список локаций, которые используются в заказах и сменах.

required
Array of objects (order) [ 1 .. 15001 ] items unique

Список заказов, которые необходимо выполнить.

required
Array of objects (performer) [ 1 .. 15001 ] items unique

Список доступных исполнителей. Исполнитель выполняет заказы используя транспорт.

required
Array of objects (transport) [ 1 .. 15001 ] items unique

Список доступного транспорта. Транспорт используется исполнителем рейса для выполнения заказов.

Array of objects (hardlink_list) [ 0 .. 15001 ] items unique

Список назначений.

object (plan_settings)

Настройки планирования.

Array of objects (routing_transport_matrix_list) [ 0 .. 16 ] items unique

Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации external_routing не учитываются параметры geo_settings.

dataset_name
string (dataset_name) [ 0 .. 512 ] characters
Example: "custom_dataset_one"

Название набора данных. Техническое поле, не влияющее на расчет.

Responses

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

process_code
required
string <uuid> (process_code)
Example: "11111111-2222-3333-4444-555555555555"

Код процесса - идентификатор расчета.

Request samples

Content type
application/json
Example
{
}

Response samples

Content type
application/json
{
}

Планирование (SYNC)

Синхронный метод для создания рейсов.

Данный метод рекомендуется только для тестового использования и ручного запуска расчетов на небольшом объеме данных.

Для боевой среды рекомендуется использовать асинхронный метод.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required

Новый запрос на планирование.

required
Array of objects (location) [ 1 .. 15001 ] items unique

Список локаций, которые используются в заказах и сменах.

required
Array of objects (order) [ 1 .. 15001 ] items unique

Список заказов, которые необходимо выполнить.

required
Array of objects (performer) [ 1 .. 15001 ] items unique

Список доступных исполнителей. Исполнитель выполняет заказы используя транспорт.

required
Array of objects (transport) [ 1 .. 15001 ] items unique

Список доступного транспорта. Транспорт используется исполнителем рейса для выполнения заказов.

Array of objects (hardlink_list) [ 0 .. 15001 ] items unique

Список назначений.

object (plan_settings)

Настройки планирования.

Array of objects (routing_transport_matrix_list) [ 0 .. 16 ] items unique

Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации external_routing не учитываются параметры geo_settings.

dataset_name
string (dataset_name) [ 0 .. 512 ] characters
Example: "custom_dataset_one"

Название набора данных. Техническое поле, не влияющее на расчет.

Responses

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

required
Array of objects (trip_list) [ 0 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

required
object or null (plan_statistics)

Общая статистика по результату расчета.

Array of objects (entity_warning_list) [ 0 .. 15001 ] items

Список предупреждений.

object (unplanned_items)

Информация о незапланированных сущностях.

object (removed_items)

Информация о удаленных сущностях.

calculation_progress
required
integer <int32> (calculation_progress) [ 0 .. 100 ]
Example: "52"

Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов.

required
object (calculation_info)

Информация о расчете.

Request samples

Content type
application/json
Example
{
}

Response samples

Content type
application/json
Example
{
}

Отмена расчета

Отмена процесса планирования по идентификатору расчета.

Authorizations:
ApiKeyAuth
path Parameters
process_code
required
string <uuid> (process_code)
Example: 11111111-2222-3333-4444-555555555555

Уникальный идентификатор процесса.

Responses

Response samples

Content type
application/json
{
}

Состояние расчета

Получение состояния расчета по идентификатору расчета.

Authorizations:
ApiKeyAuth
path Parameters
process_code
required
string <uuid> (process_code)
Example: 11111111-2222-3333-4444-555555555555

Уникальный идентификатор процесса.

Responses

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

calculation_progress
required
integer <int32> (calculation_progress) [ 0 .. 100 ]
Example: "52"

Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов.

required
object (calculation_info)

Информация о расчете.

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

calculation_progress
required
integer <int32> (calculation_progress) [ 0 .. 100 ]
Example: "52"

Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов.

required
object (calculation_info)

Информация о расчете.

Response samples

Content type
application/json
{
}

Получение результата

Получение результата планирования по идентификатору расчета.

Authorizations:
ApiKeyAuth
path Parameters
process_code
required
string <uuid> (process_code)
Example: 11111111-2222-3333-4444-555555555555

Уникальный идентификатор процесса.

Responses

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

required
Array of objects (trip_list) [ 0 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

required
object or null (plan_statistics)

Общая статистика по результату расчета.

Array of objects (entity_warning_list) [ 0 .. 15001 ] items

Список предупреждений.

object (unplanned_items)

Информация о незапланированных сущностях.

object (removed_items)

Информация о удаленных сущностях.

calculation_progress
required
integer <int32> (calculation_progress) [ 0 .. 100 ]
Example: "52"

Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов.

required
object (calculation_info)

Информация о расчете.

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

required
Array of objects (trip_list) [ 0 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

required
object or null (plan_statistics)

Общая статистика по результату расчета.

Array of objects (entity_warning_list) [ 0 .. 15001 ] items

Список предупреждений.

object (unplanned_items)

Информация о незапланированных сущностях.

object (removed_items)

Информация о удаленных сущностях.

calculation_progress
required
integer <int32> (calculation_progress) [ 0 .. 100 ]
Example: "52"

Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов.

required
object (calculation_info)

Информация о расчете.

Response samples

Content type
application/json
Example
{
}

Удаление результата

Удаление результата по идентификатору расчета.

Authorizations:
ApiKeyAuth
path Parameters
process_code
required
string <uuid> (process_code)
Example: 11111111-2222-3333-4444-555555555555

Уникальный идентификатор процесса.

Responses

Response samples

Content type
application/json
{
}

Валидация данных

Проверка данных для планирования перед использованием.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required

Данные, которые необходимо проверить.

required
Array of objects (location) [ 1 .. 15001 ] items unique

Список локаций, которые используются в заказах и сменах.

required
Array of objects (order) [ 1 .. 15001 ] items unique

Список заказов, которые необходимо выполнить.

required
Array of objects (performer) [ 1 .. 15001 ] items unique

Список доступных исполнителей. Исполнитель выполняет заказы используя транспорт.

required
Array of objects (transport) [ 1 .. 15001 ] items unique

Список доступного транспорта. Транспорт используется исполнителем рейса для выполнения заказов.

Array of objects (hardlink_list) [ 0 .. 15001 ] items unique

Список назначений.

object (plan_settings)

Настройки планирования.

Array of objects (routing_transport_matrix_list) [ 0 .. 16 ] items unique

Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации external_routing не учитываются параметры geo_settings.

dataset_name
string (dataset_name) [ 0 .. 512 ] characters
Example: "custom_dataset_one"

Название набора данных. Техническое поле, не влияющее на расчет.

Responses

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

required
Array of objects (entity_warning_list) [ 0 .. 15001 ] items

Список предупреждений.

Request samples

Content type
application/json
Example
{
}

Response samples

Content type
application/json
{
}

Очистка данных

Очистка данных для планирования перед расчетом.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required

Данные, которые необходимо очистить.

required
Array of objects (location) [ 1 .. 15001 ] items unique

Список локаций, которые используются в заказах и сменах.

required
Array of objects (order) [ 1 .. 15001 ] items unique

Список заказов, которые необходимо выполнить.

required
Array of objects (performer) [ 1 .. 15001 ] items unique

Список доступных исполнителей. Исполнитель выполняет заказы используя транспорт.

required
Array of objects (transport) [ 1 .. 15001 ] items unique

Список доступного транспорта. Транспорт используется исполнителем рейса для выполнения заказов.

Array of objects (hardlink_list) [ 0 .. 15001 ] items unique

Список назначений.

object (plan_settings)

Настройки планирования.

Array of objects (routing_transport_matrix_list) [ 0 .. 16 ] items unique

Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации external_routing не учитываются параметры geo_settings.

dataset_name
string (dataset_name) [ 0 .. 512 ] characters
Example: "custom_dataset_one"

Название набора данных. Техническое поле, не влияющее на расчет.

Responses

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

required
object (plan_task)

Задача для планирования.

Array of objects (entity_warning_list) [ 0 .. 15001 ] items

Список предупреждений.

object (removed_items)

Информация о удаленных сущностях.

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
{
}

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

Расчет статистики по существующим рейсам

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required

Новый запрос.

required
Array of objects (location) [ 1 .. 15001 ] items unique

Список локаций, которые используются в заказах и сменах.

required
Array of objects (order) [ 1 .. 15001 ] items unique

Список заказов, которые необходимо выполнить.

required
Array of objects (performer) [ 1 .. 15001 ] items unique

Список доступных исполнителей. Исполнитель выполняет заказы используя транспорт.

required
Array of objects (transport) [ 1 .. 15001 ] items unique

Список доступного транспорта.

Array of objects (hardlink_list) [ 0 .. 15001 ] items unique

Список назначений.

required
Array of objects (trip) [ 1 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

object (plan_settings)

Настройки планирования.

Array of objects (routing_transport_matrix_list) [ 0 .. 16 ] items unique

Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации external_routing не учитываются параметры geo_settings.

dataset_name
string (dataset_name) [ 0 .. 512 ] characters
Example: "custom_dataset_one"

Название набора данных. Техническое поле, не влияющее на расчет.

Responses

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

required
Array of objects (trip_list) [ 0 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

required
object or null (plan_statistics)

Общая статистика по результату расчета.

Array of objects (entity_warning_list) [ 0 .. 15001 ] items

Список предупреждений.

object (unplanned_items)

Информация о незапланированных сущностях.

object (removed_items)

Информация о удаленных сущностях.

calculation_progress
required
integer <int32> (calculation_progress) [ 0 .. 100 ]
Example: "52"

Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов.

required
object (calculation_info)

Информация о расчете.

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
Example
{
}

Actualize

Актуализация рейсов - обновление планового времени выполнения заказов с учетом фактов и без изменения порядка обьезда.

Актуализация проходит в три этапа - проверка, применение фактов, планирование времен у невыполненных состояний рейсов.

Чтобы получить результат очистки и применения фактов к исходной задаче воспользуйтесь переработкой данных.

Полученные в результате актуализации рейсы не меняют исполнителей, транспорт и порядок выполнения заказов, содержат только те работы, которые осталось выполнить. Заказы, которые не могут быть выполнены - остаются назначенными на исполнителя и попадают в waitlist.

Очистка данных:

  • Из датасета удаляются сущности, на которые не ссылаются входные рейсы - исполнители, транспорт, назначения, заказы, факты.
  • Если на одну сущность ссылается несколько фактов - учитывается только самый поздний по полю time, если время совпадает - учитывается случайный из них.
  • Удаляются все факты, которые произошли позже, чем actualize_settings.current_time.

Учет существующих рейсов:

  • Рейсы трансформируются в назначения hardlink - т.е. назначенные на рейс смены исполнителя и транспорта не могут использоваться в других рейсах.
  • у заявок удаляются события-заменители и фиксируется порядок выполнения с помощью precedence_in_trip, если у заявок уже был указан порядок выполнения - он будет перезаписан.

Учет текущего времени:

  • Если текущее время actualize_settings.current_time в данных не задано - то используется время получения запроса сервером.
  • Учитываются только те факты, которые произошли до actualize_settings.current_time.
  • Если текущее время больше чем левая граница временных окон всех событий и смен - то левая граница сдвигается до текущего времени.
  • К правой границе временных окон всех событий и смен добавляется допустимое время опоздания actualize_settings.max_delay_duration.
  • Мягкие временные окна корректируются только в случае, если длительность заявки не позволяет выполнить заказ внутри мягкого окна.

Учет факта о изменения локации NEW_LOCATION:

  • Для учета факта в списке локаций locations должна находится новая локация, которая описывает текущую координату исполнителя.
  • Если рейс начался (время факта позже планового времени начала рейса) - транспорт считается в той же локации, что и исполнитель - т.е. изменяются start_location_key у исполнителя и транспорта.
  • Если рейс не начался (время факта до планового времени начала рейса) - изменяется только начальная локация исполнителя, локация транспорта остается из исходных данных.
  • При наличии нескольких фактов учитывается только самый поздний по полю time.

Учет факта о завершении заказа ORDER_DONE:

  • Из данных для актуализации удаляются заказ, его заявки и связанные с ними локации.
  • Груз считается выгруженным из транспорта.

Учет фактов о частичном выполнении заказов DEMAND_START и DEMAND_DONE:

  • Если у заказа выполнены все заявки - он считается завершенным (действия аналогичны обработке факта ORDER_DONE).
  • Если у заказа выполнена заявка с типом PICKUP, то соответствующая ей заявка с типом DROP будет преобразована в заявку с типом DROP_FROM_BOX.
  • На каждый рейс разрешен только один незакрытый факт DEMAND_START (закрывается фактом DEMAND_DONE) - так как исполнитель может в один момент времени выполнять только одну заявку.
  • Если есть факт о работе по заявке, которая противоречит плановому порядку в указанном рейсе - будет сперва завершена эта заявка, затем продолжится выполнение рейса согласно запланированному порядку.
  • Факт о заказе имеет больший приоритет, чем факты о заявках по этому заказу (если факты о заявках противоречат факту о заказе - они не будут учтены).

Актуализация (ASYNC)

Запуск актуализации существующих рейсов - после загрузки и проверки данных возвращается идентификатор расчета process_code.

С помощью process_code можно узнать состояние расчета, получить результат, a также отменить расчет и удалить временные данные (иначе они автоматически удалятся по ttl, указанному в настройках расчета).

Задачу на актуализацию можно трансформировать в задачу на планирование с помощью переработки данных.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required

Запуск асинхронного процесса актуализации.

required
Array of objects (location) [ 1 .. 15001 ] items unique

Список локаций, которые используются в заказах и сменах.

required
Array of objects (order) [ 1 .. 15001 ] items unique

Список заказов, которые необходимо выполнить.

required
Array of objects (performer) [ 1 .. 15001 ] items unique

Список доступных исполнителей. Исполнитель выполняет заказы используя транспорт.

required
Array of objects (transport) [ 1 .. 15001 ] items unique

Список доступного транспорта. Транспорт используется исполнителем рейса для выполнения заказов.

required
Array of objects (trip) [ 1 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

Array of objects (fact_list) [ 0 .. 15001 ] items unique

Список фактов. Факт - это произошедшее событие, которое влияет на дальнейшие выполнение рейсов.

Array of objects (routing_transport_matrix_list) [ 0 .. 16 ] items unique

Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации external_routing не учитываются параметры geo_settings.

object (plan_settings)

Настройки планирования.

object (actualize_settings)

Настройки актуализации.

dataset_name
string (dataset_name) [ 0 .. 512 ] characters
Example: "custom_dataset_one"

Название набора данных. Техническое поле, не влияющее на расчет.

Responses

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

process_code
required
string <uuid> (process_code)
Example: "11111111-2222-3333-4444-555555555555"

Код процесса - идентификатор расчета.

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
{
}

Актуализация (SYNC)

Синхронный метод для актуализации существующих рейсов.

Данный метод рекомендуется только для тестового использования и ручного запуска расчетов на небольшом объеме данных.

Для боевой среды рекомендуется использовать асинхронный метод.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required

Новый запрос на актуализацию.

required
Array of objects (location) [ 1 .. 15001 ] items unique

Список локаций, которые используются в заказах и сменах.

required
Array of objects (order) [ 1 .. 15001 ] items unique

Список заказов, которые необходимо выполнить.

required
Array of objects (performer) [ 1 .. 15001 ] items unique

Список доступных исполнителей. Исполнитель выполняет заказы используя транспорт.

required
Array of objects (transport) [ 1 .. 15001 ] items unique

Список доступного транспорта. Транспорт используется исполнителем рейса для выполнения заказов.

required
Array of objects (trip) [ 1 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

Array of objects (fact_list) [ 0 .. 15001 ] items unique

Список фактов. Факт - это произошедшее событие, которое влияет на дальнейшие выполнение рейсов.

Array of objects (routing_transport_matrix_list) [ 0 .. 16 ] items unique

Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации external_routing не учитываются параметры geo_settings.

object (plan_settings)

Настройки планирования.

object (actualize_settings)

Настройки актуализации.

dataset_name
string (dataset_name) [ 0 .. 512 ] characters
Example: "custom_dataset_one"

Название набора данных. Техническое поле, не влияющее на расчет.

Responses

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

required
Array of objects (trip_list) [ 0 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

required
object or null (plan_statistics)

Общая статистика по результату расчета.

Array of objects (entity_warning_list) [ 0 .. 15001 ] items

Список предупреждений.

object (unplanned_items)

Информация о незапланированных сущностях.

object (removed_items)

Информация о удаленных сущностях.

calculation_progress
required
integer <int32> (calculation_progress) [ 0 .. 100 ]
Example: "52"

Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов.

required
object (calculation_info)

Информация о расчете.

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
{
}

Отмена расчета

Отмена процесса актуализации по идентификатору расчета.

Authorizations:
ApiKeyAuth
path Parameters
process_code
required
string <uuid> (process_code)
Example: 11111111-2222-3333-4444-555555555555

Уникальный идентификатор процесса.

Responses

Response samples

Content type
application/json
{
}

Состояние расчета

Получение состояния расчета по идентификатору расчета.

Authorizations:
ApiKeyAuth
path Parameters
process_code
required
string <uuid> (process_code)
Example: 11111111-2222-3333-4444-555555555555

Уникальный идентификатор процесса.

Responses

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

calculation_progress
required
integer <int32> (calculation_progress) [ 0 .. 100 ]
Example: "52"

Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов.

required
object (calculation_info)

Информация о расчете.

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

calculation_progress
required
integer <int32> (calculation_progress) [ 0 .. 100 ]
Example: "52"

Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов.

required
object (calculation_info)

Информация о расчете.

Response samples

Content type
application/json
{
}

Получение результата

Получение результата актуализации по идентификатору расчета.

Authorizations:
ApiKeyAuth
path Parameters
process_code
required
string <uuid> (process_code)
Example: 11111111-2222-3333-4444-555555555555

Уникальный идентификатор процесса.

Responses

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

required
Array of objects (trip_list) [ 0 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

required
object or null (plan_statistics)

Общая статистика по результату расчета.

Array of objects (entity_warning_list) [ 0 .. 15001 ] items

Список предупреждений.

object (unplanned_items)

Информация о незапланированных сущностях.

object (removed_items)

Информация о удаленных сущностях.

calculation_progress
required
integer <int32> (calculation_progress) [ 0 .. 100 ]
Example: "52"

Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов.

required
object (calculation_info)

Информация о расчете.

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

required
Array of objects (trip_list) [ 0 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

required
object or null (plan_statistics)

Общая статистика по результату расчета.

Array of objects (entity_warning_list) [ 0 .. 15001 ] items

Список предупреждений.

object (unplanned_items)

Информация о незапланированных сущностях.

object (removed_items)

Информация о удаленных сущностях.

calculation_progress
required
integer <int32> (calculation_progress) [ 0 .. 100 ]
Example: "52"

Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов.

required
object (calculation_info)

Информация о расчете.

Response samples

Content type
application/json
{
}

Удаление результата

Удаление результата по идентификатору расчета.

Authorizations:
ApiKeyAuth
path Parameters
process_code
required
string <uuid> (process_code)
Example: 11111111-2222-3333-4444-555555555555

Уникальный идентификатор процесса.

Responses

Response samples

Content type
application/json
{
}

Валидация данных

Проверка данных для актуализации перед использованием.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required

Данные, которые необходимо проверить.

required
Array of objects (location) [ 1 .. 15001 ] items unique

Список локаций, которые используются в заказах и сменах.

required
Array of objects (order) [ 1 .. 15001 ] items unique

Список заказов, которые необходимо выполнить.

required
Array of objects (performer) [ 1 .. 15001 ] items unique

Список доступных исполнителей. Исполнитель выполняет заказы используя транспорт.

required
Array of objects (transport) [ 1 .. 15001 ] items unique

Список доступного транспорта. Транспорт используется исполнителем рейса для выполнения заказов.

required
Array of objects (trip) [ 1 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

Array of objects (fact_list) [ 0 .. 15001 ] items unique

Список фактов. Факт - это произошедшее событие, которое влияет на дальнейшие выполнение рейсов.

Array of objects (routing_transport_matrix_list) [ 0 .. 16 ] items unique

Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации external_routing не учитываются параметры geo_settings.

object (plan_settings)

Настройки планирования.

object (actualize_settings)

Настройки актуализации.

dataset_name
string (dataset_name) [ 0 .. 512 ] characters
Example: "custom_dataset_one"

Название набора данных. Техническое поле, не влияющее на расчет.

Responses

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

required
Array of objects (entity_warning_list) [ 0 .. 15001 ] items

Список предупреждений.

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
{
}

Переработка данных

Учет фактов, рейсов и очистка данных для актуализации перед расчетом - в результате возвращается задача для планирования.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required

Данные, которые необходимо переработать.

required
Array of objects (location) [ 1 .. 15001 ] items unique

Список локаций, которые используются в заказах и сменах.

required
Array of objects (order) [ 1 .. 15001 ] items unique

Список заказов, которые необходимо выполнить.

required
Array of objects (performer) [ 1 .. 15001 ] items unique

Список доступных исполнителей. Исполнитель выполняет заказы используя транспорт.

required
Array of objects (transport) [ 1 .. 15001 ] items unique

Список доступного транспорта. Транспорт используется исполнителем рейса для выполнения заказов.

required
Array of objects (trip) [ 1 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

Array of objects (fact_list) [ 0 .. 15001 ] items unique

Список фактов. Факт - это произошедшее событие, которое влияет на дальнейшие выполнение рейсов.

Array of objects (routing_transport_matrix_list) [ 0 .. 16 ] items unique

Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации external_routing не учитываются параметры geo_settings.

object (plan_settings)

Настройки планирования.

object (actualize_settings)

Настройки актуализации.

dataset_name
string (dataset_name) [ 0 .. 512 ] characters
Example: "custom_dataset_one"

Название набора данных. Техническое поле, не влияющее на расчет.

Responses

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

required
object (plan_task)

Задача для планирования.

Array of objects (entity_warning_list) [ 0 .. 15001 ] items

Список предупреждений.

object (removed_items)

Информация о удаленных сущностях.

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
{
}

Replan

Перепланирование - создание новых рейсов на основе уже существующих рейсов с учетом фактов.

Перепланирование проходит в несколько этапов - проверка, применение фактов и создание ограничений для планирования на базе существующих рейсов, планирование.

Чтобы получить результат очистки и применения фактов к исходной задаче воспользуйтесь переработкой данных.

В зависимости от настроек перепланирования - задача может быть сведена к планированию или актуализации.

Перепланирование (ASYNC)

Запуск перепланирования рейсов - изменение существующих и создание новых рейсов на основе произошедших фактов и данных о заказах, исполнителях и транспорте.

После загрузки и проверки данных возвращается идентификатор расчета process_code.

С помощью process_code можно узнать состояние расчета и получить результат, a также отменить расчет и удалить временные данные (иначе они автоматически удалятся по ttl, указанному в настройках расчета).

Задачу на перепланирование можно трансформировать в задачу на планирование с помощью переработки данных.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required

Запуск асинхронного перепланирования.

required
Array of objects (location) [ 1 .. 15001 ] items unique

Список локаций, которые используются в заказах и сменах.

required
Array of objects (order) [ 1 .. 15001 ] items unique

Список заказов, которые необходимо выполнить.

required
Array of objects (performer) [ 1 .. 15001 ] items unique

Список доступных исполнителей. Исполнитель выполняет заказы используя транспорт.

required
Array of objects (transport) [ 1 .. 15001 ] items unique

Список доступного транспорта.

Array of objects (hardlink_list) [ 0 .. 15001 ] items unique

Список назначений.

required
Array of objects (trip) [ 1 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

Array of objects (fact_list) [ 0 .. 15001 ] items unique

Список фактов. Факт - это произошедшее событие, которое влияет на дальнейшие выполнение рейсов.

Array of objects (routing_transport_matrix_list) [ 0 .. 16 ] items unique

Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации external_routing не учитываются параметры geo_settings.

object (plan_settings)

Настройки планирования.

object (replan_settings)

Настройки перепланирования.

dataset_name
string (dataset_name) [ 0 .. 512 ] characters
Example: "custom_dataset_one"

Название набора данных. Техническое поле, не влияющее на расчет.

Responses

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

process_code
required
string <uuid> (process_code)
Example: "11111111-2222-3333-4444-555555555555"

Код процесса - идентификатор расчета.

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
{
}

Перепланирование (SYNC)

Синхронный метод для перепланирования существующих рейсов.

Данный метод рекомендуется только для тестового использования и ручного запуска расчетов на небольшом объеме данных.

Для боевой среды рекомендуется использовать асинхронный метод.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required

Новый запрос на перепланирование.

required
Array of objects (location) [ 1 .. 15001 ] items unique

Список локаций, которые используются в заказах и сменах.

required
Array of objects (order) [ 1 .. 15001 ] items unique

Список заказов, которые необходимо выполнить.

required
Array of objects (performer) [ 1 .. 15001 ] items unique

Список доступных исполнителей. Исполнитель выполняет заказы используя транспорт.

required
Array of objects (transport) [ 1 .. 15001 ] items unique

Список доступного транспорта.

Array of objects (hardlink_list) [ 0 .. 15001 ] items unique

Список назначений.

required
Array of objects (trip) [ 1 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

Array of objects (fact_list) [ 0 .. 15001 ] items unique

Список фактов. Факт - это произошедшее событие, которое влияет на дальнейшие выполнение рейсов.

Array of objects (routing_transport_matrix_list) [ 0 .. 16 ] items unique

Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации external_routing не учитываются параметры geo_settings.

object (plan_settings)

Настройки планирования.

object (replan_settings)

Настройки перепланирования.

dataset_name
string (dataset_name) [ 0 .. 512 ] characters
Example: "custom_dataset_one"

Название набора данных. Техническое поле, не влияющее на расчет.

Responses

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

required
Array of objects (trip_list) [ 0 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

required
object or null (plan_statistics)

Общая статистика по результату расчета.

Array of objects (entity_warning_list) [ 0 .. 15001 ] items

Список предупреждений.

object (unplanned_items)

Информация о незапланированных сущностях.

object (removed_items)

Информация о удаленных сущностях.

calculation_progress
required
integer <int32> (calculation_progress) [ 0 .. 100 ]
Example: "52"

Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов.

required
object (calculation_info)

Информация о расчете.

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
{
}

Отмена расчета

Отмена процесса планирования по идентификатору расчета.

Authorizations:
ApiKeyAuth
path Parameters
process_code
required
string <uuid> (process_code)
Example: 11111111-2222-3333-4444-555555555555

Уникальный идентификатор процесса.

Responses

Response samples

Content type
application/json
{
}

Состояние расчета

Получение состояния расчета по идентификатору расчета.

Authorizations:
ApiKeyAuth
path Parameters
process_code
required
string <uuid> (process_code)
Example: 11111111-2222-3333-4444-555555555555

Уникальный идентификатор процесса.

Responses

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

calculation_progress
required
integer <int32> (calculation_progress) [ 0 .. 100 ]
Example: "52"

Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов.

required
object (calculation_info)

Информация о расчете.

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

calculation_progress
required
integer <int32> (calculation_progress) [ 0 .. 100 ]
Example: "52"

Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов.

required
object (calculation_info)

Информация о расчете.

Response samples

Content type
application/json
{
}

Получение результата

Получение результата перепланирования по идентификатору расчета.

Authorizations:
ApiKeyAuth
path Parameters
process_code
required
string <uuid> (process_code)
Example: 11111111-2222-3333-4444-555555555555

Уникальный идентификатор процесса.

Responses

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

required
Array of objects (trip_list) [ 0 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

required
object or null (plan_statistics)

Общая статистика по результату расчета.

Array of objects (entity_warning_list) [ 0 .. 15001 ] items

Список предупреждений.

object (unplanned_items)

Информация о незапланированных сущностях.

object (removed_items)

Информация о удаленных сущностях.

calculation_progress
required
integer <int32> (calculation_progress) [ 0 .. 100 ]
Example: "52"

Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов.

required
object (calculation_info)

Информация о расчете.

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

required
Array of objects (trip_list) [ 0 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

required
object or null (plan_statistics)

Общая статистика по результату расчета.

Array of objects (entity_warning_list) [ 0 .. 15001 ] items

Список предупреждений.

object (unplanned_items)

Информация о незапланированных сущностях.

object (removed_items)

Информация о удаленных сущностях.

calculation_progress
required
integer <int32> (calculation_progress) [ 0 .. 100 ]
Example: "52"

Прогресс расчета в процентах. Прогресс отражает текущее количество завершенных шагов.

required
object (calculation_info)

Информация о расчете.

Response samples

Content type
application/json
{
}

Удаление результата

Удаление результата перепланирования по идентификатору расчета.

Authorizations:
ApiKeyAuth
path Parameters
process_code
required
string <uuid> (process_code)
Example: 11111111-2222-3333-4444-555555555555

Уникальный идентификатор процесса.

Responses

Response samples

Content type
application/json
{
}

Валидация данных

Проверка данных для перепланирования перед использованием.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required

Данные, которые необходимо проверить.

required
Array of objects (location) [ 1 .. 15001 ] items unique

Список локаций, которые используются в заказах и сменах.

required
Array of objects (order) [ 1 .. 15001 ] items unique

Список заказов, которые необходимо выполнить.

required
Array of objects (performer) [ 1 .. 15001 ] items unique

Список доступных исполнителей. Исполнитель выполняет заказы используя транспорт.

required
Array of objects (transport) [ 1 .. 15001 ] items unique

Список доступного транспорта.

Array of objects (hardlink_list) [ 0 .. 15001 ] items unique

Список назначений.

required
Array of objects (trip) [ 1 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

Array of objects (fact_list) [ 0 .. 15001 ] items unique

Список фактов. Факт - это произошедшее событие, которое влияет на дальнейшие выполнение рейсов.

Array of objects (routing_transport_matrix_list) [ 0 .. 16 ] items unique

Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации external_routing не учитываются параметры geo_settings.

object (plan_settings)

Настройки планирования.

object (replan_settings)

Настройки перепланирования.

dataset_name
string (dataset_name) [ 0 .. 512 ] characters
Example: "custom_dataset_one"

Название набора данных. Техническое поле, не влияющее на расчет.

Responses

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

required
Array of objects (entity_warning_list) [ 0 .. 15001 ] items

Список предупреждений.

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
{
}

Переработка данных

Учет фактов, рейсов и очистка данных для перепланирования перед расчетом - в результате возвращается задача для планирования.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required

Данные, которые необходимо переработать.

required
Array of objects (location) [ 1 .. 15001 ] items unique

Список локаций, которые используются в заказах и сменах.

required
Array of objects (order) [ 1 .. 15001 ] items unique

Список заказов, которые необходимо выполнить.

required
Array of objects (performer) [ 1 .. 15001 ] items unique

Список доступных исполнителей. Исполнитель выполняет заказы используя транспорт.

required
Array of objects (transport) [ 1 .. 15001 ] items unique

Список доступного транспорта.

Array of objects (hardlink_list) [ 0 .. 15001 ] items unique

Список назначений.

required
Array of objects (trip) [ 1 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

Array of objects (fact_list) [ 0 .. 15001 ] items unique

Список фактов. Факт - это произошедшее событие, которое влияет на дальнейшие выполнение рейсов.

Array of objects (routing_transport_matrix_list) [ 0 .. 16 ] items unique

Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации external_routing не учитываются параметры geo_settings.

object (plan_settings)

Настройки планирования.

object (replan_settings)

Настройки перепланирования.

dataset_name
string (dataset_name) [ 0 .. 512 ] characters
Example: "custom_dataset_one"

Название набора данных. Техническое поле, не влияющее на расчет.

Responses

Response Schema: application/json
required
object (tracedata)

Данные используемые для трассировки запросов.

required
object (plan_task)

Задача для планирования.

Array of objects (entity_warning_list) [ 0 .. 15001 ] items

Список предупреждений.

object (removed_items)

Информация о удаленных сущностях.

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
{
}

Convert

Конвертация данных.

JSON >> XLSX

Используется для конвертации данных в формат VRt.Universal XLSX.

Authorizations:
ApiKeyAuth
query Parameters
timezone
integer <int32> (timezone) [ -12 .. 12 ]
Default: 0
Example: timezone=3

Целевая временная зона данных.

Request Body schema: application/json
required

Запрос на конвертацию в XLSX.

Array of objects (location_list) [ 0 .. 15001 ] items unique

Список локаций, которые используются в заказах и сменах.

Array of objects (order_list) [ 0 .. 15001 ] items unique

Список заказов, которые необходимо выполнить.

Array of objects (performer_list) [ 0 .. 15001 ] items unique

Список доступных исполнителей. Исполнитель выполняет заказы используя транспорт.

Array of objects (transport_list) [ 0 .. 15001 ] items unique

Список доступного транспорта. Транспорт используется исполнителем рейса для выполнения заказов.

Array of objects (hardlink_list) [ 0 .. 15001 ] items unique

Список назначений.

Array of objects (trip_list) [ 0 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

Array of objects (fact_list) [ 0 .. 15001 ] items unique

Список фактов. Факт - это произошедшее событие, которое влияет на дальнейшие выполнение рейсов.

object or null (plan_statistics)

Общая статистика по результату расчета.

Array of objects (routing_transport_matrix_list) [ 0 .. 16 ] items unique

Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации external_routing не учитываются параметры geo_settings.

object (plan_settings)

Настройки планирования.

object (replan_settings)

Настройки перепланирования.

object (actualize_settings)

Настройки актуализации.

dataset_name
string (dataset_name) [ 0 .. 512 ] characters
Example: "custom_dataset_one"

Название набора данных. Техническое поле, не влияющее на расчет.

Responses

Response Schema: application/octet-stream
string <byte> (file_xlsx)

Файл с данными в формате XLSX.

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
{
}

XLSX >> JSON

Используется для конвертации данных из формата VRt.Universal XLSX в формат VRt.Universal JSON.

Authorizations:
ApiKeyAuth
Request Body schema: application/octet-stream
required

Запрос на конвертацию в JSON.

string <byte> (file_xlsx)

Файл с данными в формате XLSX.

Responses

Response Schema: application/json
Array of objects (location_list) [ 0 .. 15001 ] items unique

Список локаций, которые используются в заказах и сменах.

Array of objects (order_list) [ 0 .. 15001 ] items unique

Список заказов, которые необходимо выполнить.

Array of objects (performer_list) [ 0 .. 15001 ] items unique

Список доступных исполнителей. Исполнитель выполняет заказы используя транспорт.

Array of objects (transport_list) [ 0 .. 15001 ] items unique

Список доступного транспорта. Транспорт используется исполнителем рейса для выполнения заказов.

Array of objects (hardlink_list) [ 0 .. 15001 ] items unique

Список назначений.

Array of objects (trip_list) [ 0 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

Array of objects (fact_list) [ 0 .. 15001 ] items unique

Список фактов. Факт - это произошедшее событие, которое влияет на дальнейшие выполнение рейсов.

object or null (plan_statistics)

Общая статистика по результату расчета.

Array of objects (routing_transport_matrix_list) [ 0 .. 16 ] items unique

Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации external_routing не учитываются параметры geo_settings.

object (plan_settings)

Настройки планирования.

object (replan_settings)

Настройки перепланирования.

object (actualize_settings)

Настройки актуализации.

dataset_name
string (dataset_name) [ 0 .. 512 ] characters
Example: "custom_dataset_one"

Название набора данных. Техническое поле, не влияющее на расчет.

Response samples

Content type
application/json
{
}

JSON >> THRIFT

Используется для конвертации входных данных в формат THRIFT.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required

Запрос на конвертацию в THRIFT.

Array of objects (location_list) [ 0 .. 15001 ] items unique

Список локаций, которые используются в заказах и сменах.

Array of objects (order_list) [ 0 .. 15001 ] items unique

Список заказов, которые необходимо выполнить.

Array of objects (performer_list) [ 0 .. 15001 ] items unique

Список доступных исполнителей. Исполнитель выполняет заказы используя транспорт.

Array of objects (transport_list) [ 0 .. 15001 ] items unique

Список доступного транспорта. Транспорт используется исполнителем рейса для выполнения заказов.

Array of objects (hardlink_list) [ 0 .. 15001 ] items unique

Список назначений.

Array of objects (trip_list) [ 0 .. 15001 ] items unique

Список рейсов. Рейс - это совокупность работ, запланированных на выполнение конкретным исполнителем на конкретном транспорте, выраженных через изменение состояний исполнителя.

Array of objects (fact_list) [ 0 .. 15001 ] items unique

Список фактов. Факт - это произошедшее событие, которое влияет на дальнейшие выполнение рейсов.

object or null (plan_statistics)

Общая статистика по результату расчета.

Array of objects (routing_transport_matrix_list) [ 0 .. 16 ] items unique

Список матриц времен и расстояний для каждого типа транспорта, которые указаны в данных. Матрица должна описывать все локации для каждого типа транспорта из данных. При указании внешней матрицы маршрутизации external_routing не учитываются параметры geo_settings.

object (plan_settings)

Настройки планирования.

object (replan_settings)

Настройки перепланирования.

object (actualize_settings)

Настройки актуализации.

dataset_name
string (dataset_name) [ 0 .. 512 ] characters
Example: "custom_dataset_one"

Название набора данных. Техническое поле, не влияющее на расчет.

Responses

Response Schema: text/plain
string (file_text)

Файл с данными в текстовом формате.

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
{
}

System

Системные функции. Вспомогательный функционал, общий для всех сервисов.

Проверка доступности

Проверка доступности сервиса.

Responses

Response Schema: application/json
health
required
number <double> [ 0 .. 1 ]
Example: "0.999"

Текущий показатель здоровья сервиса.

  • 0.0 означает неготовность сервиса выполнять задачи.
  • 1.0 означает полную готовность сервиса для выполнения задач.

Response samples

Content type
application/json
{
}

Получение версии сервиса

Получение версии сервиса.

Responses

Response Schema: application/json
major
required
integer <int32> [ 1 .. 100 ]
Example: "7"

Версия продукта. В рамках одной версии гарантируется совместимость общих структур данных между сервисами.
Изменение версии указывает на несовместимые с предыдущими версиями продукта (и, соответственно, всех сервисов) изменения.

minor
required
integer <int32> [ 0 .. 111 ]
Example: "5"

Минорная версия сервиса. Изменение версии указывает на новую функциональность. Обновление имеет обратную совместимость в рамках мажорной версии сервиса.

build
required
string [ 1 .. 64 ] characters
Example: "3754RC"

Версия сборки.
Изменяется при обновлении документации и исправлении ошибок.

Response samples

Content type
application/json
{
}

Получение документации

Получение файла с документацией на этот сервис.

path Parameters
filename
required
string [ 6 .. 128 ] characters
Example: file_en.html

Название файла.

Responses

Response Schema:
string (file_html)

Файл с данными в формате HTML.

Response samples

Content type
application/json
{
}

XLSX Format

Описание формата VRt.Universal XLSX для импорта\экспорта данных.

Данный формат является полным отображением json-модели данных и используется для:

  • исходных данных
  • настроек процессов
  • результатов расчета
  • статистики по результату расчета

Ниже представлено описание каждого листа отдельно, жирным выделены ключи.

Настройки данных

Название листа info.

Название Описание
api_version Версия API Universal в момент генерации XLSX
timezone Временной пояс, в котором указаны все времена в данных
docs_ru Ссылка на документацию (RU)
docs_en Ссылка на документацию (EN)
docs_zh Ссылка на документацию (ZH)

Локации

Название листа locations.

Список локаций, которые используются в заказах и сменах.

Название Описание Примечание
key Ключ локации, уникальный идентификатор Уникальный ключ в рамках расчета
departure_duration Время на отъезд от локации, временной промежуток
geopoint.latitude Географическая широта в градусах
geopoint.longitude Географическая долгота в градусах
timetable.work_windows.from Начало временного окна работы локации Обязательно, если указан to. Если список пустой или не указан - локация работает без ограничений по времени.
timetable.work_windows.to Окончание временного окна работы локации Обязательно, если указан from. Если список пустой или не указан - локация работает без ограничений по времени.
compatibilities
.transport_restrictions
Список необходимых требований к транспорту Используется для проверки совместимости транспорта локацией.
attributes Атрибуты, используются для указания служебной информации Эти данные не учитываются в планировании.

Описываемый объект:

key
required
string [ 1 .. 1024 ] characters
Example: "location_01"

Ключ локации, уникальный идентификатор.

required
object (geopoint)

Географическая точка.

arrival_duration
string <duration> (time_duration) [ 3 .. 16 ] characters ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d...
Example: "PT1H45M"

Время на подъезд (парковку) на локации, в формате ISO 8601 duration.

departure_duration
string <duration> (time_duration) [ 3 .. 16 ] characters ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d...
Example: "PT1H45M"

Время на отъезд от локации, в формате ISO 8601 duration.

Array of objects (location_timetable) [ 0 .. 30 ] items

Расписание работы локации - временные окна доступности и ограничения на пропускную способность. Если список пустой или не указан - локация работает без ограничений.

object or null (location_compatibilities)

Совместимости локации с транспортом.

Array of objects (attributes) [ 0 .. 1000 ] items unique

Атрибуты. Используются для указания служебной информации.

{
}

Исполнители

Название листа performers.

Список доступных исполнителей.

Название Описание Примечание
key Ключ исполнителя, уникальный идентификатор
own_transport_type Тип транспорта Если не указан, по умолчанию, проставляется CAR.
shifts.key Ключ смены, уникальный идентификатор
shifts.start_location_key Ключ начальной локациями Если ключ не задан - то путь перформера начинается на первом заказе.
shifts.finish_location_key Ключ финальной локации Если ключ не задан - то путь перформера завершается на последнем заказе.
shifts.max_locations Ограничение количества уникальных локаций в одном рейсе, включая локации старта и финиша Если параметр не указан или указан как null - то количество локаций не ограничено.
shifts.max_stops Ограничение количества остановок в одном рейсе, включая локации старта и финиша Если параметр не указан или указан как null - то количество остановок не ограничено.
shifts.attributes Атрибуты. Используются для указания служебной информации Эти данные не учитываются в планировании.
shifts.availability_time.from Начало временного окна смены В которое исполнитель может выполнять работу на локациях и осуществлять перемещение между локациями.
shifts.availability_time.to Окончание временного окна смены В которое исполнитель может выполнять работу на локациях и осуществлять перемещение между локациями.
shifts.working_time.from Начало рабочего временного окна В которые исполнитель может выполнять работу на локациях, должно быть внутри временного окна смены.
shifts.working_time.to Окончание рабочего временного окна В которые исполнитель может выполнять работу на локациях, должно быть внутри временного окна смены.
shifts.tariff
.cost_per_shift
Цена за использование смены, денежная единица По умолчанию: 0.001
shifts.tariff
.max_penalty_cost
Максимальная сумма штрафов, которую может получить исполнитель в рамках данной смены, денежная единица. Если сумма не задана или равна null - исполнитель не может нарушать ограничения.
shifts.tariff
.constraints.stage_length
Длина оплачиваемого периода, временной промежуток По умолчанию: 525960
shifts.tariff
.constraints.cost_per_unit
Стоимость внутри оплачиваемого периода, денежная единица за секунду работы По умолчанию: 0.001
shifts.work_and_rest_rules
.first_break
.max_work_duration_sum
Суммарное время работы, после которого необходимо сделать перерыв
shifts.work_and_rest_rules
.first_break
.duration
Продолжительность перерыва
compatibilities
.performer_features
Список свойств исполнителя Используется для проверки совместимости исполнителя с заказами и транспортом.
compatibilities
.transport_restrictions
Список необходимых требований к транспорту Используется для проверки совместимости исполнителя с транспортом.
limits.max_work_shifts Ограничение на рабочую загрузку исполнителя Ограничение количества смен исполнителя в одном планировании.
attributes Атрибуты, используются для указания служебной информации Эти данные не учитываются в планировании.

Описываемый объект:

key
required
string [ 1 .. 1024 ] characters
Example: "performer0001"

Ключ исполнителя, уникальный идентификатор.

required
Array of objects (performer_shift) [ 1 .. 15001 ] items unique

Список рабочих смен исполнителя.

own_transport_type
string (transport_type)
Enum: "CAR" "TRUCK_1500" "TRUCK_3000" … 13 more
Example: "CAR"

Тип личного транспорта, на котором исполнитель будет добираться до назначенного на него рабочего транспорта.

object or null (performer_compatibilities)

Совместимости исполнителя с транспортом и заказами.

object or null (performer_limits)

Ограничение на рабочую загрузку исполнителя.

Array of objects (attributes) [ 0 .. 1000 ] items unique

Атрибуты. Используются для указания служебной информации.

{
}

Транспорт

Название листа transports.

Список доступного транспорта.

Название Описание Примечание
key Ключ транспорта уникальный идентификатор
transport_type Тип транспорта Если не указан, по умолчанию, проставляется CAR
boxes.key Список отсеков транспорта, которые могут вмещать груз Обязательно,если в задаче присутствуют заказы с демандами PICKUP и DROP
shifts.key Ключ смены, уникальный идентификатор
shifts.start_location_key Ключ начальной локации. Если ключ не задан - то путь транспорта начинается на первом заказе
shifts.finish_location_key Ключ финальной локации Если ключ не задан - то путь транспорта завершается на последнем заказе
shifts.attributes Атрибуты. Используются для указания служебной информации Эти данные не учитываются в планировании
shifts.availability_time.from Начало временного окна смены В которое транспорт может осуществлять перемещение между локациями и использоваться исполнителем в работах на локациях
shifts.availability_time.to Окончание временного окна смены В которое транспорт может осуществлять перемещение между локациями и использоваться исполнителем в работах на локациях
shifts.tariff
.cost_per_shift
Цена за использование смены, денежная единица По умолчанию: 0.001
shifts.tariff
.max_penalty_cost
Максимальная сумма штрафов По умолчанию: 0. Которую может получить транспорт в рамках данной смены, денежная единица. Если сумма не задана или равна null - транспорт не может нарушать ограничения.
shifts.tariff
.constraints.stage_length
Длина оплачиваемой части пути, в метрах По умолчанию: 100000000
shifts.tariff
.constraints.cost_per_unit
Стоимость внутри оплачиваемой части пути Денежная единица за один метр. По умолчанию: 0.001
shifts.tariff
.transportation_cost.mass
Стоимость перемещения 1 единицы массы груза на 1 метр В условных денежных единицах
shifts.tariff
.transportation_cost.volume
Стоимость перемещения 1 единицы объема груза на 1 метр В условных денежных единицах
shifts.tariff
.transportation_cost.capacity_a
Стоимость перемещения 1 единицы доп.параметра A груза на 1 метр В условных денежных единицах
shifts.tariff
.transportation_cost.capacity_b
Стоимость перемещения 1 единицы доп.параметра B груза на 1 метр В условных денежных единицах
shifts.tariff
.transportation_cost.capacity_c
Стоимость перемещения 1 единицы доп.параметра C груза на 1 метр В условных денежных единицах
compatibilities
.transport_features
Список свойств транспорта Используется для проверки совместимости транспорта с локациями и исполнителями
compatibilities
.performer_restrictions
Список требований транспорта к исполнителю Используется для проверки совместимости с исполнителем
limits.max_boxes Ограничение максимального количества используемых отсеков транспорта в одном рейсе Если параметр не указан или указан как null - то количество отсеков не ограничено. Ограничение не должно превышать количество отсеков
limits.max_capacity.mass Параметр дополнительно ограничивает максимально возможную загрузку транспорта по массе суммарно по всем отсекам Масса в килограммах, применимо только если у транспорта больше одного отсека, параметр не должен быть меньше вместимости любого отсека.
limits.max_capacity.volume Параметр дополнительно ограничивает максимально возможную загрузку транспорта по объему суммарно по всем отсекам Объем в кубических метрах, применимо только если у транспорта больше одного отсека, параметр не должен быть меньше вместимости любого отсека.
limits.max_capacity.capacity_a Параметр дополнительно ограничивает максимально возможную загрузку транспорта по доп.параметру A суммарно по всем отсекам Дополнительный параметр вместимости (A) для измерения грузов и отсеков в альтернативных единицах измерения. Например, для учета грузов в штуках (у груза данный параметр равен единице, у отсека - максимальному количеству вмещаемых грузов)
limits.max_capacity.capacity_b Параметр дополнительно ограничивает максимально возможную загрузку транспорта по доп.параметру B суммарно по всем отсекам Дополнительный параметр вместимости (B) для измерения грузов и отсеков в альтернативных единицах измерения.
limits.max_capacity.capacity_c Параметр дополнительно ограничивает максимально возможную загрузку транспорта по доп.параметру C суммарно по всем отсекам Дополнительный параметр вместимости (C) для измерения грузов и отсеков в альтернативных единицах измерения.
attributes Атрибуты, используются для указания служебной информации Эти данные не учитываются в планировании.

Описываемый объект:

key
required
string [ 1 .. 1024 ] characters
Example: "transport001"

Ключ транспорта, уникальный идентификатор.

required
Array of objects (transport_shift) [ 1 .. 15001 ] items unique

Список рабочих смен транспорта.

transport_type
string (transport_type)
Enum: "CAR" "TRUCK_1500" "TRUCK_3000" … 13 more
Example: "CAR"

Типы транспорта:

  • CAR - легковой автомобиль
  • TRUCK_1500 - грузовой автомобиль с разрешенной массой не более 1500 кг
  • TRUCK_3000 - грузовой автомобиль с разрешенной массой не более 3000 кг
  • TRUCK_5000 - грузовой автомобиль с разрешенной массой не более 5000 кг
  • TRUCK_10000 - грузовой автомобиль с разрешенной массой не более 10000 кг
  • TRUCK_20000 - грузовой автомобиль с разрешенной массой не более 20000 кг
  • TRUCK_10000_L75_H35_W24_6000 - грузовой автомобиль с разрешенной массой не более 10000 кг, габаритами 7.5 x 3.5 x 2.4 метров, допустимой нагрузкой на ось 6000 кг
  • TRUCK_18000_L95_H40_W26_11000 - грузовой автомобиль с разрешенной массой не более 18000 кг, габаритами 9.5 x 4.0 x 2.6 метров, допустимой нагрузкой на ось 11000 кг
  • TRUCK_26000_L120_H40_W26_8000 - грузовой автомобиль с разрешенной массой не более 26000 кг, габаритами 12.0 x 4.0 x 2.6 метров, допустимой нагрузкой на ось 8000 кг
  • TRUCK_GARBAGE_1 - грузовой автомобиль для перевозки мусора (тип 1)
  • TRUCK_GARBAGE_2 - грузовой автомобиль для перевозки мусора (тип 2)
  • TUK_TUK - моторикша
  • BICYCLE - велосипед
  • PEDESTRIAN - пешеход
  • PUBLIC_TRANSPORT - общественный транспорт
  • TELEPORT - телепорт (мгновенное перемещение между точками)

Разрешенная масса - это масса снаряженного транспорта с грузом и водителем, установленная предприятием-изготовителем в качестве максимально допустимой.

Array of objects (box) [ 0 .. 100 ] items unique
Default: []

Список отсеков транспорта, которые могут вмещать груз.

object or null (transport_compatibilities)

Совместимости транспорта с исполнителями и локациями.

object or null (transport_limits)

Ограничения на загрузку транспорт.

Array of objects (attributes) [ 0 .. 1000 ] items unique

Атрибуты. Используются для указания служебной информации.

{
}

Кузова

Название листа transports.boxes.

Список отсеков транспорта, которые могут вмещать груз. Таблица обязательна, если в расчете есть заказы с заявками типов PICKUP и DROP. В описании отсеков обязательны те поля, которые описывают грузы.

Название Описание Примечание
key Ключ отсека Уникальный идентификатор, используется для идентификации размещения грузов по отсекам.
capacity.mass Масса, кг Ограничение по массе, которое может единовременно находиться в отсеке
capacity.volume Объем, м3 Ограничение по объему, которое может единовременно находиться в отсеке
capacity.capacity_a Дополнительный параметр вместимости (A) Для измерения грузов и отсеков в альтернативных единицах измерения. Например, для учета грузов в штуках (у груза данный параметр равен единице, у отсека - максимальному количеству вмещаемых грузов)
capacity.capacity_b Дополнительный параметр вместимости (B) Для измерения грузов и отсеков в альтернативных единицах измерения.
capacity.capacity_c Дополнительный параметр вместимости (C) Для измерения грузов и отсеков в альтернативных единицах измерения.
compatibilities
.width
Ширина в метрах
compatibilities
.height
Высота в метрах
compatibilities
.length
Длина в метрах
compatibilities
.box_features
Список свойств отсека По оценивается возможность перевозки груза в данном отсеке
limits
.max_one_cargo_capacity.mass
Масса в килограммах Ограничение по полям capacity для одного груза
limits
.max_one_cargo_capacity.volume
Объем в кубических метрах Ограничение по полям capacity для одного груза
limits
.max_one_cargo_capacity.capacity_a
Дополнительный параметр вместимости (A) Ограничение по полям capacity для одного груза
limits
.max_one_cargo_capacity.capacity_b
Дополнительный параметр вместимости (B) Ограничение по полям capacity для одного груза
limits
.max_one_cargo_capacity.capacity_c
Дополнительный параметр вместимости (C) Ограничение по полям capacity для одного груза

Описываемый объект:

key
required
string [ 1 .. 1024 ] characters
Example: "box01"

Ключ отсека, уникальный идентификатор, используется для идентификации размещения грузов по отсекам.

object or null (capacity)

Вместимость отсека, которая ограничивает максимальную сумму по всем полям capacity у всех грузов.

object or null (box_compatibilities)

Совместимости отсека транспорта.

object or null (box_limits)

Ограничения на отсек кузова.

{
}

Заказы

Название листа orders.

Список заказов.

Название Описание Примечание
key Ключ заказа Повторяющийся ключ заказа означает заявки одного заказа
cargos.key Список грузов Может содержать один груз для DROP, список для PICKUP, пустой для WORK.
demands.key Ключ заявки, уникальный идентификатор
demands.demand_type Тип заявки Загрузка - PICKUP, выгрузка - DROP, работа на локации - WORK.
demands.target_cargos Список ключей грузов Для PICKUP, один ключ груза для DROP, пустой ключ для WORK
demands.precedence_in_trip Приоритет внутри рейса 0 - приоритет не учитывается. По умолчанию: 0.
demands.precedence_in_order Приоритет внутри заказа 0 - приоритет не учитывается. По умолчанию: 0.
demands
.possible_events.key
Ключ события, уникальный идентификатор Описание объекта временного окна и локаций, в котором возможно выполнение заявки
demands
.possible_events.location_key
Ключ локации, в которой возможно данное событие
demands
.possible_events.duration
Время выполнения события
demands
.possible_events.reward
Вознаграждение за выполнение данного события
demands
.possible_events.hard_time_window.from
Начало жесткого временного окна
demands
.possible_events.hard_time_window.to
Конец жесткого временного окна
demands
.possible_events.soft_time_window.from
Начало мягкого временного окна
demands
.possible_events.soft_time_window.to
Конец мягкого временного окна
demands
.attributes
Атрибуты. Используются для указания служебной информации Эти данные не учитываются в планировании.
compatibilities
.order_features
Список свойств заказа
compatibilities
.order_restrictions
Список требований к заказу, выполняемому в этом же рейсе
compatibilities
.performer_restrictions
Список необходимых требований к исполнителю Используется для проверки совместимости исполнителя и заказа (работы).
compatibilities
.performer_blacklist
Список требований, наличие которых у исполнителя не допустимо Используется для проверки совместимости исполнителя и заказа (работы). Данный список не должен пересекаться с performer_restrictions
attributes Атрибуты, используются для указания служебной информации Эти данные не учитываются в планировании.

Описываемый объект:

key
required
string [ 1 .. 1024 ] characters
Example: "order01"

Ключ заказа, уникальный идентификатор.

required
Array of objects (demand) [ 1 .. 1000 ] items unique

Список заявок.

Array of objects (cargo) [ 0 .. 1000 ] items unique
Default: []

Список грузов, на которые ссылаются заявки данного заказа. Список должен быть пустой, если все заявки заказа имеют тип WORK.

object or null (order_compatibilities)

Совместимости заказа с исполнителями и другими заказами.

Array of objects (attributes) [ 0 .. 1000 ] items unique

Атрибуты. Используются для указания служебной информации.

{
}

Грузы

Название листа orders.cargos.

Список грузов. Может содержать один груз для DROP, список для PICKUP, пустой для WORK. Таблица не обязательна, если все заявки имеют тип WORK.

Название Описание Примечание
key Ключ груза, уникальный идентификатор
capacity.mass Масса в килограммах
capacity.volume Объем в кубических метрах
capacity.capacity_a Дополнительный параметр вместимости (A) Для измерения грузов и отсеков в альтернативных единицах измерения. Например, для учета грузов в штуках (у груза данный параметр равен единице, у отсека - максимальному количеству вмещаемых грузов).
capacity.capacity_b Дополнительный параметр вместимости (B)
capacity.capacity_c Дополнительный параметр вместимости (C)
compatibilities
.width
Ширина в метрах Используется для проверки вместимости в отсек транспорта по ширине.
compatibilities
.height
Высота в метрах Используется для проверки вместимости в отсек транспорта по высоте
compatibilities
.length
Длина в метрах Используется для проверки вместимости в отсек транспорта по длине
compatibilities
.rotation
Список способностей объекта вращаться Шаг вращения 90 градусов. Если список пустой - объект вращать запрещено. Доступные значения: ALL, YAW, PITCH, ROLL
compatibilities
.box_restrictions
Список требования к отсеку транспорта
compatibilities
.cargo_features
Список свойств груза Используется для проверки совместимости груза с другими грузами. Несовместимые грузы не могу находится одновременно в одном отсеке транспорта
compatibilities
.cargo_restrictions
Список необходимых требований к грузу Используется для проверки совместимости груза с другими грузами. Несовместимые грузы не могу находится одновременно в одном отсеке транспорта

Описываемый объект:

key
required
string [ 1 .. 1024 ] characters
Example: "cargo01"

Ключ груза, уникальный идентификатор.

object or null (capacity)

Аддитивные меры груза.

object or null (cargo_compatibilities)

Совместимости груза с отсеком транспорта и другими грузами.

target_box_key
string or null [ 1 .. 1024 ] characters
Default: null
Example: "box01"

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

{
}

Назначения

Название листа hardlinks.

Список назначений.

Описываемый объект:

key
required
string [ 1 .. 1024 ] characters
Example: "group01"

Ключ назначения.

required
Array of objects (hardlink_element) [ 2 .. 1000 ] items

Список элементов группы назначения.

{
}

Рейсы

Название листа trips.

Список рейсов.

Описываемый объект:

key
required
string [ 1 .. 1024 ] characters
Example: "trip-0000-9999"

Уникальный идентификатор рейса.

name
string (trip_name) [ 0 .. 64 ] characters
Example: "1-ABC"

Краткое наименование рейса.

required
object (assigned_performer)

Назначенная на определенное время (shift_time) смена исполнителя.

required
object (assigned_transport)

Назначенная на определенное время (shift_time) смена транспорта.

required
Array of objects (trip_state_list) [ 0 .. 15001 ] items

Список состояний исполнителя.

waitlist
Array of strings (trip_waitlist) [ 0 .. 15001 ] items unique [ items [ 1 .. 1024 ] characters ]
Example: "order02"

Список ключей заказов, назначенных на исполнителя, но не запланированных на определенное время и не учтенных в загрузке транспорта.

Array of objects (attributes) [ 0 .. 1000 ] items unique

Атрибуты. Используются для указания служебной информации.

{
}

Факты

Название листа facts.

Список фактов.

Описываемый объект:

key
required
string [ 1 .. 1024 ] characters
Example: "fact_01"

Ключ факта.

time
required
string <date-time> (fact_time)
Example: "2024-08-21T09:30:00+03:00"

Дата и время создания факта в формате ISO 8601.

type
required
string (fact_type)
Enum: "NEW_LOCATION" "ORDER_DONE" "DEMAND_START" … 1 more
Example: "NEW_LOCATION"

Возможные типы фактов:

  • NEW_LOCATION - исполнитель изменил свое местоположение в процессе выполнения рейса
  • ORDER_DONE - исполнитель закончил выполнять заказ (или заказ был отменен), связанный с заказом груз более не находится в отсеках транспорта
  • DEMAND_START - исполнитель начал выполнять заявку
  • DEMAND_DONE - исполнитель закончил выполнять заявку
trip_key
required
string [ 1 .. 1024 ] characters
Example: "trip_01"

Ключ рейса, к которому относится факт.

order_key
string or null [ 1 .. 1024 ] characters
Default: null
Example: "order_01"

Ключ заказа, обязателен для фактов с типом ORDER_DONE.

demand_key
string or null [ 1 .. 1024 ] characters
Default: null
Example: "order_01_demand_01"

Ключ заявки, обязателен для фактов с типами DEMAND_DONE и DEMAND_START.

performer_key
string or null [ 1 .. 1024 ] characters
Default: null
Example: "performer_01"

Ключ исполнителя, обязателен для фактов с типом NEW_LOCATION.

location_key
string or null [ 1 .. 1024 ] characters
Default: null
Example: "location_01"

Ключ локации, обязателен для фактов с типом NEW_LOCATION.

{
}

Настройки планирования

Название листа plan_settings.

Настройки планирования.

Описываемый объект:

object (trips_settings)

Настройки создания рейсов.

object (geo_settings)

Настройки использования гео-данных.

object (calculation_settings)

Настройки процесса расчета.

{
}

Настройки актуализации

Название листа actualize_settings.

Настройки актуализации.

Описываемый объект:

current_time
string or null <date-time>
Example: "2024-08-21T09:30:00+03:00"

Указание даты и времени, которое для актуализации будет являться текущим, в соответствии с ISO 8601. Если не указано - берется текущее время получения запроса сервером.

max_delay_duration
string <duration> [ 3 .. 16 ] characters ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d...
Default: "PT3H"
Example: "PT1H30M"

Допустимое опоздание. Влияет на сдвиг правых границ жестких временных окон заказов и временных окон рабочих смен исполнителей и транспортов.

{
}

Настройки перепланирования

Название листа replan_settings.

Настройки перепланирования.

Описываемый объект:

object (replan_strategy)

Стратегия перепланирования.

{
}

Общая статистика

Название листа total_statistics.

Общая статистика.

Описываемый объект:

cost
required
number <double> [ 0 .. 10000000000 ]
Example: "1231.1"

Суммарные затраты, которые считаются на базе тарифов исполнителей и транспорта.

reward
required
number <double> [ 0 .. 10000000000 ]
Example: "2343.3"

Суммарное вознаграждение за выполнение заказов.

profit
required
number <double> [ -10000000000 .. 10000000000 ]
Example: "1231.1"

Суммарный доход - разница между суммарным вознаграждением (reward) и затратами (cost).

required
object (measurements)

Измерения времен и дистанций для совокупности и отдельных рейсов:

  • time_window - время начала первого рейса и время окончания последнего, если рейсов нет - возвращается время левой границы горизонта планирования, при этом поля from\to имеют одинаковое значение
  • driving_time - продолжительность времени вождения
  • waiting_time - суммарное время ожидания по всем локациям
  • working_time - суммарное время выполнения работ на всех локациях, входящих в рейс
  • break_time - суммарное время перерывов по всем локациям
  • rest_time - суммарное время отдыхов по всем локациям
  • arriving_time - суммарное время на подъезд/парковку на локациях
  • departure_time - суммарное время на отъезд от локаций
  • total_time - суммарное время, складывается из driving_time + waiting_time + working_time + break_time + rest_time + arriving_time + departure_time
  • distance - суммарная протяжённость рейса/совокупности рейсов, в метрах
trips_count
required
integer <int32> [ 0 .. 15001 ]
Example: "250"

Суммарное количество запланированных рейсов.

performers_count
required
integer <int32> [ 0 .. 15001 ]
Example: "157"

Суммарное количество исполнителей, задействованных в выполнении заказов.

orders_count
required
integer <int32> [ 0 .. 15001 ]
Example: "1700"

Суммарное количество запланированных и назначенных заказов.

plan_orders_count
required
integer <int32> [ 0 .. 15001 ]
Example: "1003"

Суммарное количество запланированных заказов.

waitlist_orders_count
required
integer <int32> [ 0 .. 15001 ]
Example: "697"

Суммарное количество назначенных заказов.

stops_count
required
integer <int32> [ 0 .. 15001000 ]
Example: "87"

Суммарное количество остановок (неуникальных локаций).

locations_count
required
integer <int32> [ 0 .. 15001000 ]
Example: "45"

Суммарное количество уникальный локаций в рамках одного рейса.

required
object (capacity_statistics_sum)

Суммарные аддитивные меры перевезенного груза.

required
object (capacity_statistics_ratio)

Отношение суммарных аддитивных мер перевезенного груза к суммарной вместимости отсеков. В долях единицы. Может быть больше единицы.

required
object (capacity_statistics_load)

Отношение максимальной загрузки отсеков к суммарной вместимости отсеков. В долях единицы. Не может быть больше единицы.

average_speed
required
number <double> >= 0
Example: "43.1"

Средняя скорость - отношение общей дистанции к общему время движения, км/ч.

round_trips_count
required
integer <int32> [ 0 .. 15001 ]
Example: "2"

Количество круго-рейсов внутри рейса.

{
}