할 일 찾기

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

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

    • 작업 ID: 작업 데이터의 전체 보기에 액세스할 수 있는 Fleet 운영자와 같은 사용자가 사용합니다.
    • 추적 ID: 클라이언트 소프트웨어에서 최종 사용자에게 제한된 정보(예: 택배가 집에 도착할 것으로 예상되는 시간)를 제공하는 데 사용합니다.

    작업 ID와 작업 추적 ID의 차이점을 이해해야 합니다. 두 ID는 동일하지 않습니다. 예약된 작업 가이드의 기본 작업 필드를 참고하세요.

  • 작업 나열: 신뢰할 수 있는 사용자만 사용할 수 있는 광범위한 작업 액세스입니다.

작업 조회

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

작업 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입니다.
  • 요청 헤더에는 Authorization 필드가 Bearer <token> 값과 함께 포함되어야 합니다. 여기서 <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입니다.

  • 요청 헤더에는 Authorization 필드가 값 Bearer <token>과 함께 포함되어야 합니다. 여기서 <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}"

작업 나열

작업 나열 요청은 작업에 대한 광범위한 액세스를 요청합니다. 작업 나열은 신뢰할 수 있는 사용자만 사용할 수 있습니다. 작업 나열 요청을 할 때는 배송 Fleet 리더 또는 배송 관리자 인증 토큰을 사용하세요. 자세한 내용은 서비스 계정 역할을 참고하세요.

목록 페이지로 나누기

작업 목록은 페이지로 나뉩니다. 작업 나열 요청에서 페이지 크기를 지정할 수 있습니다. 페이지 크기가 지정되면 반환되는 작업 수는 지정된 페이지 크기를 초과하지 않습니다. 페이지 크기가 없으면 적절한 기본값이 사용됩니다. 요청된 페이지 크기가 내부 최댓값을 초과하면 내부 최댓값이 사용됩니다.

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

작업 나열 시 필드

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을 참고하세요.

작업 예시 나열

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

성공적인 응답은 비어 있을 수 있습니다. 빈 응답은 제공된 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 매개변수를 포함합니다.

요청 헤더에는 Authorization 필드가 값 Bearer <token>과 함께 포함되어야 합니다. 여기서 <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}"

다음 단계