Настройка задач

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

  • Установить целевой временной интервал для задачи по доставке : установите временной интервал для выполнения задачи.

  • Настройте видимость задач : настройте видимость действий по задачам для отображения клиентам или операторам автопарка.

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

Установите целевое временное окно

Целевым временным окном является TimeWindow , в течение которого задача должна быть завершена. Например, если вы сообщаете получателям доставки окно времени доставки, вы можете использовать целевое окно времени задачи для захвата этого временного окна и создания оповещений или использовать его для анализа эффективности прошлых поездок.

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

В следующих примерах показано, как установить временное окно с помощью библиотеки Java gRPC или как выполнить запрос HTTP REST к UpdateTask . Вы также можете задать это поле во время создания задачи.

gRPC

  static final String PROJECT_ID = "my-delivery-co-gcp-project";
  static final String TASK_ID = "task-8241890";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Task settings
  String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
  Task task = Task.newBuilder()
    .setName(taskName)
    .setTargetTimeWindow(
      TimeWindow.newBuilder()
        .setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
        .setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
    .build();

  // Task request
  UpdateTaskRequest updateTaskRequest =
    UpdateTaskRequest.newBuilder()  // No need for the header
        .setTask(task)
        .setUpdateMask(FieldMask.newBuilder().addPaths("targetTimeWindow"))
        .build();

  try {
    Task updatedTask = deliveryService.updateTask(updateTaskRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case NOT_FOUND:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }

ОТДЫХ

Чтобы установить временное окно задачи с помощью HTTP, вызовите PATCH и используйте updateMask для обновления параметра targetTimeWindow :

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=targetTimeWindow

Здесь <id> — уникальный идентификатор задачи. Заголовок запроса должен содержать поле Authorization со значением Bearer <token> , где <token> выдается вашим сервером в соответствии с рекомендациями, описанными в разделе Роли учетной записи службы и веб-токены JSON .

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
  curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=targetTimeWindow" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
    "targetTimeWindow": {
      "startTime": "2023-03-29T21:00:00Z",
      "endTime": "2023-03-29T23:00:00Z"
    }
  }
  EOM

Настройте видимость задач

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

В этом разделе описаны правила видимости отслеживаемых объектов на карте. Эти правила применяются к двум категориям объектов:

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

Правила видимости маркеров местоположения

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

Правила видимости данных задачи

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

Следующие задачи не могут быть настроены:

  • Запланированные остановки
  • Задачи недоступности
  • Неактивные задачи автомобиля

Правила видимости задач недоступности

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

Видимость активных задач автомобиля

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

Вы можете настроить конфигурацию видимости для каждой задачи, задав TaskTrackingViewConfig для задачи при создании или обновлении задачи в Fleet Engine. Это создает правила для доступности отдельных элементов данных.

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

Поля задач автомобиля для правил видимости
  • Полилинии маршрута
  • Расчетное время до прибытия
  • Примерное время выполнения задачи
  • Оставшееся расстояние до задачи
  • Оставшееся количество стопов
  • Местоположение автомобиля

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

Параметры видимости
  • Оставшееся количество стопов
  • Продолжительность до расчетного времени прибытия
  • Оставшийся пробег
  • Всегда виден
  • Никогда не виден

Полилинии маршрута и правила видимости местоположения транспортных средств

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

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

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

В этом сценарии и полилиния, и местоположение транспортного средства задают одни и те же параметры, в том числе:

  • оставшийся счетчик стопов
  • продолжительность до ETA
  • оставшееся расстояние поездки

Для соблюдения правил значение видимости полилиний маршрута должно быть меньше или равно значению, установленному для видимости автомобиля. В этом примере оставшийся порог остановки для полилинии установлен на 3, что меньше значения 5, указанного для транспортного средства. Это означает, что когда отслеживаемое путешествие достигает 5 остановок от места выполнения задачи, транспортное средство появляется, но маршрут для этого транспортного средства не отображается, пока поездка не пройдет 3 остановки.

```js
"taskTrackingViewConfig": {
  "routePolylinePointsVisibility": {
    "remainingStopCountThreshold": 3
  },
  "vehicleLocationVisibility": {
    "remainingStopCountThreshold": 5
  },
}
```

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

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

  • Всегда видимая : полилиния маршрута должна использовать параметр всегда видимой видимости, если местоположение транспортного средства также обеспечивает такой же параметр всегда видимой видимости.
  • Никогда не видно : полилиния маршрута должна использовать опцию никогда не видимой видимости, если для местоположения транспортного средства используется опция никогда не видимой видимости.

Ниже приводится пример:

  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "vehicleLocationVisibility": {
      "remainingDrivingDistanceMetersThreshold": 3000
    },
  }

В этом примере местоположение транспортного средства видно только в том случае, если количество оставшихся остановок составляет не менее 3 И оставшееся расстояние поездки составляет не менее 3000 метров.

Пример настройки видимости задачи

В следующих примерах показано, как поставить задачу со следующими правилами видимости:

  • Показывать полилинии маршрута, если транспортное средство находится в пределах 3 остановок.
  • Покажите расчетное время прибытия, если оставшееся расстояние меньше 5000 метров.
  • Никогда не показывайте оставшееся количество остановок.
  • Каждое другое поле сохраняет видимость по умолчанию и отображается, когда транспортное средство находится в пределах 5 остановок от задачи.

См. TaskTrackingViewConfig для gRPC или REST .

gRPC

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TASK_ID = "task-8241890";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Task settings
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
Task task = Task.newBuilder()
  .setName(taskName)
  .setTaskTrackingViewConfig(
    TaskTrackingViewConfig.newBuilder()
      .setRoutePolylinePointsVisibility(
        VisibilityOption.newBuilder().setRemainingStopCountThreshold(3))
      .setEstimatedArrivalTimeVisibility(
        VisibilityOption.newBuilder().remainingDrivingDistanceMetersThreshold(5000))
      .setRemainingStopCountVisibility(
        VisibilityOption.newBuilder().setNever(true)))
  .build();

// Task request
UpdateTaskRequest updateTaskRequest =
  UpdateTaskRequest.newBuilder()  // No need for the header
      .setTask(task)
      .setUpdateMask(FieldMask.newBuilder().addPaths("taskTrackingViewConfig"))
      .build();

try {
  Task updatedTask = deliveryService.updateTask(updateTaskRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
      case NOT_FOUND:
        break;
      case PERMISSION_DENIED:
        break;
  }
  return;
}

ОТДЫХ

Чтобы настроить окно конфигурации представления отслеживания задач с помощью HTTP, вызовите PATCH и используйте updateMask для обновления параметра taskTrackingViewConfig :

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskTrackingViewConfig

Например:

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=taskTrackingViewConfig" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
{
  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "estimatedArrivalTimeVisibility": {
      "remainingDrivingDistanceMetersThreshold": 5000
    },
    "remainingStopCountVisibility": {
      "never": true
    }
  }
}
EOM

Что дальше