Chuyến đi theo yêu cầu

Tài liệu này mô tả dịch vụ chuyến đi theo yêu cầu trong Công cụ xe. Bài viết này giả định rằng bạn đã đọc bài viết Công cụ của đội xe là gì? và biết được chức năng dịch vụ cụ thể của Công cụ của đội xe mà bạn cần.

Khi đọc tài liệu này, hãy lưu ý những điều sau:

  • Bạn chỉ định chuyến đi cho xe để mô hình hoá mối liên kết thực tế giữa chuyến đi và người lái xe hoàn thành chuyến đi đó. Đọc bài viết Giới thiệu về xe để hiểu rõ hơn về cách hoạt động của xe trong Công cụ quản lý đội xe.
  • Tài liệu này cũng mô tả một số thành phần xe chỉ áp dụng cho các chuyến đi theo yêu cầu.
  • Fleet Engine cho các chuyến đi theo yêu cầu sử dụng hai tài nguyên: TripVehicle. Công cụ của Fleet cung cấp cả dịch vụ gRPC và giao diện REST:
    • TripService: gRPCREST
    • VehicleService: gRPCREST
    • Để đơn giản, hướng dẫn này sử dụng các ví dụ về gRPC.

Chuyến đi theo yêu cầu là gì?

Trong Công cụ xe, một chuyến đi đại diện cho một hành trình theo yêu cầu có thể hoàn thành nhiều mục tiêu vận chuyển. Ví dụ:

  • Người: Vận chuyển một hoặc nhiều người từ điểm đón đến điểm trả khách.
  • Đồ ăn và hàng hoá: Nhận một hoặc nhiều đơn đặt món ăn tại một địa điểm kinh doanh nhất định và giao các đơn đặt món này cho một hoặc nhiều người nhận tại địa điểm của họ.

Thành phần chuyến đi

Hình minh hoạ sau đây cho thấy các thành phần cơ bản của một chuyến đi: mã nhận dạng xe được chỉ định, trạng thái chuyến đi và các điểm trung gian của chuyến đi. Các loại điểm trung gian khác nhau tuỳ thuộc vào giai đoạn của hành trình: điểm đón, điểm trung gian và điểm trả khách. Trong bất kỳ chuyến đi nào, bạn đều không bắt buộc phải có điểm trung gian hoặc điểm trung gian. Trong ví dụ về hình ảnh, xe đã đến địa điểm lấy hàng

Mô hình dữ liệu cho chuyến đi

Khi phần phụ trợ chỉ định chuyến đi cho xe, phần phụ trợ cũng phải biết về các chuyến đi khác đã lên lịch cho xe. Vì lý do đó, các sơ đồ sau đây minh hoạ mô hình dữ liệu của tài nguyên Trip cùng với sơ đồ cho tài nguyên Vehicle được liên kết. Bạn có thể xem cả hai sơ đồ để khám phá mối quan hệ giữa hai tài nguyên này, lưu ý những điều sau:

  • Các chuyến đi được chỉ định cho một xe theo mã nhận dạng.
  • Mối liên kết giữa chuyến đi và xe là nhiều với một. Tức là một chuyến đi nhất định có thể là chuyến đi duy nhất được lên lịch cho xe hoặc có thể là một trong nhiều chuyến đi cho xe.
  • Đối tượng chuyến đi chứa hai danh sách điểm trung gian của chuyến đi, một danh sách cho chính chuyến đi và một danh sách cho xe được chỉ định. Điều này được giải thích chi tiết hơn trong tài liệu này.
  • Xe theo yêu cầu cũng có danh sách các điểm trung gian của chuyến đi, được mô tả đầy đủ hơn trong tài liệu này.

Mô hình dữ liệu chuyến đi

Mô hình dữ liệu xe

Loại chuyến đi

Khi tạo một chuyến đi, dịch vụ của bạn có thể đặt trường tripType thành một trong hai giá trị sau: EXCLUSIVE hoặc SHARED.

Chuyến đi độc quyền

Chuyến đi độc quyền là chuyến đi không trùng lặp với các chuyến đi khác và là chuyến đi mà xe hoàn thành trước hoặc sau các chuyến đi khác theo lịch trình. Điều này có nghĩa là khi hệ thống chỉ định các chuyến đi độc quyền, hệ thống chỉ có thể chỉ định các chuyến đi đó cho một xe để hoàn thành theo trình tự, chứ không phải đồng thời. Để minh hoạ, bạn có thể tạo các chuyến đi độc quyền có bất kỳ đặc điểm nào sau đây:

  • Một chuyến đi có một điểm đón và một điểm trả khách cho một xe không có chuyến đi nào khác trong lịch trình.
  • Một chuyến đi có điểm đón, điểm trung gian và điểm trả khách cho một xe không có chuyến đi nào khác trong lịch trình.
  • Một chuyến đi có điểm đón và điểm trả khách được thêm vào cuối một chuyến đi đã lên lịch cho xe. Trong những trường hợp này, mỗi chuyến đi là riêng biệt với chuyến đi khác, nhưng các chuyến đi được đặt theo kiểu liên tiếp. Ngoài ra, các chuyến đi như vậy có thể bao gồm các điểm đến trung gian nếu cần.

Chuyến đi được chia sẻ

Chuyến đi chung là chuyến đi có hành trình trùng lặp với các chuyến đi khác đã đặt phòng. Đối với các loại chuyến đi này, hệ thống của bạn có thể chỉ định các chuyến đi này diễn ra đồng thời với các đích đến xen kẽ. Ví dụ: điểm trả khách của một chuyến đi có thể xảy ra sau điểm đón khách của một chuyến đi khác. Ngoài ra, các chuyến đi được chia sẻ có thể không sử dụng điểm trung gian.

Thông thường, bạn sẽ sử dụng chuyến đi dùng chung cho một trong các trường hợp sử dụng tính năng đi chung được minh hoạ trong phần Trường hợp sử dụng chuyến đi.

Điểm trung gian của chuyến đi

Đối với Google Maps, điểm trung gian là một địa điểm dọc theo tuyến đường, thường được xác định bằng tọa độ vĩ độ/kinh độ. Đối với các chuyến đi theo yêu cầu, điểm trung gian được biểu thị bằng đối tượng TripWaypoint, chứa thông tin bổ sung như sau:

  • Mã chuyến đi
  • WaypointType, điểm đến lấy hàng, điểm đến trung gian hoặc điểm đến trả hàng
  • Thông tin về đường dẫn và khoảng cách giữa điểm trung gian của chuyến đi trước đó và điểm trung gian hiện tại
  • Tình trạng giao thông dọc theo đường dẫn đến điểm trung gian của chuyến đi
  • Thời gian di chuyển và giờ đến dự kiến đến điểm trung gian của chuyến đi

Xem tài liệu tham khảo:

Các loại điểm trung gian của chuyến đi

Điểm trung gian của chuyến đi được xác định liên quan đến vòng đời chung của một chuyến đi bằng xe:

  • Điểm trung gian đến lấy hàng – Dùng cho điểm xuất phát hoặc điểm bắt đầu của một chuyến đi, chẳng hạn như khi tài xế đến lấy đơn đặt đồ ăn để giao hàng sau đó hoặc khi tài xế đến đón người để trả sau.
  • Điểm trung gian – Một điểm đến trung gian có thể được dùng cho nhiều mục đích, chẳng hạn như khi tài xế trả một hành khách của cùng một bên đặt phòng, nhưng chuyến đi vẫn chưa hoàn tất vì còn nhiều hành khách khác. Điểm trung gian này là không bắt buộc và chỉ có thể được dùng cho các chuyến đi riêng.
  • Điểm trung gian trả khách – Dùng cho vị trí cuối cùng của hành trình, chẳng hạn như khi hành khách còn lại rời khỏi xe.

Danh sách điểm trung gian của chuyến đi

Một thực thể Trip bao gồm hai danh sách điểm trung gian, mỗi danh sách là một trường lặp lại thuộc loại TripWaypoint. Một danh sách mô tả các trường cần thiết cho chuyến đi và danh sách còn lại mô tả tất cả các điểm trung gian còn lại cho xe được liên kết với chuyến đi. Nhờ đó, bạn có thể nắm được toàn bộ thông tin về tất cả các yếu tố của chuyến đi: chuyến đi và toàn bộ hành trình của xe.

  • Các điểm trung gian còn lại cho xe – Một trường có tên là vehicle_waypoints. Tệp này chứa tất cả các điểm trung gian còn lại cho tất cả các chuyến đi được chỉ định cho xe.
  • Các điểm trung gian còn lại cho chuyến đi – Một trường có tên là remaining_waypoints. Tệp này chứa các điểm trung gian mà xe phải đi theo trình tự trước khi đến điểm trả khách cuối cùng của chuyến đi. Xem các tình huống trong phần Tình huống chuyến đi.
    • Đối với một chuyến đi có một điểm đến được chỉ định cho một xe không có chuyến đi nào khác trong lịch trình, chuyến đi này sẽ chỉ bao gồm một vị trí đón và một vị trí trả khách, giả sử xe chưa rời khỏi điểm trung gian đón khách.
    • Đối với mọi trường hợp chuyến đi khác mà xe cũng được lên lịch cho các chuyến đi khác, các điểm trung gian còn lại cho bất kỳ chuyến đi nào trong hành trình sẽ bao gồm tất cả các điểm trung gian từ các chuyến đi khác mà xe phải đi qua trước khi đến điểm trung gian trả khách cho chuyến đi đó. Ví dụ: trong một chuyến đi liên tiếp, khi xe đang trên đường đến điểm trả khách cho chuyến đi A, các điểm trung gian còn lại cho chuyến đi B sẽ bao gồm điểm trung gian trả khách cho chuyến đi A. Công cụ của đội xe tính toán thông tin này bằng cách sử dụng trường vehicle_waypoints.

Xem tài liệu tham khảo cho thực thể Trip: gRPC hoặc REST.

Tình huống chuyến đi

Các sơ đồ sau đây minh hoạ nhiều trường hợp chuyến đi được hỗ trợ. Trong các trường hợp này, chỉ chuyến đi chung có loại SHARED; tất cả các chuyến đi khác đều là EXCLUSIVE. Sơ đồ cũng cho thấy trạng thái chuyến đi và các điểm trung gian còn lại cho xe thực hiện chuyến đi, các khái niệm được mô tả ở phần sau của hướng dẫn này.

Chuyến đi đến một điểm đến

Chuyến đi một điểm đến là chuyến đi EXCLUSIVE có một điểm đón và một điểm trả khách. Ví dụ: một tài xế đón một hành khách từ một địa điểm và đưa họ đến một địa điểm khác; hoặc một tài xế lấy đơn đặt món ăn giao tận nơi từ một nhà hàng và giao cho khách hàng.

Chuyến đi nhiều điểm đến

Chuyến đi nhiều điểm đến là chuyến đi EXCLUSIVE chứa một hoặc nhiều điểm đến trung gian giữa vị trí đón và vị trí trả khách. Ví dụ: 3 khách hàng đi chung xe đặt một chuyến đi cùng nhau từ điện thoại của một người, nhưng mỗi người có một điểm đến riêng.

Chuyến đi liên tiếp

Các chuyến đi liên tiếp là các chuyến đi EXCLUSIVE chứa một loạt các chuyến đi độc lập diễn ra ngay sau nhau. Mỗi chuyến đi trong chuỗi có thể là một hoặc nhiều điểm đến. Trong trường hợp này, tài xế cam kết đón một khách hàng khác trước khi hoàn tất chuyến đi hiện tại.

Bạn chỉ có thể chỉ định những chuyến đi này cho những xe cho phép lên lịch liên tiếp. Xem tài liệu tham khảo về Vehicle REST, gRPC.

Chuyến đi chung

Chuyến đi chung khác với các loại chuyến đi khác. Trước tiên, đó phải là chuyến đi SHARED, chứ không phải chuyến đi EXCLUSIVE. Ở đây, xe thực thi các chuyến đi đồng thời thay vì tuần tự như với các chuyến đi độc quyền. Mặc dù chuyến đi chung có chia sẻ hành trình với các chuyến đi khác, nhưng không chia sẻ thông tin vị trí đón và trả khách giữa các chuyến đi. Thay vào đó, mỗi chuyến đi là một lượt đặt phòng riêng biệt, theo đó, người dùng cuối đã đặt một chuyến đi không thể xem thông tin điểm đón hoặc điểm đến của bất kỳ chuyến đi nào khác ngoài chuyến đi của họ. Ví dụ:

  • Dịch vụ đưa đón sân bay đón nhiều khách hàng tại nơi cư trú của họ và đưa họ đến các nhà ga sân bay khác nhau dọc theo tuyến đường. Người thứ hai có thể sử dụng ứng dụng dành cho người tiêu dùng của bạn để theo dõi tiến trình của chuyến đi, nhưng ứng dụng của họ chỉ hiển thị phần hành trình của họ chứ không hiển thị nơi người thứ nhất được đón, cũng như nơi người thứ nhất sẽ được trả về, mặc dù một số phần trong hành trình của họ trùng lặp.
  • Một tài xế giao đồ ăn đến lấy ba đơn đặt món ăn của cùng một nhà hàng để giao đến nhiều địa chỉ của khách hàng. Khi sử dụng ứng dụng dành cho người tiêu dùng, Người thứ 3 có thể xem vị trí và thời gian lấy đồ ăn cũng như xem tuyến đường của người lái xe, nhưng không thể xem vị trí giao đồ ăn cho người thứ nhất và người thứ hai.

Trạng thái chuyến đi và vòng đời của chuyến đi

Phần này mô tả trạng thái chuyến đi và tác động của trạng thái đó đối với xe cũng như nhiều tình huống mà bạn gặp phải khi chỉ định và quản lý các chuyến đi theo yêu cầu.

Một chuyến đi thường trải qua nhiều trạng thái, từ khi tạo đến khi hoàn tất. Nói chung, một chuyến đi có thể đang hoạt động hoặc không hoạt động, tuỳ thuộc vào trạng thái của chuyến đi đó. Trạng thái chuyến đi ảnh hưởng đến nhiều trường hợp sử dụng của Công cụ quản lý đội xe, cũng như khả năng bạn xác định tiến trình của xe trong suốt hành trình. Phần còn lại của tài liệu này sẽ thảo luận về các tình huống đó.

Bảng sau đây liệt kê trạng thái chuyến đi theo loại đang hoạt động và không hoạt động.

Trạng thái của chuyến đi đang hoạt động Trạng thái chuyến đi không hoạt động
NEW
UNKNOWN_TRIP_STATUS
ENROUTE_TO_PICKUP
ARRIVED_AT_PICKUP
ENROUTE_TO_INTERMEDIATE_DESTINATION
ARRIVED_AT_INTERMEDIATE_DESTINATION
ENROUTE_TO_DROPOFF
COMPLETE
CANCELED

Trạng thái chuyến đi và các điểm trung gian còn lại của xe

Khi chỉ định các chuyến đi bổ sung cho một xe đang thực hiện một chuyến đi, bạn nên hiểu mối quan hệ giữa các điểm trung gian còn lại của xe và mức độ ảnh hưởng của trạng thái chuyến đi đến các điểm trung gian còn lại đó.

Ví dụ: bạn có thể chỉ định một yêu cầu đi chung xe mới cho một xe chỉ hỗ trợ các chuyến đi riêng và đang hoàn tất một chuyến đi. Trong trường hợp này, bạn sẽ mô hình hoá chuyến đi dưới dạng chuyến đi liên tiếp. Khi chỉ định một chuyến đi như vậy, hệ thống của bạn phải đảm bảo rằng các điểm trung gian của chuyến đi mới xảy ra sau các điểm trung gian của chuyến đi đang diễn ra.

Trong hành trình của xe, Công cụ quản lý đội xe sẽ chỉ xoá một điểm trung gian của chuyến đi trước đó khỏi danh sách các điểm trung gian còn lại của xe khi xe báo cáo rằng xe đang trên đường đến điểm đến tiếp theo hoặc đã hoàn tất. Tức là bất kỳ trường hợp nào sau đây:

  • ENROUTE_TO_INTERMEDIATE_DESTINATION
  • ENROUTE_TO_DROPOFF
  • ĐÃ HOÀN TẤT

Khi trạng thái chuyến đi thay đổi thành COMPLETED, Công cụ quản lý đội xe sẽ xoá điểm trung gian cuối cùng của chuyến đi khỏi danh sách điểm trung gian còn lại của xe.

Ngược lại, các thay đổi về trạng thái cho biết đã đến một điểm trung gian thường không ảnh hưởng đến danh sách các điểm trung gian còn lại của xe:

  • ARRIVED_AT_PICKUP
  • ARRIVED_AT_INTERMEDIATE_DESTINATION
  • ARRIVED_AT_DROPOFF

Để minh hoạ bằng ví dụ về dịch vụ đi xe theo yêu cầu: giả sử tài xế đón một khách hàng từ nơi ở của họ, đưa họ đến một địa điểm để chờ khách hàng hoàn thành một việc, sau đó đưa khách hàng trở lại nơi ở của họ. Khi được tạo lần đầu, chuyến đi có 3 điểm trung gian: PICKUP, INTERMEDIATEDROPOFF. Bảng sau đây minh hoạ kết quả của truy vấn về các điểm trung gian còn lại ở nhiều trạng thái của hành trình:

Trạng thái chuyến đi Các điểm trung gian còn lại
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

Yêu cầu về trạng thái đối với các chuyến đi được chỉ định lại hoặc bị huỷ

Trước khi có thể thực hiện bất kỳ thao tác nào sau đây, bạn phải đặt trạng thái chuyến đi thành NEW hoặc CANCELED.

  • Khi thay đổi việc chỉ định xe cho một chuyến đi. Ví dụ: nếu một tài xế từ chối nhận xe cho một chuyến đi và cần chỉ định lại cho một xe khác.
  • Khi xoá việc chỉ định xe cho một chuyến đi. Ví dụ: nếu một tài xế huỷ chuyến đi trên đường và bạn muốn xoá việc chỉ định xe, thì trạng thái phải là NEW hoặc CANCELED.

Kết quả tìm kiếm dựa trên trạng thái chuyến đi

Khi bạn sử dụng dịch vụ SearchTrips cho một xe cụ thể, dịch vụ này sẽ trả về danh sách các chuyến đi đang hoạt động trong SearchTripsResponse. Các chuyến đi đang hoạt động cũng xuất hiện trong trường active_trips của thực thể Vehicle. Hãy xem tài liệu tham khảo SearchTripsResponse để biết thông tin chi tiết: gRPC hoặc REST.

Do đó, tất cả các chuyến đi có trạng thái đang hoạt động sẽ xuất hiện trong trường active_trips, nhưng các chuyến đi đã hoàn tất hoặc đã huỷ sẽ không xuất hiện.

Bước tiếp theo