태스크 구성

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

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

  • 할 일 표시 설정: 고객 또는 차량 운영자에게 표시할 할 일 활동의 표시 설정을 맞춤설정합니다.

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

타겟 기간 설정

타겟 시간 범위는 작업이 완료되어야 하는 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를 설정하여 태스크별로 공개 상태 구성을 맞춤설정할 수 있습니다. 이렇게 하면 개별 데이터 요소를 사용할 수 있는 규칙이 생성됩니다.

다음 표에는 공개 상태 규칙을 적용할 수 있는 필드가 나와 있습니다.

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

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

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

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

추적된 경로의 경우 경로 다중선의 표시 상태는 차량의 표시 상태에 따라 달라집니다. 차량이 표시되지 않는 활성 경로에 경로 다중선이 표시되는 경우에도 표시된 다중선의 끝을 통해 차량 위치를 추론할 수 있습니다. 따라서 경로 다중선 공개 상태는 차량 공개 상태만큼 제한적이거나 더 제한적이어야 합니다.

유효한 경로 다중선 / 차량 위치 공개 상태 조합을 제공하려면 다음 규칙을 따르세요.

경로 다중선과 차량 위치가 동일한 가시성 옵션을 지정합니다.

이 시나리오에서는 다중선과 차량 위치 모두 다음과 같은 동일한 옵션을 설정합니다.

  • 남은 정류장 수
  • ETA까지의 기간
  • 남은 운전 거리

규칙을 준수하려면 경로 다중선 표시의 값이 차량 표시로 설정된 값보다 작거나 같아야 합니다. 이 예시에서 다중선의 남은 정지 기준점은 차량에 지정된 5보다 작은 3으로 설정됩니다. 즉, 추적된 이동 경로가 태스크 위치에서 5정거장 떨어진 곳에 도달하면 차량이 표시되지만, 이동 경로가 3정거장 떨어진 곳에 도달할 때까지는 해당 차량의 경로가 표시되지 않습니다.

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

경로 다중선 및 차량 위치가 다른 공개 상태 옵션을 지정합니다.

경로 다중선과 차량 위치의 공개 범위 옵션이 다르면 공개 범위 옵션이 둘 다 충족되는 경우에만 차량 위치가 표시됩니다. 다시 말하지만, 다중선의 공개 상태는 차량의 공개 상태 규칙에 따라 달라집니다.

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

예시는 다음과 같습니다.

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

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

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

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

  • 차량이 정류장 3곳 이내에 있는 경우 경로 다중선을 표시합니다.
  • 남은 운전 거리가 5,000미터 미만인 경우 도착 예정 시간을 표시합니다.
  • 남은 정류장 수를 표시하지 마세요.
  • 다른 모든 필드는 차량이 작업장까지 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

다음 단계