할 일 찾기

이 문서에서는 서버 또는 브라우저에서 태스크 정보를 찾는 방법을 설명합니다. Fleet Engine은 다음 두 가지 작업 찾기 방법을 지원합니다.

  • 할 일 조회: 다음 ID로 할 일을 조회할 수 있습니다.

    • 태스크 ID: 태스크 데이터의 전체 보기에 액세스할 수 있는 차량 운영자와 같은 사용자가 사용합니다.
    • 추적 ID: 클라이언트 소프트웨어에서 최종 사용자에게 제한된 정보를 제공하는 데 사용됩니다(예: 상품이 집에 도착할 예정인 경우).

    작업 ID와 작업 추적 ID의 차이를 이해해야 합니다. 둘은 다릅니다. 예약된 작업 가이드의 기본 작업 필드를 참고하세요.

  • 할 일 목록: 신뢰할 수 있는 사용자만 사용할 수 있는 할 일의 광범위한 액세스 권한입니다.

할 일 조회하기

이 섹션에서는 태스크 ID 또는 추적 ID로 태스크를 조회하는 방법을 설명합니다. 다음과 같은 요구사항이 있습니다.

  • 추적 ID를 통한 조회는 추적된 객체의 공개 상태 규칙에 명시된 공개 상태 규칙을 준수해야 합니다.

  • 가능한 한 좁은 토큰을 사용하여 보안 위험을 제한합니다. 예를 들어 배송 소비자 토큰을 사용하는 경우 모든 호출은 배송자 또는 배송물 수신자와 같이 해당 최종 사용자와 관련된 정보만 반환합니다. Fleet Engine은 응답에서 다른 모든 정보를 삭제합니다. 토큰에 관한 자세한 내용은 JSON 웹 토큰을 참고하세요.

태스크 ID로 태스크 조회

gRPC 또는 REST를 사용하여 서버 환경에서 작업 ID로 작업을 조회할 수 있습니다. 다음 예에서는 Java gRPC 라이브러리 또는 REST 요청을 사용하여 GetTask를 사용하는 방법을 보여줍니다.

gRPC

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

 DeliveryServiceBlockingStub deliveryService =
   DeliveryServiceGrpc.newBlockingStub(channel);

 // Task request
 String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
 GetTaskRequest getTaskRequest = GetTaskRequest.newBuilder()  // No need for the header
     .setName(taskName)
     .build();

 try {
   Task task = deliveryService.getTask(getTaskRequest);
 } catch (StatusRuntimeException e) {
   Status s = e.getStatus();
   switch (s.getCode()) {
      case NOT_FOUND:
        break;

      case PERMISSION_DENIED:
        break;
   }
   return;
 }

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<taskId>

  • <id>는 태스크의 고유 식별자입니다.
  • <taskId>는 조회할 작업의 ID입니다.
  • 요청 헤더에는 값이 Bearer <token>Authorization 필드가 포함되어야 합니다. 여기서 <token>서비스 계정 역할JSON 웹 토큰에 설명된 가이드라인에 따라 서버에서 발급합니다.
  • 요청 본문은 비어 있어야 합니다.
  • 조회가 성공하면 응답 본문에 할 일 항목 엔터티가 포함됩니다.

curl 명령어 예시:

    # Set JWT, PROJECT_ID, and TASK_ID in the local environment
    curl -H "Authorization: Bearer ${JWT}" \
      "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}"

추적 ID로 할 일 조회

다음 예에서는 gRPC 또는 GetTaskTrackingInfo에 대한 HTTP REST 호출을 사용하여 배송 추적 ID로 태스크를 조회하는 방법을 보여줍니다.

gRPC

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TRACKING_ID = "TID-7449w087464x5";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Tasks request
String parent = "providers/" + PROJECT_ID;
GetTaskTrackingInfoRequest getTaskTrackingInfoRequest = GetTaskTrackingInfoRequest.newBuilder()  // No need for the header
    .setParent(parent)
    .setTrackingId(TRACKING_ID)
    .build();

try {
  TaskTrackingInfo taskTrackingInfo = deliveryService.getTaskTrackingInfo(getTaskTrackingInfoRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case NOT_FOUND:
       break;

     case PERMISSION_DENIED:
       break;
  }
  return;
}

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/taskTrackingInfo/<tracking_id>

  • <tracking_id>는 작업과 연결된 추적 ID입니다.

  • 요청 헤더에는 값이 Bearer <token>Authorization 필드가 있어야 하며, 여기서 <token>은 올바른 서비스 계정 역할을 보유합니다. 서비스 계정 역할을 참고하세요.

  • 조회가 성공하면 응답 본문에 taskTrackingInfo 항목이 포함됩니다.

curl 명령어 예시:

# Set JWT, PROJECT_ID, and TRACKING_ID in the local environment
curl -H "Authorization: Bearer ${JWT}" \
  "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/taskTrackingInfo/${TRACKING_ID}"

태스크 표시

할 일 목록을 표시하려면 할 일에 대한 광범위한 액세스 권한이 필요합니다. 할 일 목록은 신뢰할 수 있는 사용자만 사용할 수 있습니다. 목록 작업을 요청할 때는 Delivery Fleet Reader 또는 Delivery Admin 인증 토큰을 사용하세요. 자세한 내용은 서비스 계정 역할을 참고하세요.

목록 페이지로 나누기

할 일 목록은 페이지로 나뉩니다. 페이지 크기는 list tasks 요청에서 지정할 수 있습니다. 페이지 크기가 지정된 경우 반환된 태스크 수는 지정된 페이지 크기를 초과하지 않습니다. 페이지 크기가 없으면 적절한 기본값이 사용됩니다. 요청된 페이지 크기가 내부 최대값을 초과하면 내부 최대값이 사용됩니다.

할 일 목록에는 결과의 다음 페이지를 읽기 위한 토큰이 포함될 수 있습니다. 다음 페이지를 가져오려면 페이지 토큰과 함께 동일한 요청을 다시 실행합니다. 반환된 페이지 토큰이 비어 있으면 더 이상 검색할 작업이 없습니다.

할 일 나열 시 필드

Fleet Engine은 작업을 나열할 때 다음 필드를 삭제합니다.

  • VehicleStop.planned_location
  • VehicleStop.state
  • VehicleStop.TaskInfo.taskId

Google API 개선 제안서에 따라 다음 필드 형식을 사용하세요.

입력란 유형 형식
타임스탬프 RFC-3339 task_outcome_time = 2022-03-01T11:30:00-08:00
기간 초 수 뒤에 s가 표시됨 task_duration = 120s
열거형 문자열 state = CLOSED AND type = PICKUP
위치 point.latitudepoint.longitude planned_location.point.latitude > 36.1 AND planned_location.point.longitude < -122.0

나열된 작업 필터링

나열된 작업을 대부분의 작업 속성으로 필터링할 수 있습니다. 필터 쿼리 문법은 AIP-160을 참고하세요. 필터 쿼리를 지정하지 않으면 모든 작업이 표시됩니다.

다음 표에는 필터링에 사용할 수 있는 유효한 작업 속성이 나와 있습니다.

목록 필터링을 위한 태스크 속성
  • type
  • attributes
  • tracking_id
  • delivery_vehicle_id
  • state
  • planned_location
  • task_duration
  • task_duration_outcome
  • task_outcome
  • task_outcome_location
  • task_outcome_time

필터 쿼리 연산자의 전체 목록은 AIP-160을 참고하세요.

할 일 예시 나열

다음 예에서는 Java gRPC 라이브러리ListTasks에 대한 HTTP REST 호출을 모두 사용하여 deliveryVehicleId 및 태스크 속성의 태스크를 나열하는 방법을 보여줍니다.

성공적인 응답이라도 여전히 비어 있을 수 있습니다. 빈 응답은 제공된 deliveryVehicleId와 연결된 작업이 없음을 나타냅니다.

gRPC

 static final String PROJECT_ID = "my-delivery-co-gcp-project";
 static final String TRACKING_ID = "TID-7449w087464x5";

 DeliveryServiceBlockingStub deliveryService =
   DeliveryServiceGrpc.newBlockingStub(channel);

 // Tasks request
 String parent = "providers/" + PROJECT_ID;
 ListTasksRequest listTasksRequest = ListTasksRequest.newBuilder()  // No need for the header
     .setParent(parent)
     .setFilter("delivery_vehicle_id = 123 AND attributes.foo = true")
     .build();

 try {
   ListTasksResponse listTasksResponse = deliveryService.listTasks(listTasksRequest);
 } catch (StatusRuntimeException e) {
   Status s = e.getStatus();
   switch (s.getCode()) {
      case NOT_FOUND:
        break;

      case PERMISSION_DENIED:
        break;
   }
   return;
 }

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks

나열된 할 일 목록에 필터를 적용하려면 URL 이스케이프된 필터 쿼리를 값으로 포함하는 'filter' URL 매개변수를 포함합니다.

요청 헤더에는 값이 Bearer <token>Authorization 필드가 있어야 하며, 여기서 <token>은 올바른 서비스 계정 역할을 보유합니다. 서비스 계정 역할을 참고하세요.

조회가 성공하면 다음과 같은 구조의 응답 본문이 제공됩니다.

    // JSON representation
    {
      "tasks": [
        {
          object (Task)
        }
      ],
      "nextPageToken": string,
      "totalSize": integer
    }

curl 명령어 예시:

 # Set JWT, PROJECT_ID, and VEHICLE_ID in the local environment
 curl -H "Authorization: Bearer ${JWT}" \
   "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?filter=state%20%3D%20OPEN%20AND%20delivery_vehicle_id%20%3D%20${VEHICLE_ID}"

다음 단계