태스크 구성

이 문서에서는 태스크를 만들고 사용하는 방법을 알고 있다고 가정합니다. 다음과 같은 방식으로 배송 작업을 구성하는 방법에 관한 구체적인 예시를 제공합니다.

  • 배송 작업의 타겟 기간 설정: 작업이 완료될 기간을 설정합니다.

  • 할 일 공개 상태 맞춤설정: 다음에 대한 작업 활동의 공개 상태를 맞춤설정합니다. 고객에게 직접 표시할 수 있습니다

배송 작업 필드에 관한 자세한 내용은 배송 작업 만들기를 참고하세요. 기존 작업에 대한 추가 정보를 업데이트할 때 입력한 입력란 외에 작업과 관련된 식별자를 포함해야 합니다. 작업을 업데이트할 수 있습니다

타겟 기간 설정

타겟 시간 간격은 작업이 완료되어야 하는 TimeWindow입니다. 예를 들어 배송 대상자에게 배송 기간을 전달하는 경우 태스크 타겟 시간대를 사용하여 이 기간을 캡처하고 알림을 생성하거나 이를 사용하여 이전 이동 실적을 분석할 수 있습니다.

타겟 시간 범위는 시작 시간과 종료 시간으로 구성되며 모든 작업 유형에 설정할 수 있습니다. 목표 기간은 라우팅에 영향을 미치지 않습니다. 확인할 수 있습니다

다음 예에서는 Java gRPC를 사용하여 기간을 설정하는 방법을 보여줍니다. 라이브러리 또는 UpdateTask에 대한 HTTP 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)
    .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;
  }

REST

HTTP를 사용하여 태스크 시간 창을 설정하려면 PATCH를 호출하고 updateMask를 사용하여 targetTimeWindow 매개변수를 업데이트합니다.

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

여기서 <id>는 태스크의 고유 식별자입니다. 요청 헤더에는 값이 Bearer <token>Authorization 필드가 포함되어야 합니다. 여기서 <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곳 이내에 있을 때 표시됩니다. 작업이 완료되거나 취소되면 공개 상태가 종료됩니다.

Fleet Engine 내에서 태스크를 만들거나 업데이트할 때 태스크에 TaskTrackingViewConfig를 설정하여 태스크별로 공개 상태 구성을 맞춤설정할 수 있습니다. 이렇게 하면 개별 데이터 요소를 사용할 수 있는 규칙이 생성됩니다.

다음 표는 공개 상태 규칙을 적용할 수 있는 필드를 보여줍니다.

공개 상태 규칙의 차량 작업 필드
  • 다중선 경로
  • 도착까지의 예상 시간
  • 예상 작업 완료 시간
  • 할 일까지 남은 운전 거리
  • 남은 정류장 수
  • 차량 위치

다음 표에는 위에 나열된 입력란에 사용할 수 있는 공개 옵션이 나와 있습니다.

공개 상태 옵션
  • 남은 정류장 수
  • 예상 도착 시간까지의 시간
  • 남은 운전 거리
  • 항상 표시
  • 표시되지 않음

경로 다중선 및 차량 위치 공개 상태 규칙

추적된 경로의 경우 경로 폴리라인의 표시 상태는 차량의 표시 상태에 따라 달라집니다. 활성 경로에 경로 다중선이 표시되는 경우 차량이 표시되지 않는 경우에도 차량 위치는 도형을 사용하여 볼 수 있습니다. 따라서 경로 다중선 공개 상태는 차량 공개 상태만큼 제한적이거나 더 제한적이어야 합니다.

올바른 경로 다중선 / 차량 위치를 제공하려면 다음 규칙을 따르세요. 합니다.

경로 다중선과 차량 위치는 동일한 공개 상태 옵션을 지정

이 시나리오에서는 다중선과 차량 위치가 동일하게 설정됩니다. 다음과 같은 옵션이 있습니다.

  • 남은 정류장 수
  • 도착예정시간까지 남은 시간
  • 남은 운전 거리

규칙을 준수하려면 경로 다중선 가시성의 값이 더 작아야 합니다. 이보다 크거나 같음 차량 공개 상태에 설정된 값이어야 합니다. 이 예에서 폴리라인의 나머지 중지 임계값은 3으로 설정되며, 차량에 지정된 5 값입니다. 즉, 추적된 이동 경로가 태스크 위치에서 5정거장 떨어진 곳에 도달하면 차량이 표시되지만, 이동 경로가 3정거장 떨어진 곳에 도달할 때까지는 해당 차량의 경로가 표시되지 않습니다.

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

경로 다중선과 차량 위치에 따라 다른 공개 상태 옵션이 지정됨

경로 다중선과 차량 위치에 서로 다른 공개 상태 옵션이 있는 경우 차량 위치는 공개 상태 옵션을 둘 다 설정한 경우에만 표시됩니다. 고객 만족도를 높일 수 있습니다 다시 말하지만, 다중선 공개 상태에는 공개 상태 규칙이 적용됩니다. 다음을 수행합니다.

  • 항상 표시: 차량 위치에서도 동일한 항상 표시 가시성 옵션을 제공하는 경우 경로 다중선은 항상 표시 가시성 옵션을 사용해야 합니다.
  • 표시 안함: 경로 다중선은 표시 안함 가시성을 사용해야 합니다. 차량 위치가 표시하지 않음 공개 상태 옵션을 사용하는 경우의 옵션입니다.

예시는 다음과 같습니다.

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

이 예에서 차량 위치는 남은 정류장 수가 3개 이상 AND 남은 운전 거리가 3,000미터 이상인 경우에만 표시됩니다.

작업 공개 상태 맞춤설정의 예

다음 예에서는 다음과 같은 공개 상태 규칙으로 할 일을 설정하는 방법을 보여줍니다.

  • 차량이 3개 정류장 내에 있는 경우 경로 다중선을 표시합니다.
  • 남은 운전 거리가 5,000m 미만인 경우 도착예정시간을 표시합니다.
  • 나머지 정류장 수를 표시하지 않습니다.
  • 서로 다른 필드는 차량이 작업에서 5정류장 이내에 있다는 것을 의미합니다.

gRPC 또는 REST의 경우 TaskTrackingViewConfig를 참고하세요.

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;
}

REST

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

다음 단계