Podróże na żądanie

Ten dokument opisuje usługę podróży na żądanie we Fleet Engine. Zakładamy, że znasz już sekcję Co to jest Fleet Engine? i wiesz, jakich funkcji usługi Fleet Engine potrzebujesz.

Czytając tę dokumentację, pamiętaj o tych kwestiach:

  • Przypisujesz przejazdy do pojazdów, aby modelować rzeczywiste relacje między podróżą a kierowcą, który ją pokonuje. Przeczytaj Wprowadzenie do pojazdów, aby lepiej zrozumieć, jak działają pojazdy we Fleet Engine.
  • W tym dokumencie opisujemy również niektóre elementy pojazdu, które mają zastosowanie tylko w przypadku podróży na żądanie.
  • Fleet Engine do obsługi podróży na żądanie używa 2 zasobów: Trip i Vehicle. Fleet Engine udostępnia zarówno usługę gRPC, jak i interfejsy REST:
    • TripService: gRPC i REST
    • VehicleService: gRPC i REST
    • Dla uproszczenia w tej instrukcji używamy przykładów gRPC.

Czym jest podróż na żądanie?

We Fleet Engine podróż reprezentuje podróż na żądanie, która pozwala osiągnąć różne cele związane z transportem. Na przykład:

  • Osoby: przewóz jednej lub więcej osób z miejsca odbioru do miejsca zwrotu.
  • Jedzenie i towary: możesz odebrać jedno lub więcej zamówień na jedzenie z danej lokalizacji firmy i zwrócić je do jednego lub kilku odbiorców w jednym miejscu.

Elementy podróży

Na ilustracji poniżej przedstawiono podstawowe elementy podróży: przypisany identyfikator pojazdu, stan podróży i punkty pośrednie podróży. Typy punktów pośrednich różnią się w zależności od etapu podróży: pickup, pośredni i zakończenia. W przypadku każdej podróży pośredni cel lub punkt pośredni są opcjonalne. Na przykładowym zdjęciu pojazd dotarł do miejsca odbioru

Model danych na potrzeby podróży

Gdy backend przypisuje podróże do pojazdów, musi też mieć dostęp do informacji o zaplanowanych innych przejazdach. Dlatego na diagramach poniżej widać model danych zasobu Trip obok diagramu powiązanego z nim zasobu Vehicle. Możesz przejrzeć oba diagramy, aby zbadać zależności między nimi. Pamiętaj o tych kwestiach:

  • Podróże są przypisywane do pojazdu na podstawie identyfikatora.
  • Powiązanie z pojazdem ma stosunek wiele do jednego. Oznacza to, że dana podróż może być jedyną zaplanowaną trasą danego pojazdu lub jedną z wielu opcji przejazdu tym pojazdem.
  • Obiekty podróży zawierają 2 listy punktów na trasie – jedną dla samej podróży i drugą dla przypisanego pojazdu. Szczegółowo wyjaśniliśmy to w tym dokumencie.
  • Pojazd na żądanie ma również listę punktów na trasie, które szczegółowo opisano w tym dokumencie.

Model danych podróży

Model danych pojazdu

Rodzaje podróży

Gdy usługa tworzy podróż, może ustawić w polu tripType jedną z tych wartości: EXCLUSIVE lub SHARED.

Wyjątkowe podróże

Podróż na wyłączność to taka, której podróż nie pokrywa się z innymi podróżami i która odbywa się przed innymi przejazdami zgodnie z harmonogramem lub po nich. Oznacza to, że jeśli system przypisuje przejazdy na wyłączność, może je przypisać tylko do pojazdu, który trzeba wykonać po kolei, a nie jednocześnie. Na przykład można utworzyć wyjazdy na wyłączność o tych cechach:

  • Podróż z jednym odbiorem i jednym wyjazdem pojazdu bez żadnych innych przejazdów w harmonogramie.
  • Podróż z odbiorem, pośrednim punktem pośrednim i zwrotem pojazdu bez żadnych innych przejazdów w harmonogramie.
  • Podróż z opcją odbioru i zwrotu dodana do końca wcześniej zaplanowanej podróży pojazdem. W takich przypadkach każda podróż ma charakter wyłącznie inny, ale są one uporządkowane w kolejności odwrotnej. Dodatkowo takie podróże mogą obejmować miejsca docelowe pośrednie, jeśli jest to wymagane.

Udostępnione podróże

Wspólna podróż to podróż, której podróż może pokrywać się z rezerwacjami innych podróży. W przypadku tych typów podróży system może je przypisać tak, aby następowały równolegle z miejscami docelowymi z przeplotem. Na przykład wyjazd z jednej podróży może nastąpić po odbiorze z innej. Poza tym współdzielone podróże nie mogą wykorzystywać pośrednich punktów pośrednich.

Zwykle dla jednego ze wspólnych scenariuszy zbierania danych przedstawionych w sekcji Scenariusze podróży najlepiej jest używać wspólnej podróży.

Punkty na trasie

W Mapach Google punkt pośredni to miejsce na trasie, zwykle określone za pomocą współrzędnych szerokości i długości geograficznej. W przypadku podróży na żądanie punkt pośredni jest reprezentowany przez obiekt TripWaypoint, który zawiera dodatkowe informacje, na przykład:

  • Identyfikator podróży
  • WaypointType: odbiór, pośredni lub zwrot
  • Informacje o ścieżce i odległości między poprzednim a bieżącym punktem podróży
  • Warunki ruchu na trasie do punktu pośredniego podróży
  • Czas podróży i szacowany czas dotarcia do punktu na trasie

Więcej informacji:

Typy punktów pośrednich w podróży

Punkt pośredni podróży jest zdefiniowany w odniesieniu do ogólnego cyklu życia pojazdu:

  • Punkt na trasie odbioru – używany, aby określić miejsce wylotu lub rozpoczęcia podróży, np. gdy kierowca odbierze jedzenie z dostawą lub gdy kierowca odbierze osobę i odbierze ją do przewoźnika.
  • Pośredni punkt na trasie – pośredni miejsce docelowe, którego można używać do różnych celów, np. gdy kierowca podwozi jednego pasażera z tej samej rezerwacji, ale podróż nie zostanie zakończona, ponieważ podróżuje większa liczba pasażerów. Ten punkt pośredni jest opcjonalny i może być używany tylko w przypadku podróży na wyłączność.
  • Punkt na trasie zwrotu – używany w ostatecznym miejscu podróży, na przykład wtedy, gdy pozostały pasażer wysiądzie z pojazdu.

Listy punktów pośrednich w podróży

Element Trip zawiera 2 listy punktów pośrednich, z których każda jest powtarzającym się polem typu TripWaypoint. Jedna lista zawiera pola niezbędne do samej podróży, a druga – wszystkie pozostałe punkty na trasie dla pojazdu związanego z podróżą. Dzięki temu masz pełny obraz wszystkich elementów podróży: całej podróży i całej trasy pojazdu.

  • Pozostałe punkty na trasie pojazdu – pole o nazwie vehicle_waypoints. Zawiera wszystkie pozostałe punkty na trasie wszystkich podróży przypisanych do pojazdu.
  • Pozostałe punkty na trasie podróży – pole o nazwie remaining_waypoints. Zawiera on punkty pośrednie, które pojazd musi pokonać w kolejności przed ostatecznym punktem wylotu. Zapoznaj się z opisem w sekcji Scenariusze podróży.
    • W przypadku podróży w jedną stronę przypisanego do pojazdu, który nie ma innych zaplanowanych przejazdów, uwzględnia tylko miejsca odbioru i zwrotu, zakładając, że pojazd nie wyjechał z punktu pośredniego odbioru.
    • W przypadku innych scenariuszy podróży, w których pojazd jest również planowany na inne podróże, pozostałe punkty na trasie każdej podróży w ramach planu podróży obejmowały wszystkie punkty pośrednie z innych podróży, które pojazd musi pokonać, zanim dotrze do punktu postoju w danej podróży. Na przykład w przypadku podróży powrotnej, w której pojazd jest w drodze do miejsca wylotu, w przypadku podróży A, pozostałe punkty na trasie podróży B obejmują punkt początkowy dla podróży A. Fleet Engine oblicza te informacje za pomocą pola vehicle_waypoints.

Zapoznaj się z dokumentacją elementu Trip: gRPC lub REST.

Scenariusze podróży

Poniższe diagramy ilustrują różne obsługiwane scenariusze podróży. W tych scenariuszach tylko wspólna podróż wspólnego przejazdu jest typu SHARED, a w pozostałych przypadkach to EXCLUSIVE. Diagramy pokazują również stan podróży i pozostałe punkty pośrednie pojazdu, w którym odbywa się podróż, pojęcia opisane w dalszej części tego przewodnika.

Podróż w jedną stronę

Podróż z jednym celem podróży to podróż z miejscem EXCLUSIVE odbioru i miejsca wyjazdu. Na przykład kierowca zabiera pasażera z jednego miejsca i przenosi go do innego, a kierowca odbiera z restauracji zamówienie jedzenia z dostawą i dostarcza je klientowi.

Podróże do wielu miejsc

Podróż obejmująca wiele miejsc docelowych to podróż EXCLUSIVE, która obejmuje co najmniej jedno miejsce docelowe pośrednie między miejscem odbioru a miejscem zwrotu. Na przykład 3 klientów, którzy korzystają ze wspólnych przejazdów, rezerwuje przejazd razem za pomocą telefonu jednej osoby, ale każdy z nich ma własne miejsce docelowe.

Powroty po kolei

Podróże w obie strony to EXCLUSIVE podróży, które obejmują serię niezależnych przejazdów, które następują tuż po drugiej. Każda podróż w łańcuchu może dotyczyć jednego lub wielu miejsc docelowych. W takim przypadku kierowca zobowiązuje się podwieźć innego klienta przed rozpoczęciem bieżącej podróży.

Te podróże można przypisywać tylko do pojazdów, które umożliwiają planowanie z powrotem. Zobacz dokumentację Vehicle REST i gRPC.

Wspólne podróże w ramach wspólnego łączenia

Wspólne przejazdy to coś innego niż pozostałe. Po pierwsze musi to być podróż SHARED, a nie EXCLUSIVE. W tym przypadku pojazd odbywa się równocześnie, a nie w kolejności, jak w przypadku podróży na wyłączność. Chociaż wspólna podróż w ramach wspólnego przejazdu ma tę samą drogę co inne podróże, nie są udostępniane informacje o miejscach odbioru i miejsca wyjazdu między podróżami. Każda podróż stanowi rezerwację na wyłączność, więc użytkownik, który zarezerwował jedną podróż, nie ma dostępu do informacji o odbiorze lub miejscu docelowym podróży poza własnym. Na przykład:

  • Transfer lotniskowy odbierze różnych klientów do ich miejsca zamieszkania i przekaże ich do różnych terminali lotniskowych na trasie. Osoba 2 może korzystać z Twojej aplikacji dla klientów, aby śledzić postępy w podróży, ale w aplikacji wyświetla się tylko część trasy, a nie miejsce, z którego zabrał(a) osobę 1 ani miejsce, w którym ma ona podróżować, chociaż niektóre etapy podróży się pokrywają.
  • Kierowca odbierze 3 zamówienia jedzenia z tej samej restauracji do dostawy do różnych miejsc zamieszkania klienta. Korzystając z Twojej aplikacji dla klientów indywidualnych, osoba 3 może zobaczyć, gdzie i kiedy zostało odebrane jedzenie, a także zobaczyć trasę kierowcy, ale nie będzie widzieć miejsc, w których należy podać jedzenie dla osób 1 i 2.

Stan podróży i jej cykl życia

W tej sekcji znajdziesz opis stanu podróży i jego wpływu na pojazd oraz różne sytuacje, w których możesz napotkać podczas przypisywania podróży na żądanie i zarządzania nimi.

Podróż przebiega zwykle przez różne etapy, od momentu utworzenia do ukończenia. Ogólnie rzecz biorąc, podróż może być aktywna lub nieaktywna w zależności od jej stanu. Stan podróży ma wpływ na różne scenariusze użycia we Fleet Engine, a także na możliwość identyfikowania postępów pojazdu na drodze. Te scenariusze zostały omówione w dalszej części tego dokumentu.

W tabeli poniżej znajdziesz stany podróży według aktywnych i nieaktywnych rodzajów.

Stany aktywnych podróży Stany nieaktywnych podróży
NEW
UNKNOWN_TRIP_STATUS
ENROUTE_TO_PICKUP
ARRIVED_AT_PICKUP
ENROUTE_TO_INTERMEDIATE_DESTINATION
ARRIVED_AT_INTERMEDIATE_DESTINATION
ENROUTE_TO_DROPOFF
COMPLETE
CANCELED

Stan podróży i pozostałe punkty na trasie pojazdu

Przypisując dodatkowe przejazdy do pojazdu, który już je odbył, musisz rozumieć zależność między pozostałymi punktami na trasie pojazdu i tym, jak stan podróży wpływa na te pozostałe punkty.

Możesz np. przypisać nową prośbę o wspólne przejazdy do pojazdu, który obsługuje tylko połączenia na wyłączność i jest w trakcie podróży. W tym przypadku modelujesz podróż jako podróż powrotną. Podczas przypisywania takiej podróży system powinien zadbać o to, aby punkty na trasie nowej podróży wystąpiły po punktach pośrednich trwającej podróży.

Podczas podróży pojazd Fleet Engine usuwa poprzedni punkt pośredni z listy pozostałych punktów na trasie tylko wtedy, gdy pojazd zgłosił, że jest w drodze do następnego miejsca docelowego lub gdy został ukończony. Oznacza to, że:

  • ENROUTE_TO_INTERMEDIATE_DESTINATION
  • ENROUTE_TO_DROPOFF
  • UKOŃCZONO

Gdy stan podróży zmieni się na COMPLETED, Fleet Engine usunie ostatni punkt na trasie z listy pozostałych punktów pośrednich pojazdu.

Z kolei zmiany stanu wskazujące na przybycie do punktu pośredniego zwykle nie mają wpływu na listę pozostałych punktów pośrednich dla pojazdu:

  • ARRIVED_AT_PICKUP
  • ARRIVED_AT_INTERMEDIATE_DESTINATION
  • ARRIVED_AT_DROPOFF

Przykład związany z przejazdem na żądanie: załóżmy, że kierowca odbiera klienta z miejsca zamieszkania, przenosi ich do miejsca, w którym czeka na wykonanie zadania, a potem przewożą klienta z powrotem do miejsca zamieszkania. Początkowo podróż ma 3 punkty pośrednie: PICKUP, INTERMEDIATE i DROPOFF. Poniższa tabela przedstawia wyniki zapytania o pozostałe punkty pośrednie w różnych stanach ścieżki:

Stan podróży Pozostałe punkty pośrednie
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

Wymagania dotyczące stanu w przypadku ponownie przypisanych lub anulowanych podróży

Zanim wykonasz którąkolwiek z tych czynności, musisz ustawić stan podróży na NEW lub CANCELED.

  • Zmiana przypisania pojazdu na potrzeby podróży. Stanie się tak na przykład w sytuacji, gdy kierowca odrzuci przypisanie pojazdu do podróży i trzeba będzie przypisać go do innego pojazdu.
  • Podczas poprawiania przypisania pojazdu na potrzeby podróży. Jeśli na przykład kierowca anuluje podróż w trasie i chcesz anulować przypisanie pojazdu, stan musi wynosić NEW lub CANCELED.

Wyniki wyszukiwania na podstawie stanu podróży

Gdy użyjesz usługi SearchTrips dla konkretnego pojazdu, wyświetli ona listę aktywnych podróży w okresie SearchTripsResponse. Aktywne podróże pojawiają się też w polu active_trips elementu Vehicle. Szczegóły znajdziesz w dokumentacji SearchTripsResponse: gRPC lub REST.

Dlatego w polu active_trips pojawią się wszystkie podróże ze statusem aktywnym, ale ukończone lub anulowane nie będą się wyświetlać.

Co dalej?