Режим труда и отдыха

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

Перерывы

Чтобы управлять режимом работы курьеров, используйте объект vechicle.rest_schedule.breaks. Вы можете описать простые или сложные схемы перерывов на отдых, техническое обслуживание и другие действия:

  • для курьера в объекте vehicles.rest_schedule.breaks;
  • для смены в объекте vehicles.shifts.N.rest_schedule.breaks. Приоритет этого перерыва выше, чем у заданного на уровне курьера.

Примечание

Перерывы на уровне смен не объединяются с перерывами курьера, а заменяют их.

Для каждого перерыва можно указать уникальный идентификатор:

  • если перерыв задается на уровне курьера, укажите идентификатор на листе Vehicles в поле rest_schedule.breaks.N.work_break_id;
  • если перерыв задается на уровне смены, — в поле shifts.N.rest_schedule.breaks.N.work_break_id.

Идентификаторы, которые указываются для одного расписания rest_schedule, должны быть уникальными и иметь одинаковый формат: строковый или числовой.

Пример 1

За две смены курьер должен развезти 10 заказов. На уровне смен перерывы не определены. На уровне курьера предусмотрен перерыв длительностью 1 час (rest_duration_s = 3600) через час-полтора после начала смены (from_start = 01:00 - 01:30).

В результате курьер отправится на перерыв дважды: по одному разу в каждую смену. Перерыв первой смены начнется в 10:15, а перерыв второй смены — в 15:06.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пример 2

За две смены курьер должен развезти 15 заказов. В каждую из смен для него предусмотрено по одному получасовому перерыву (rest_duration_s = 1800) через 02:00-02:30 часа после начала работы. На уровне курьера перерывы не определены.

В результате курьер отправится на перерыв дважды: по одному разу в каждую смену. Перерыв первой смены начнется в 11:36, а перерыв второй смены — в 16:30.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пример 3

Те же условия, что в примере 2, но еще один часовой перерыв определен на уровне курьера через час-полтора после начала смены (from_start = 01:00 - 01:30). Таким образом, перерывы заданы как на уровне смен, так и на уровне курьера.

В результате планируются перерывы только на уровне смен в 11:07 и 16:17, так как они имеют больший приоритет и заменяют перерывы на уровне курьера.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пресеты перерывов

Вы можете задать режим работы курьера с помощью параметра vehicles.rest_schedule_preset, который содержит готовый набор настроек:

  • не позже чем через 4,5 часа работы курьера будет установлен 45-минутный перерыв;

  • на длительность смены без учета перерывов будут наложены ограничения:

    • мягкое — 9 часов;

    • жесткое — 10 часов.

Возможные значения параметра rest_schedule_preset:

  • public_transport — перерыв можно разбить на несколько частей продолжительностью не меньше 10 минут;

  • private_transport — перерыв можно разбить на две части: 15 и 30 минут;

  • multiday_private_transport — режим private_transport для многодневных маршрутов. Дополнительно к обычным перерывам добавляются:

    • ежедневный перерыв — последние 11 часов каждого буднего дня;
    • еженедельный перерыв — последние 45 часов каждой недели.

Перерыв в маршруте будет разбиваться на части при выполнении следующих условий:

  • если между заказами нет интервала, в который можно полностью поместить перерыв;

  • между заказами есть ожидания, куда могут поместиться перерывы.

Также вы можете запретить разбивать перерывы на части. Для этого используйте опцию can_split_preset_work_breaks = false (по умолчанию can_split_preset_work_breaks = true).

Пример 1

Для курьера назначен режим работы rest_schedule_preset = private_transport. В него входит один перерыв, который можно разбить на две части. Между заказами есть интервал, в который полностью помещается перерыв. В результате запланирован один перерыв продолжительностью 45 минут.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пример 2

Для курьера назначен режим работы rest_schedule_preset = public_transport. В него входит один перерыв, который можно разбить на несколько частей. Между заказами нет интервала, куда можно полностью поместить перерыв. Также есть ожидание, в которое может поместиться часть перерыва. В результате запланировано два перерыва: 21 и 23 минуты.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пример 3

Для курьера назначен режим работы rest_schedule_preset = public_transport. У курьера 14 заказов. На длительность смены наложено жесткое ограничение: 10 часов. В результате один заказ остался невыполненным, так как для его доставки курьеру пришлось бы работать больше 10 часов.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пример 4

Для курьера назначен режим работы rest_schedule_preset = multiday_private_transport. Нужно доставить один дальний заказ. В результате курьер доставляет заказ на второй день. Он начинает движение в 8:00 и в пути делает три перерыва:

  • 45 минут через 4ч 30 мин движения;
  • 11 часов в конце рабочего дня, до 8:00 следующего дня;
  • 45 минут через 4ч 30 мин движения.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Шаблоны расписаний

Вы можете описать перерывы отдельно для каждого курьера, создать шаблоны для нескольких курьеров или для смены. В том числе, можно совмещать индивидуальные расписания и шаблонные.

Чтобы создать шаблон, добавьте в options параметр template_rest_schedules и укажите в нем массив расписаний: [{"id": string, "breaks": [...]}].

Чтобы использовать шаблон на уровне курьера, добавьте в vehicles параметр rest_schedule_id и укажите в нем id шаблона расписания из options. Чтобы использовать шаблон на уровне смены, добавляйте параметр в vehicles.shifts.N.

Продолжительность перерыва

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

Параметр

Значение

Пример

rest_duration_s

Продолжительность перерыва в секундах.

"rest_duration_s": 600

Перерыв должен длиться 10 минут (600 секунд).

Условия начала перерыва

Начало перерыва обозначается диапазоном времени (от и до). Если перерывов несколько, в каждом указывается диапазон времени работы после завершения предыдущего перерыва. Например, если в первом перерыве задано 04:00–05:00, а во втором — 02:00–03:00, то первый перерыв должен начаться между 4 и 5 часами после начала работы, а второй — между 2 и 3 часами работы после завершения первого перерыва.

Условия начала перерыва можно задать несколькими способами, которые описаны ниже.

Параметр

Значение

Пример

soft_time_range

Мягкое временное окно перерыва.

Перерыв может начаться раньше или позже, но со штрафом (penalty).

soft_time_range = 01:00:00-03:00:00

Рекомендуется начать перерыв не раньше, чем через 1 час, и не позже, чем через 3 часа.

hard_time_range

Жесткое временное окно перерыва.

Перерыв должен начаться строго в обозначенное время. Жесткое временное окно включает мягкое.

hard_time_range = 02:00:00-04:00:00

Необходимо начать перерыв не раньше, чем через 2 часа, и не позже, чем через 4 часа.

desired_work_duration

Предпочтительное время до начала перерыва.

Перерыв начнется в указанный момент времени, если это не приведет к увеличению стоимости маршрута. Может указываться без обозначения временных окон soft_time_range и hard_time_range. Если окна заданы, значение параметра desired_work_duration должно находиться внутри них.

Задается в одном из форматов:

  • в числовом, например 7200 — доступно только при планировании через API;
  • в строковом, например 3:45:00 — доступно при планировании через API и при заполнении Excel-файла.

desired_work_duration = 03:00:00

До начала перерыва должно пройти предпочтительно 3 часа.

Примечание

Мягкое временное окно soft_time_range и жесткое hard_time_range не зависят друг от друга. Их можно использовать по отдельности.

Пример 1

Для курьера построен маршрут между Москвой и Санкт-Петербургом с первым перерывом через 4 часа (hard_time_range = 04:00:00-04:10:00), и затем с перерывами каждые 2 часа (hard_time_range = 01:50:00-02:00:00). В результате запланировано три перерыва.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пример 2

Для курьеров запланировано два перерыва через 2-3 часа от последнего перерыва или от начала работы, если это первый перерыв (soft_time_range = 02:00:00-03:00:00):

  • первый — 20 минут (rest_duration_s = 1200);
  • второй — 30 минут (rest_duration_s= 1800).

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

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Место перерыва

Чтобы курьер мог провести перерыв в определенной точке:

  • на листе Orders в поле type задайте для нее тип rest_place;
  • на листе Vehicles в поле at_rest_place для перерыва укажите значение true.

Параметр

Значение

Пример

at_rest_place

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

at_rest_place = true

Все перерывы будут проходить точках с типом type = rest_place.

Уникальный идентификатор точки с типом rest_place указывается на листе Orders в поле id. Идентификатор точки при этом не является идентификатором перерыва. Уникальный идентификатор перерыва можно указать на листе Vehicles в полях:

  • rest_schedule.breaks.N.work_break_id — если перерыв задается на уровне курьера;
  • shifts.N.rest_schedule.breaks.N.work_break_id — если перерыв задается на уровне смены.

Курьер не может посещать места для перерывов, которые находятся в запрещенных для него геозонах.

Вы можете задавать требования к рейсу в место перерыва с типом rest_place с помощью параметра incompatible_load_types, см. Несовместимость заказов. Например, курьер перевозит заказ с типом load_type = ice-cream, а у точки rest_place указан тип load_type = no-refrigerator. Чтобы курьер не мог заехать в такое место для перерыва, на листе Incompatible_load_types укажите, что тип ice-cream несовместим с no-refrigerator.

Пример

Для двух курьеров запланировано 19 заказов. Первый курьер должен отдыхать каждые 2-3 часа работы, второй — каждые 3-4 часа. Для них указано общее место для отдыха — точка с типом rest_place.

Первый курьер выезжает на маршрут в 7:00 и в 9:09 приезжает на место отдыха, отдыхает 30 минут и продолжает маршрут. Второй курьер выезжает на маршрут в 8:00 и успевает развезти все свои заказы до 12 часов без перерыва на отдых.

Пример ExcelЗапрос API (JSON)Ответ API

Типы перерывов

На начало перерыва, заданное с помощью окон или параметра desired_work_duration, влияют дополнительные временные интервалы. Например, курьер должен отработать несколько часов прежде, чем сможет отдохнуть. Чтобы учесть дополнительное время, укажите значение параметра break_type.

Значение

Описание

from_start

Время работы от начала маршрута. Включает время движения, ожидания и сервисное время на заказах и складах.

Наличие и продолжительность других перерывов не имеют значения.

from_last

Значение по умолчанию.

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

travel

Время движения и ожидания от начала маршрута. Сервисное время при этом не учитывается.

continuous

Время движения и ожидания от момента завершения предыдущего заказа. Сервисное время при этом не учитывается.

driving

Время движения от начала маршрута. Время ожидания и сервисное время не учитывается.

exact

Время начала перерыва. Перерыв не может быть повторяющимся.

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

Примечание

Для перерывов типа exact необходимо соблюдать порядок выполнения. Например, если нужно запланировать два перерыва: с 12:00 до 12:30 и с 10:00 до 10:30, в расписании они должны быть указаны в следующем порядке:

  • exact = 10:00 - 10:30;
  • exact = 12:00 - 12:30.

Значения break_type и penalty могут задаваться в шаблонах расписаний перерывов (rest_schedule.break_type, rest_schedule.penalty), а также в настройках каждого перерыва (rest_schedule.breaks.break_type, rest_schedule.breaks.penalty).

Если в шаблонах расписаний для перерыва задан break_type, то в настройках этого перерыва значение break_type:

  • должно быть таким же;
  • может не указываться. Тогда к перерыву применятся настройки из шаблонов расписаний.

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

Пример

Курьер за смену c 09:00 до 17:00 должен доставить 12 заказов. Для него предусмотрено 2 перерыва.

Первый перерыв запланирован с 11:00 до 12:00 часов. Он начался через 2 часа после начала работы курьера, что соответствует жесткому временному окну hard_time_range = 1:30 - 3:30. Первый перерыв спланирован от начала смены.

Второй перерыв запланирован после первого с 13:30 до 14:30, что также укладывается в ограничения жесткого временного окна hard_time_range = 1:00 - 2:00.

При этом интервал рабочего времени от первого до второго перерыва соответствует желаемому (desired_work_duration = 1:30) и составляет 1 час 30 минут.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Перерывы, связанные с заказами

Параметр

Значение

Пример

before_first

Перерыв перед началом первого заказа. Задается в секундах.

"before_first": 900

Перерыв перед первым заказом будет длиться 15 минут (900 секунд).

after_last

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

"after_last": 1200

Перерыв после последнего заказа будет длиться 20 минут (1200 секунд).

Данные типы перерывов считаются повторяющимися (repeatable). Если указать такой тип один раз, он будет автоматически добавляться в каждый рейс.

Пример

В маршруте запланированы две смены: утренняя и вечерняя. Автомобиль курьера оборудован изотермическим фургоном. По вечерам курьер развозит заказы, которые требуют соблюдения температурного режима.

Курьер проверяет температуру в кузове дважды в день. В сменах запланированы следующие перерывы:

  • перед первым заказом — 15 минут (before_first = 900);
  • обед после двух часов работы (from_start = 02:00 - 02:15);
  • после последнего заказа — 15 минут (after_last = 900).

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Использование разных типов перерывов

В одном расписании можно задать разные типы перерывов (break_type). Наличие и продолжительность других перерывов не влияют на перерывы, запланированные от начала маршрута (from_start) и в определенное время (exact).

Пример

Курьер должен доставить 11 заказов. Для него предусмотрено 3 перерыва:

  • первый длится 15 минут и начинается после двух часов работы (from_last = 02:00 - 02:15);
  • второй начинается после четырех часов работы (from_start = 04:00 - 04:15);
  • третий — фиксированный перерыв с 14:00 до 14:20 (exact = 14:00 - 14:20).

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Разделяемые перерывы

При необходимости вы можете разделить перерыв на несколько частей. Например, если между заказами перерыв целиком не помещается. Для этого в расписании у перерыва breaks укажите параметр can_be_split = true.

Вы можете указать дополнительные параметры для разделяемого перерыва:

Параметр

Значение

Пример

max_split_parts

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

"max_split_parts": 5

Перерыв можно разбить на 5 частей.

min_split_part_duration_s

Минимальное время, на которое можно разбить часть перерыва. Задается в секундах. По умолчанию это 10 минут.

"min_split_part_duration_s": 1200

Часть перерыва можно разбить минимум на 20 минут (1200 секунд).

min_first_split_part_duration_s

Параметр устанавливает минимальное время для первой части перерыва. Задается в секундах. По умолчанию это 1/3 от общей длительности перерыва.

"min_first_split_part_duration_s": 1800

Первая часть перерыва должна длиться не меньше 30 минут (1800 секунд).

min_last_split_part_duration_s

Минимальное время для последней части перерыва. Задается в секундах. По умолчанию это 2/3 от общей длительности перерыва.

"min_last_split_part_duration_s": 2400

Последняя часть перерыва должна длиться не меньше 40 минут (2400 секунд).

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

Максимальное количество частей указано в параметре max_split_parts. Их длительность должна соответствовать условиям:

  • первая часть — не меньше min_first_split_part_duration_s;
  • последняя — не меньше min_last_split_part_duration_s;
  • каждая — не меньше min_split_part_duration_s.

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

Пример 1

Для курьера предусмотрен 1 перерыв продолжительностью 2 часа rest_duration_s = 7200. У нескольких заказов установлены узкие временные окна, поэтому время ожидания перед ними можно заполнить перерывами. Так как между заказами перерыв целиком не помещается, он разбивается на три части.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пример 2

Общая продолжительность перерыва rest_duration_s составляет 2 часа (rest_duration_s = 7200). Он делится на две части (max_split_parts = 2). При этом:

  • min_split_part_duration_s = 2400 (40 минут)
  • min_first_split_part_duration_s = 4800 (1 час 20 минут)
  • min_last_split_part_duration_s = 2400 (40 минут)

От общего перерыва отделяется первая часть — 1 час 20 минут. Остается 40 минут исходного перерыва. От них отделяется вторая часть — 40 минут.

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

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пример 3

Те же условия, что в примере 2, но длительность второй части перерыва увеличена на 5 минут (min_last_split_part_duration_s = 2700).

От общего перерыва отделяется первая часть — 1 час 20 минут. Остается 40 минут исходного перерыва. Вторая часть должна отделяться от оставшихся 40 минут, но min_last_split_part_duration_s = 2700 (45 минут). Временной остаток не может быть отрицательным, поэтому продолжительность второй части будет увеличена до 45 минут, чтобы минимально удовлетворить условию min_last_split_part_duration_s = 2700.

В результате сумма частей перерыва превысит изначально заданную продолжительность на 5 минут и составит 2 часа 5 минут (7500 секунд).

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Перерывы во время обслуживания заказов

Параметр

Значение

Пример

can_rest_during_service

Параметр перерыва. Определяет, может ли этот перерыв пересекаться с сервисным временем заказа или склада. По умолчанию true.

"breaks": [
  {
    "can_rest_during_service": true,
    "rest_duration_s": 3000,
    "work_time_range_from_start": "1:30 - 2:00"
  },
  ...
]    

can_have_rest_during_service

Параметр заказа или склада. Определяет, может ли перерыв пересекаться с сервисным временем этого заказа или склада. По умолчанию true.

"locations": [
  {
    "id": 123,
    "can_have_rest_during_service": true,    
    "service_duration_s": 600,  
    ...
  }
]

По умолчанию перерывы могут пересекаться с сервисным временем заказа или склада. В маршруте такие перерывы указываются перед заказом или складом. Время начала arrival_time_s и окончания departure_time_s перерыва совпадают с arrival_time_s и departure_time_s заказа или склада. Внутри этого общего интервала длительность сервисного времени определяется параметром service_duration_s. В ответе для такого заказа или склада добавляется поле is_after_service_work_break = true, означающее, что обслуживание начинается после перерыва.

При can_rest_during_service = true перерыв может быть спланирован как первая точка в смене. Для обычных перерывов, не пересекающихся с сервисным временем, такое невозможно.

Чтобы запретить пересечение перерыва с сервисным временем, нужно для заказа или склада указать can_have_rest_during_service = false, а для перерыва — can_rest_during_service = false.

Пример 1

Перерыв длительностью 50 минут должен быть запланирован через 1,5 часа после начала маршрута. В маршруте 2 заказа, у которых время обслуживания 1 час и параметр can_have_rest_during_service = true. В результате перерыв пересекается со временем обслуживания первого заказа, на который курьер приезжает через 52 минуты после начала маршрута и уезжает через 2 часа 20 минут.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пример 2

То же, что в примере 1, но у заказов параметр can_have_rest_during_service = false. В результате перерыв запланирован в точке первого заказа, но после обслуживания заказа, позже времени — через 1 час 52 минуты после начала маршрута.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Цепочки перерывов

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

Пример

Пояснение

Возможность задать

1 цепочка: отдыхать 15 минут через каждые 3 часа движения.

2 цепочка: отдыхать 6 часов через 8 часов после начала смены.

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

1 цепочка: отдыхать 15 минут через каждые 3 часа движения.

2 цепочка: отдыхать 6 часов через каждые 8 часов движения.

Начало перерыва в цепочке 2 зависит от расписания движения и отдыха в цепочке 1.

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

Если маршрут заканчивается до наступления остановки (например, маршрут выполнен за 3 часа, а остановка запланирована через 4), то все невыполненные остановки сбрасываются.

Пример

Маршрут построен с получасовыми перерывами на отдых через 4–4,5 часа работы, а через 15 часов после начала маршрута запланирован перерыв на сон. В результате алгоритм запланировал перерыв на сон через 1,5 часа после перерыва на отдых.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Штрафы

В некоторых случаях сервис может планировать маршруты с нарушением окна отдыха. Чтобы начислять штрафы за эти нарушения, используйте поля penalty.late и penalty.early. Если штраф выше, чем полученная от нарушения окна экономия, то маршрут будет запланирован без нарушений.

Параметр

Значение

Пример

penalty.early.fixed

Штраф за факт раннего начала перерыва.

"penalty": {"early": {"fixed": 1000}}

Устанавливает штраф 1000 за факт раннего перерыва.

penalty.early.minute

Штраф за каждую минуту раннего перерыва.

"penalty": {"early": {"minute": 17}}

Устанавливает штраф 17 за каждую минуту раннего перерыва.

penalty.late.fixed

Штраф за факт позднего перерыва.

"penalty": {"late": {"fixed": 1000}}

Устанавливает штраф 1000 за факт позднего перерыва.

penalty.late.minute

Штраф за каждую минуту позднего перерыва.

"penalty": {"late": {"minute": 17}}

Устанавливает штраф 17 за каждую минуту позднего перерыва.

Условия повтора

Параметр

Значение

Пример

repeatable

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

"repeatable": true

Перерыв будет повторяться до конца смены.

Пример 1

Курьер везет заказы в соседний город и нуждается в периодическом отдыхе. С помощью условия повтора repeatable заданы перерывы через каждые 60-80 минут маршрута (travel_time_range). В результате алгоритм запланировал два перерыва.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пример 2

Как в примере 1, но маршрут длится несколько дней, и перерывы задаются на сон каждые 12 часов:

  • используется условие повтора repeatable;

  • минимальная и максимальная продолжительность маршрута до отдыха travel_time_range: "12:00-12:00".

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пример 3

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

В результате запланированы три перерыва:

  • два перерыва по 30 минут с помощью условия повтора repeatable через каждые 2 часа маршрута (hard_time_range);

  • один часовой перерыв на обед.

Запрос API (JSON)Ответ APIОткрыть на карте

Снимаются с поддержки

Условия объединения перерывов

Параметр

Значение

Пример

before_first_location

Возможность объединения перерыва с другими перерывами до первого заказа. Перерыв можно объединять только с теми перерывами, типы которых указаны в merge_with_types.

"before_first_location": true

Перерыв будет объединен с последним перерывом перед первой локацией, где тип перерыва указан в  merge_with_types. Если такого перерыва нет, то этот перерыв будет прямо перед первой локацией. Все такие перерывы должны быть в отдельной цепочке.

after_last_location

Возможность объединения перерыва с другими перерывами после последнего заказа. Перерыв можно объединять только с теми перерывами, типы которых указаны в merge_with_types.

"after_last_location": true

Перерыв будет объединен с первым перерывом после последней локации, где тип перерыва указан в merge_with_types. Если такого перерыва нет, то этот перерыв будет сразу после последней локации. Все такие перерывы должны быть в отдельной цепочке.

type

Тип перерыва.

"type": "Обед"

Тип этого перерыва — «обед».

merge_with_types

Параметр устанавливает, с какими типами перерывов можно объединить указанный перерыв. Его можно использовать только в сочетании с  after_last_location или before_first_location.

"merge_with_types": ["Обед", "Сон"]

Этот перерыв можно объединить с перерывом на обед или сон.

Условия планирования перерыва

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

Параметр

Значение

Пример

necessary_route_duration_s

Время с начала маршрута, после которого перерыв обязателен. Задается в секундах.

"necessary_route_duration_s": 14400

Обязательно начать перерыв, когда с начала маршрута пройдет 4 часа (14400 секунд).

route_duration_s

Параметр устанавливает минимальное время работы, при котором перерыв должен быть запланирован. Если общее время работы меньше, то перерыв не будет запланирован. Задается в секундах.

"route_duration_s": 14400

Начать перерыв, только если маршрут длится как минимум 4 часа (14400 секунд).

Условия начала перерыва

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

Параметр

Значение

Пример

work_time_range_from_start

Время работы от начала маршрута. Включает время движения, ожидания и сервисное время на заказах и складах.

Наличие и продолжительность других перерывов не имеют значения.

work_time_range_from_start = 01:00:00-03:00:00

Начать перерыв не раньше, чем через 1 час, и не позже, чем через 3 часа после начала маршрута.

work_time_range_till_rest

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

work_time_range_till_rest = 02:00:00-04:00:00

Начать перерыв не раньше, чем через 2 часа, и не позже, чем через 4 часа после начала смены (включая приезд на склад, сервисное время, периоды движения и ожидания).

travel_time_range

Время движения и ожидания от начала маршрута. Сервисное время при этом не учитывается.

travel_time_range = 01:00:00-03:00:00

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

continuous_travel_time_range

Время движения и ожидания от момента завершения предыдущего заказа. Сервисное время при этом не учитывается.

continuous_travel_time_range = 02:00:00-03:00:00

Начать перерыв не раньше, чем через 2 часа, и не позже, чем через 3 часа непрерывного движения.

driving_time_range

Время движения от начала маршрута. Время ожидания и сервисное время не учитывается.

driving_time_range = 01:00:00-03:00:00

Начать перерыв не раньше, чем через 1 час, и не позже, чем через 3 часа от начала движения.

exact_time_range

Время начала перерыва. Перерыв не может быть повторяющимся.

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

Перерыв не начнется, если маршрут закончится раньше времени начала перерыва.

exact_time_range = 17:00:00-20:00:00

Начать перерыв в диапазоне с 17:00 до 20:00.

Пример 1

В этом примере построен маршрут с перерывом на обед через 4–5 часов работы. В результате алгоритм планирует остановку на обед для выполняющего доставку курьера.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пример 2

В этом примере построен маршрут между Москвой и Санкт-Петербургом с первым перерывом через 4–4,5 часа, и затем с перерывами каждые 2 часа. Алгоритм выделил два перерыва.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пример 3

Для двух курьеров задан перерыв с условием work_time_range_from_start через 3-4 часа после начала работы, но только если общая продолжительность route_duration_s минимум 6 часов. Первый курьер заканчивает работу за 5 часов, поэтому работает без отдыха. Второй курьер работает более 6 часов, поэтому получает один перерыв.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пример 4

Задаются перерывы длительностью 10 минут на каждые 55-60 минут непрерывного движения continuous_travel_time_range. В результате запланирован перерыв на единственном интервале между точками, где время движения более 55 минут.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Пример 5

Для курьеров запланировано два перерыва с условием начала перерыва work_time_range_till_rest через 2-3 часа от последнего перерыва или от начала работы, если это первый перерыв.

  • первый перерыв — 20 минут.

  • второй перерыв — 30 минут.

Первый курьер заканчивает работу раньше и получает только первый перерыв. Второй курьер работает дольше и получает оба перерыва.

Пример ExcelЗапрос API (JSON)Ответ APIОткрыть на карте

Написать в службу поддержки