이 문서에서는 Fleet Engine의 주문형 여행 서비스를 설명합니다. 여기서는 사용자가 Fleet Engine이란 무엇인가요?를 읽고 필요한 특정 Fleet Engine 서비스 기능을 알고 있다고 가정합니다.
이 문서를 읽을 때는 다음 사항에 유의하세요.
- 이동과 이동을 완료하는 운전자 사이의 실제 연결을 모델링하기 위한 방법으로 차량에 이동을 할당합니다. Fleet Engine에서의 차량 작동 방식에 대한 자세한 내용은 차량 소개를 참고하세요.
- 이 문서에서는 주문형 이동에만 적용되는 일부 차량 요소도 설명합니다.
- 주문형 이동을 위한 Fleet Engine은 두 가지 리소스, 즉
Trip
및Vehicle
를 사용합니다. Fleet Engine은 gRPC 서비스와 REST 인터페이스를 모두 제공합니다.
주문형 이동이란 무엇인가요?
Fleet Engine에서 이동은 다양한 운송 목표를 달성할 수 있는 주문형 여정을 나타냅니다. 예를 들면 다음과 같습니다.
- 사람: 한 명 이상의 사람을 승차 위치에서 하차 위치로 이동합니다.
- 식품 및 상품: 지정된 비즈니스 위치에서 하나 이상의 음식 주문 상품을 수령한 후 해당 위치에서 한 명 이상의 수신자에게 주문 상품을 전달합니다.
이동 요소
다음 그림은 할당된 차량 ID, 이동 상태, 이동 경유지 등 이동의 기본 요소를 보여줍니다. 경유지 유형은 승차, 중간, 하차 등 여정의 단계에 따라 다양합니다. 모든 이동에서 중간 목적지 또는 경유지는 선택사항입니다. 이미지 예에서는 차량이 승차 위치에 도착했습니다.
여정 데이터 모델
백엔드가 차량에 이동을 할당하므로 차량에 예정된 다른 이동에 대해서도 알아야 합니다. 따라서 다음 다이어그램은 연결된 Vehicle
리소스의 다이어그램과 함께 Trip
리소스의 데이터 모델을 보여줍니다. 두 다이어그램을 모두 검토하여 두 리소스 간의 관계를 살펴볼 수 있습니다. 이때 다음 사항에 유의해야 합니다.
- 경로가 ID로 차량에 할당됩니다.
- 이동-차량 연결은 다대일입니다. 즉, 특정 이동이 차량에 예정된 유일한 이동이거나 차량의 여러 이동 중 하나일 수 있습니다.
- 경로 객체에는 두 개의 이동 경유지 목록이 포함됩니다. 하나는 이동 자체에 관한 것이고 다른 하나는 할당된 차량에 대한 것입니다. 이에 관한 자세한 내용은 이 문서에 설명되어 있습니다.
- 주문형 차량에는 이동 경유지 목록도 있습니다(이 문서에 더 자세히 설명되어 있음).
경로 데이터 모델
차량 데이터 모델
여행 유형
서비스에서 경로를 만들 때 tripType
필드를 EXCLUSIVE
또는 SHARED
중 하나로 설정할 수 있습니다.
독점 여행
전용 이동은 여정이 다른 이동과 겹치지 않는 이동과 차량이 일정에 따라 다른 이동 전후에 완료하는 이동입니다. 즉, 시스템에서 독점 이동을 할당할 때는 차량에 동시가 아닌 순서대로 완료되도록 이러한 이동을 할당할 수만 있습니다. 예를 들어 다음 특성을 가진 독점 경로를 만들 수 있습니다.
- 일정에 다른 이동이 없는 차량에 대해 한 번의 승차와 하차가 이루어지는 이동입니다.
- 일정에 다른 이동이 없는 차량의 승차, 중간 경유지, 하차가 있는 이동입니다.
- 차량에 이미 예약된 이동의 끝에 승차 및 하차가 추가된 이동입니다. 이 경우 각 이동은 서로에게 배타적이지만 이동은 연달아 순서가 정해집니다. 또한 이러한 이동은 필요한 경우 중간 목적지를 포함할 수 있습니다.
공유 여행
공유 여행이란 여정이 다른 여행 예약과 중복될 수 있는 여행입니다. 이러한 이동 유형의 경우 시스템에서 목적지 인터리브 처리와 동시에 발생하도록 할당할 수 있습니다. 예를 들어 한 경로의 하차가 다른 경로의 승차 후에 발생할 수 있습니다. 또한 공유 여정은 중간 경유지를 사용할 수 없습니다.
일반적으로 이동 시나리오 섹션에 설명된 공유 풀링 시나리오 중 하나에 공유 이동을 사용합니다.
경로 경유지
Google 지도에서 경유지는 일반적으로 위도/경도 좌표로 정의되는 경로에 있는 한 장소입니다. 주문형 경로의 경우 경유지는 다음과 같은 추가 정보가 포함된 TripWaypoint
객체로 표시됩니다.
- 이동 ID
WaypointType
(승차, 중급, 하차)- 이전 경유지와 현재 경유지 사이의 경로 및 거리 정보
- 경유지로 가는 경로의 교통상황
- 경유지까지의 이동시간 및 도착예정시간
다음 참고 자료를 확인하세요.
이동 경유지 유형
이동 경유지는 차량 여정의 일반적인 수명 주기와 관련하여 정의됩니다.
- 픽업 경유지: 운전자가 후속 배달을 위해 주문한 음식을 수령하는 경우 또는 운전자가 나중에 하차하기 위해 사람을 태울 때와 같이 여정의 출발지 또는 시작 지점에 사용됩니다.
- 중간 경유지 — 운전자가 동일한 예약 파티의 승객 한 명을 하차했지만 더 많은 승객이 남아 있어서 이동 자체가 완료되지 않은 경우와 같이 다양한 목적으로 사용할 수 있는 중간 목적지입니다. 이 경유지는 선택사항이며 전용 여정에만 사용할 수 있습니다.
- 하차 경유지: 나머지 승객이 차량에서 하차하는 경우와 같이 여정의 최종 위치에 사용됩니다.
여행 경유지 목록
Trip
항목에는 두 개의 경유지 목록이 포함되며, 각 목록은 TripWaypoint
유형의 반복 필드입니다. 한 목록은 이동 자체에 필요한 필드를
설명하고, 다른 목록은 이동과 관련된 차량에 남아있는
모든 경유지를 설명합니다. 이를 통해 여정의 모든 요소, 즉 이동과 전체 차량 여정을 전체적으로 파악할 수 있습니다.
- 차량의 나머지 경유지:
vehicle_waypoints
필드입니다. 여기에는 차량에 할당된 모든 이동의 나머지 경유지가 모두 포함됩니다. - 이동 시 남은 경유지:
remaining_waypoints
필드입니다. 여기에는 차량이 경로의 최종 하차 지점 전에 순서대로 이동해야 하는 경유지가 포함됩니다. 이동 시나리오의 시나리오를 참고하세요.- 일정에 다른 이동이 없는 차량에 할당된 단일 목적지 이동의 경우 차량이 승차 경유지를 떠나지 않았다고 가정하면 승차 및 하차 위치만 포함됩니다.
- 차량이 다른 이동도 예정되어 있는 다른 이동 시나리오의 경우, 운항 일정상의 모든 이동에서 남은 경유지에 해당 이동의 하차 경유지에 도달하기 전에 차량이 통과해야 하는 다른 이동의 모든 경유지가 포함됩니다. 예를 들어
차량이 경로 A의 하차 경로에 있는 연달아 이동 경로의 경우
경로 B의 나머지 경유지에 경로 A의 하차 경유지가
포함됩니다. Fleet Engine은
vehicle_waypoints
필드를 사용하여 이 정보를 계산합니다.
Trip
항목(gRPC 또는 REST)에 대한 참조를 확인하세요.
이동 시나리오
다음 다이어그램은 지원되는 다양한 이동 시나리오를 보여줍니다. 이 시나리오에서는 공유 풀링 이동만 SHARED
유형이고 나머지 모든 유형은 EXCLUSIVE
입니다. 또한 이 다이어그램은 이동 상태와 이동을 수행하는 차량의 나머지 경유지를 보여줍니다. 개념은 이 가이드의 뒷부분에서 설명합니다.
단일 목적지 여정
단일 목적지 이동은 승차 위치가 1개이고 하차 위치가 1개인 EXCLUSIVE
이동입니다. 예를 들어 운전자가 한 위치에서 승객을 태우고 다른 위치로 운송하거나, 배달 기사가 식당에서 음식 배달 주문을 찾아 고객에게 전달하는 경우를 예로 들 수 있습니다.
여러 목적지 경로
다중 목적지 경로는 승차 위치와 하차 위치 사이의 중간 목적지가 하나 이상 포함된 EXCLUSIVE
이동입니다. 예를 들어 차량 공유 고객 3명이 한 사람의 휴대전화로 함께 차량 공유 서비스를 예약하지만 각 목적지는 서로 다릅니다.
연달아 여행
연달아 이동은 일련의 독립적인 이동을
바로 포함하는 EXCLUSIVE
이동입니다. 체인의 각 경로는 단일 목적지 또는 다중 목적지일 수 있습니다. 이 시나리오에서 운전자는 현재 이동을 완료하기 전에 다른 고객을 태울 것을 약속합니다.
이러한 경로는 연달아 일정 예약을 허용하는 차량에만 할당할 수
있습니다. Vehicle
REST, gRPC 참조를 확인하세요.
풀링 여행 공유
공유 풀링 여행은 다른 여행 유형과 다릅니다. 먼저 EXCLUSIVE
이동이 아닌 SHARED
이동이어야 합니다.
여기서 차량은 전용 이동에서와 같이 순서대로 이동을 실행하지 않고 동시에
이동을 실행합니다. 공유된 풀링 경로는 다른 이동과
여정을 공유하지만, 이동 간에
승차 및 하차 위치 정보를 공유하지 않습니다. 대신 각 경로는 단독 예약으로, 한 여정을 예약한 최종 사용자가 자신의
경로 이외의 다른 경로에 대한 승차 또는 목적지 정보를
볼 수 없습니다. 예를 들면 다음과 같습니다.
- 공항 셔틀 서비스는 여러 고객이 거주하는 고객을 픽업하여 경로를 따라 이동하는 여러 공항 터미널에 보관합니다. 사용자 2는 소비자 앱을 사용하여 이동 상황을 추적할 수도 있지만 사용자 1이 여정 중 자신의 일부분만 보여주며 여정의 일부가 중복되더라도 사용자 1이 승선한 위치나 사용자 1이 하차하는 위치는 표시되지 않습니다.
- 음식 배달 기사가 같은 식당에서 주문 3건을 수령하여 각 고객의 자택으로 배달합니다. 사용자 3은 소비자 앱을 사용하여 음식이 언제 픽업되었는지 보고 운전자의 경로를 볼 수 있지만 사람 1과 사람 2의 음식 반납 위치는 볼 수 없습니다.
이동 상태 및 수명 주기
이 섹션에서는 이동 상태와 차량에 미치는 영향 및 주문형 이동을 할당하고 관리할 때 발생하는 다양한 시나리오를 설명합니다.
이동은 일반적으로 생성부터 완료까지 다양한 상태를 거치게 됩니다. 일반적으로 경로는 상태에 따라 활성 또는 비활성일 수 있습니다. 이동 상태는 Fleet Engine의 다양한 사용 사례 시나리오에 영향을 주며 여정 중에 차량의 진행 상황을 식별할 수 있는 기능에도 영향을 미칩니다. 이 문서의 나머지 부분에서는 이러한 시나리오를 설명합니다.
다음 표에는 활성 및 비활성 종류별로 이동 상태가 나와 있습니다.
활성 이동 상태 | 비활성 이동 상태 |
---|---|
NEW UNKNOWN_TRIP_STATUS ENROUTE_TO_PICKUP ARRIVED_AT_PICKUP ENROUTE_TO_INTERMEDIATE_DESTINATION ARRIVED_AT_INTERMEDIATE_DESTINATION ENROUTE_TO_DROPOFF
|
COMPLETE CANCELED
|
이동 상태 및 나머지 차량 경유지
이미 이동을 실행 중인 차량에 추가 이동을 할당하는 경우 차량의 나머지 경유지 간의 관계와 이동 상태가 나머지 경유지에 미치는 영향을 이해해야 합니다.
예를 들어 독점 이동만 지원하고 이동을 완료하는 중인 차량에 새 차량 공유 요청을 할당할 수 있습니다. 이 경우에는 이동을 연달아 이동으로 모델링합니다. 이러한 이동을 할당할 때 시스템은 새 이동의 경유지가 진행 중인 이동의 경유지 이후에 발생하도록 해야 합니다.
차량 여정 중에 Fleet Engine은 차량이 다음 목적지로 이동 중이거나 완료되었다고 보고하는 경우에만 차량의 남은 경유지 목록에서 이전 이동 경유지를 삭제합니다. 즉, 다음 중 하나입니다.
- ENROUTE_TO_INTERMEDIATE_DESTINATION
- ENROUTE_TO_DROPOFF
- COMPLETED
이동 상태가 COMPLETED
로 변경되면 Fleet Engine은 차량의 남은 경유지 목록에서 이동의 마지막 경유지를 삭제합니다.
반면에 경유지에 도착한다고 나타내는 상태 변경은 일반적으로 차량의 남은 경유지 목록에 영향을 미치지 않습니다.
- ARRIVED_AT_PICKUP
- ARRIVED_AT_INTERMEDIATE_DESTINATION
- ARRIVED_AT_DROPOFF
주문형 차량 공유의 예를 들자면, 운전자가 집에서 고객을 태우고 고객이 작업을 완료할 때까지 기다리는 장소로 고객을 수송한 후 고객을 자신의 집으로 다시 데려가는 상황을 가정해 보겠습니다. 경로를 처음 만들 때 PICKUP
, INTERMEDIATE
, DROPOFF
의 세 가지 경유지가 있습니다. 다음 표는 여정의 다양한 상태에 있는 나머지 경유지에 대한 쿼리 결과를 보여줍니다.
이동 상태 | 나머지 경유지 |
---|---|
ARRIVED_AT_PICKUP |
PICKUP INTERMEDIATE DROPOFF
|
ENROUTE_TO_INTERMEDIATE_DESTINATION |
PICKUP INTERMEDIATE DROPOFF
|
ARRIVED_AT_INTERMEDIATE_DESTINATION |
PICKUP INTERMEDIATE DROPOFF
|
ENROUTE_TO_DROPOFF |
PICKUP INTERMEDIATE DROPOFF
|
ARRIVED_AT_DROPOFF |
PICKUP INTERMEDIATE DROPOFF
|
COMPLETE |
PICKUP INTERMEDIATE DROPOFF |
재할당되거나 취소된 여행의 상태 요건
다음 작업을 수행하려면 먼저 이동 상태를
NEW
또는 CANCELED
로 설정해야 합니다.
- 경로의 차량 할당을 변경하는 경우. 예를 들어 운전자가 이동 차량 할당을 거부하고 이를 다른 차량에 재할당해야 하는 경우입니다.
- 이동을 위해 차량 할당을 삭제하는 경우 예를 들어 운전자가
경로를 취소한 경우 차량 할당을 삭제하려는 경우
상태는
NEW
또는CANCELED
여야 합니다.
이동 상태 기반 검색 결과
특정 차량에 SearchTrips
서비스를 사용하면 SearchTripsResponse
의 활성 경로 목록이 반환됩니다. 활성화된 경로는 Vehicle
항목의
active_trips
필드에도 표시됩니다. 자세한 내용은 SearchTripsResponse
참조(gRPC 또는 REST)를 참고하세요.
따라서 활성 상태의 모든 이동은 active_trips
필드에 표시되지만
완료 또는 취소된 이동은 표시되지 않습니다.