Работа через API с редактированием решения через интерфейс

Мы рекомендуем следующий сценарий работы:

  1. Решение отправляется по API из системы-источника.

  2. Бизнес-пользователь заходит в интерфейс Яндекс Маршрутизации, затем просматривает и/или редактирует решение.

  3. Если решение редактировалось, то пользователь экспортирует полученное решение во внутреннюю систему Маршрутизации. Связь отредактированного решения с исходным будет сохранена автоматически. Для получения скорректированного решения в дальнейшем можно использовать запрос /children с ID оригинальной задачи. Если решение не редактировалось, то пользователь на своей стороне подтверждает, что его устраивает полученное решение.

  4. Итоговое решение скачивается обычным образом через API.

Примечание

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

Дочерние задачи

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

Дочерняя задача может иметь множество своих дочерних задач, то есть также являться родительской задачей.

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

Другой сценарий — сравнение разных решений одной задачи. Можно запросить список дочерних task_id по идентификатору родительского планирования, чтобы сопоставить показатели разных версий и выбрать предпочтительный вариант. Метрики решения доступны в поле result.metrics ответа API.

Как это работает

Внимание

Родительская и дочерняя задачи должны быть получены с одного и того же API-ключа.

Связь устанавливается через query-параметр parent_task_id, в котором передается ID родительского решения при добавлении задачи маршрутизации. (Этот идентификатор возвращается сервисом после постановки родительской задачи.)

Список дочерних задач включает task_id связанных решений и времена их запуска added_at. Получив этот массив по parent_task_id, можно перейти к скачиванию результатов, с которыми вы хотите работать дальше.

Пример

Выполнено построение маршрутов в первом планировании:

Запрос API (JSON)Ответ API

Результат был скорректирован логистом (один заказ перекинут на менее загруженного курьера). Сформировано новое решение:

Запрос API (JSON)Ответ API

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

В списке дочерних задач содержится информация об отредактированном решении:

[
   {
      "task_id": "bd593556-342668cc-db3bcdfe-c98d112c",
      "added_at": 1632906716.03281
   }
]
Написать в службу поддержки