Questo documento descrive il servizio per le corse on demand di Fleet Engine. Si presume che tu abbia letto Che cos'è Fleet Engine? e che tu sia a conoscenza della funzionalità di servizio Fleet Engine specifica di cui hai bisogno.
Mentre leggi questa documentazione, tieni presente quanto segue:
- Assegni i viaggi ai veicoli in modo da modellare l'associazione reale tra la corsa e il conducente che la completa. Leggi Introduzione ai veicoli per comprendere meglio come funzionano i veicoli in Fleet Engine.
- Questo documento descrive anche alcuni elementi dei veicoli che si applicano solo alle corse on demand.
- Fleet Engine per le corse on demand utilizza due risorse:
Trip
eVehicle
. Fleet Engine fornisce un servizio gRPC e interfacce REST:
Cos'è un viaggio on demand?
In Fleet Engine, una corsa rappresenta un percorso on demand che può raggiungere una serie di obiettivi di trasporto. Ad esempio:
- Persone: trasporta una o più persone dal punto di prelievo al luogo di destinazione.
- Cibo e prodotti alimentari: ritira uno o più ordini di cibo da una determinata sede dell'attività e consegnali a uno o più destinatari presso le loro sedi.
Elementi della corsa
L'illustrazione seguente mostra gli elementi di base di una corsa: l'ID del veicolo assegnato, lo stato della corsa e le tappe della corsa. I tipi di tappe variano a seconda della fase del viaggio: prelievo, intermedio e ritorno. In ogni viaggio, una destinazione o tappa intermedia è facoltativa. Nell'esempio di immagine, il veicolo è arrivato al punto di ritiro
Modello dei dati per i viaggi
Poiché il backend assegna viaggi ai veicoli, deve anche conoscere altre corse pianificate per il veicolo. Per questo motivo, i seguenti diagrammi illustrano il modello dei dati della risorsa Trip
insieme al diagramma per la risorsa Vehicle
associata. Puoi esaminare entrambi i diagrammi per esplorare
le relazioni tra le due risorse, tenendo presente quanto segue:
- Le corse vengono assegnate a un veicolo in base all'ID.
- L'associazione con il veicolo di viaggio è di tipo one-to-one. In altre parole, un determinato viaggio potrebbe essere l'unico viaggio programmato per il veicolo o uno dei molti viaggi per il veicolo.
- Gli oggetti Trip contengono due elenchi di tappe di viaggio, uno per il viaggio stesso e uno per il veicolo assegnato. Questa procedura è spiegata più dettagliatamente in questo documento.
- Il veicolo on demand ha anche un elenco di tappe di viaggio, descritto più nel dettaglio in questo documento.
Modello dei dati di viaggio
Modello dei dati del veicolo
Tipi di viaggio
Quando il servizio crea una corsa, può impostare il campo tripType
su uno dei seguenti valori: EXCLUSIVE
o SHARED
.
Viaggi esclusivi
Una corsa esclusiva è una corsa il cui viaggio non si sovrappone ad altre corse e che il veicolo completa prima o dopo altre corse della sua programmazione. Ciò significa che quando il tuo sistema assegna corse esclusive, può assegnarle solo a un veicolo da completare in sequenza, non contemporaneamente. Per spiegare meglio, puoi creare viaggi esclusivi con una qualsiasi delle seguenti caratteristiche:
- Una corsa con un singolo prelievo e una sola consegna per un veicolo senza altre corse in programma.
- Una corsa con punto di prelievo, tappa intermedia e discesa di un veicolo senza un'altra corsa in programma.
- Una corsa con punto di partenza e arrivo aggiunti alla fine di una corsa già programmata per il veicolo. In questi casi, ogni corsa è esclusiva l'altra, ma le corse vengono ordinate in sequenza. Inoltre, queste corse possono includere destinazioni intermedie, se necessario.
Viaggi condivisi
Un viaggio condiviso è un viaggio il cui viaggio può sovrapporsi ad altre prenotazioni di viaggi. Per questi tipi di corse, il sistema può assegnarle in modo che si verifichino in concomitanza con le destinazioni tra interfoliazione. Ad esempio, l'abbandono per una corsa può avvenire dopo il prelievo per un'altra corsa. Inoltre, per le corse condivise non è consentito utilizzare tappe intermedie.
In genere, si utilizza una corsa condivisa per uno degli scenari di pooling condiviso illustrati nella sezione Scenari di viaggio.
Tappe del viaggio
Per Google Maps, una tappa è un luogo lungo un percorso, di solito definito da una
coordinata di latitudine/longitudine. Per le corse on demand, una tappa è rappresentata da
un oggetto TripWaypoint
, che contiene informazioni aggiuntive come
le seguenti:
- L'ID viaggio
WaypointType
, di ritiro, intermedio o consegna- Informazioni su percorso e distanza tra la tappa precedente e quella attuale
- Condizioni del traffico lungo il percorso verso la tappa della corsa
- Tempo di percorrenza e orario di arrivo stimato per raggiungere la tappa
Consulta i riferimenti:
Tipi di tappe del viaggio
Una tappa del viaggio è definita in relazione al ciclo di vita generale di un percorso con un veicolo:
- Punto di arrivo del ritiro: utilizzato per l'origine o l'inizio di un viaggio, ad esempio quando un autista ritira un ordine di cibo per la consegna successiva o quando un autista prende una persona per farla scendere in un secondo momento.
- Strade intermedia: destinazione intermedia che può essere utilizzata per vari scopi, ad esempio quando un conducente fa scendere un passeggero dello stesso utente che ha effettuato la prenotazione, ma la corsa in sé non è completa, in quanto rimangono più passeggeri. Questa tappa è facoltativa e può essere utilizzata solo per le corse esclusive.
- Puntata di arrivo: da utilizzare per la posizione finale del viaggio, ad esempio quando il passeggero rimanente scende dal veicolo.
Elenchi di tappe dei viaggi
Un'entità Trip
include due elenchi di tappe, ognuno dei quali è un campo ripetuto di tipo TripWaypoint
. Un elenco descrive i campi necessari per la corsa e l'altro per descrivere tutte le tappe rimanenti per il veicolo associato alla corsa. In questo modo hai un quadro completo di tutti gli elementi
del viaggio: la corsa e l'intero percorso del veicolo.
- Tappe rimanenti per il veicolo: un campo chiamato
vehicle_waypoints
. Contiene tutte le tappe rimanenti per tutte le corse assegnate al veicolo. - Tappe rimanenti per la corsa: un campo chiamato
remaining_waypoints
. Contiene le tappe che il veicolo deve viaggiare in sequenza prima del punto di partenza finale della corsa. Vedi gli scenari in Scenari di viaggio.- Per un viaggio con una sola destinazione assegnato a un veicolo senza altre corse nel programma, verranno inclusi solo il punto di prelievo e la destinazione, supponendo che il veicolo non abbia lasciato la tappa di prelievo.
- Per qualsiasi altro scenario di corsa in cui il veicolo è programmato anche per
altre corse, le tappe rimanenti per qualsiasi corsa lungo l'itinerario
includeranno tutte le tappe di altre corse che il veicolo deve attraversare
prima di raggiungere la tappa di discesa per quella corsa. Ad esempio, in una corsa di andata e ritorno in cui il veicolo è diretto verso la discesa per la corsa A, le tappe rimanenti per la corsa B includeranno la tappa di discesa per la corsa A. Fleet Engine calcola queste informazioni utilizzando il campo
vehicle_waypoints
.
Consulta il riferimento per l'entità Trip
: gRPC o REST.
Scenari di viaggio
I seguenti diagrammi illustrano una varietà di scenari di corsa supportati. In
questi scenari, solo il viaggio di pooling condiviso è di tipo SHARED
; tutti gli altri
sono EXCLUSIVE
. I diagrammi mostrano anche lo stato della corsa e le restanti tappe del veicolo che esegue la corsa, concetti descritti più avanti in questa guida.
Viaggio con una sola destinazione
Un viaggio con una sola destinazione è un viaggio EXCLUSIVE
con un
punto di prelievo e un punto di arrivo. Ad esempio, un autista prende un passeggero da un luogo e lo trasporta a un altro oppure un autista recupera un ordine di consegna di cibo da un ristorante e lo consegna a un cliente.
Viaggi con più destinazioni
Un viaggio con più destinazioni è un viaggio EXCLUSIVE
che contiene una o più destinazioni intermedie tra le località di prelievo e destinazione. Ad esempio, tre clienti di ridesharing prenotano una corsa insieme dallo
smartphone di una persona, ma ciascuno ha destinazioni distinte.
Corse consecutive
Le corse consecutive sono corse EXCLUSIVE
che contengono una serie di corse indipendenti che si verificano una subito dopo l'altra. Ogni corsa nella catena può essere singola o più destinazioni. In questo scenario, un conducente si impegna a prendere un altro cliente prima di completare la corsa attuale.
Queste corse possono essere assegnate solo ai veicoli che consentono una pianificazione
back to back. Consulta il riferimento Vehicle
REST e
gRPC.
Viaggi di raggruppamento condivisi
Una corsa in pool condivisa è diversa dagli altri tipi di corse. Innanzitutto, deve essere una corsa SHARED
, non una corsa EXCLUSIVE
.
In questo caso, il veicolo esegue le corse contemporaneamente invece che in sequenza, come nelle corse esclusive. Mentre una corsa in pool condivisa condivide il suo
viaggio con altri viaggi, non condivide le informazioni
sui luoghi di partenza e arrivo tra le corse. Ogni viaggio è invece una prenotazione esclusiva, in modo che l'utente finale che ha prenotato un viaggio non possa vedere le informazioni su prelievo o destinazione per qualsiasi altro viaggio diverso dal proprio. Ad esempio:
- Un servizio navetta aeroportuale prevede il trasferimento di vari clienti presso la loro residenza e il deposito presso i vari terminal aeroportuali lungo il percorso. La persona 2 potrebbe utilizzare la tua app consumer per monitorare l'avanzamento del viaggio, ma la sua app mostra solo la sua parte del percorso e non il luogo in cui è stata presa la persona 1 o il luogo in cui la persona 1 verrà lasciata, anche se due parti del percorso si sovrappongono.
- Un corriere ritira tre ordini di cibo dallo stesso ristorante per farli consegnare a diverse residenze dei clienti. Utilizzando la tua app consumer,
la persona 3 può vedere dove e quando è stato ritirato il cibo e vedere il
percorso del conducente, ma non può vedere i punti di consegna del cibo per le persone 1 e 2.
Stato del viaggio e relativo ciclo di vita
Questa sezione descrive lo stato della corsa e il suo impatto sul veicolo, nonché i vari scenari che incontri quando assegni e gestisci le corse on demand.
In genere un viaggio prevede vari stati, dalla creazione al completamento. In generale, una corsa può essere attiva o non attiva, a seconda del suo stato. Lo stato del viaggio ha un impatto su una varietà di scenari d'uso con Fleet Engine, oltre alla possibilità di identificare lo stato di avanzamento del veicolo lungo il percorso. Il resto di questo documento illustra questi scenari.
La seguente tabella elenca lo stato delle corse in base ai tipi attivi e non attivi.
Stati percorsi attivi | Stati percorsi inattivi |
---|---|
NEW UNKNOWN_TRIP_STATUS ENROUTE_TO_PICKUP ARRIVED_AT_PICKUP ENROUTE_TO_INTERMEDIATE_DESTINATION ARRIVED_AT_INTERMEDIATE_DESTINATION ENROUTE_TO_DROPOFF
|
COMPLETE CANCELED
|
Stato del viaggio e tappe rimanenti del veicolo
Quando assegni corse aggiuntive a un veicolo che sta già eseguendo una corsa, devi comprendere la relazione tra le tappe rimanenti per il veicolo e il modo in cui lo stato della corsa influisce su quelle restanti.
Ad esempio, potresti assegnare una nuova richiesta di ridesharing a un veicolo che supporta solo corse esclusive e si trova nel bel mezzo di una corsa. In questo caso, devi modellare la corsa come una corsa back-to-back. Quando assegni una corsa di questo tipo, il sistema deve garantire che le tappe per la nuova corsa avvengano dopo le tappe della corsa in corso.
Durante il viaggio del veicolo, Fleet Engine rimuove una tappa precedente del percorso dall'elenco delle tappe rimanenti del veicolo solo quando il veicolo segnala che si sta per raggiungere la destinazione successiva o è stata completata. ovvero:
- ENROUTE_TO_INTERMEDIATE_DESTINATION
- ENROUTE_TO_DROPOFF
- COMPLETATO
Quando lo stato della corsa diventa COMPLETED
, Fleet Engine rimuove la tappa finale della corsa dall'elenco di tappe rimanenti del veicolo.
Al contrario, i cambiamenti di stato che indicano l'arrivo a una tappa in genere non hanno alcun effetto sull'elenco delle tappe rimanenti per il veicolo:
- ARRIVED_AT_PICKUP
- ARRIVED_AT_INTERMEDIATE_DESTINATION
- ARRIVED_AT_DROPOFF
Esempio con una corsa on demand: supponiamo che l'autista prenda un
cliente dalla sua residenza, lo trasporta in un luogo in cui attende che
il cliente completi un'attività e poi lo riporta alla sua
casa. Una volta creato, il percorso prevede tre tappe: PICKUP
,
INTERMEDIATE
e DROPOFF
. La tabella seguente illustra i risultati di una query per le tappe rimanenti in vari stati del percorso:
Stato del viaggio | Tappe rimanenti |
---|---|
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 |
Requisiti di stato per i viaggi riassegnati o annullati
Prima di eseguire una delle seguenti azioni, devi impostare lo stato della corsa su
NEW
o CANCELED
.
- Quando modifichi le assegnazioni dei veicoli per una corsa. Ad esempio, se un conducente rifiuta l'assegnazione di un veicolo per una corsa e quest'ultimo deve essere riassegnato a un altro veicolo.
- Quando cancelli l'assegnazione di un veicolo per una corsa. Ad esempio, se un autista
annulla una corsa lungo il percorso e vuoi annullare l'assegnazione del veicolo, lo stato deve essere
NEW
oCANCELED
.
Risultati di ricerca basati sullo stato del viaggio
Quando utilizzi il servizio SearchTrips
per un veicolo specifico, viene restituito l'elenco
delle corse attive in SearchTripsResponse
. Le corse attive vengono visualizzate anche nel
campo active_trips
dell'entità Vehicle
. Per i dettagli, consulta il riferimento SearchTripsResponse
: gRPC o REST.
Pertanto, tutte le corse con stato attivo vengono visualizzate nel campo active_trips
,
ma non tutte le corse completate o annullate.