Trajets à la demande

Ce document décrit le service de trajets à la demande dans Fleet Engine. Nous partons du principe que vous avez lu la section Qu'est-ce que Fleet Engine ? et que vous connaissez les fonctionnalités de service Fleet Engine spécifiques dont vous avez besoin.

En lisant cette documentation, tenez compte des points suivants:

  • Vous attribuez des trajets aux véhicules pour modéliser l'association réelle entre le trajet et le conducteur qui l'effectue. Consultez la page Présentation des véhicules pour mieux comprendre le fonctionnement des véhicules dans Fleet Engine.
  • Ce document décrit également certains éléments du véhicule qui ne s'appliquent qu'aux trajets à la demande.
  • Fleet Engine pour les trajets à la demande utilise deux ressources: Trip et Vehicle. Fleet Engine fournit à la fois un service gRPC et des interfaces REST :
    • TripService: gRPC et REST
    • VehicleService: gRPC et REST
    • Par souci de simplicité, ce manuel utilise des exemples gRPC.

Qu'est-ce qu'un voyage à la demande ?

Dans Fleet Engine, un trajet représente un trajet à la demande pouvant atteindre divers objectifs de transport. Par exemple:

  • Personnes: transportez une ou plusieurs personnes entre les lieux de prise en charge et de dépose.
  • Alimentation et biens: retrait d'une ou plusieurs commandes de repas à un établissement donné et déposez-les à un ou plusieurs destinataires à leur adresse.

Éléments de trajet

L'illustration suivante montre les éléments de base d'un trajet: l'ID du véhicule attribué, l'état du trajet et les points de cheminement du trajet. Les types de points de cheminement varient en fonction de l'étape du trajet: prise en charge, point de cheminement intermédiaire et dépose. Dans tout trajet, une destination ou un point de cheminement intermédiaire sont facultatifs. Dans l'exemple illustré sur l'image, le véhicule est arrivé au lieu de prise en charge.

Modèle de données pour les trajets

Lorsque votre backend attribue des trajets aux véhicules, il doit également connaître les autres trajets programmés pour celui-ci. Pour cette raison, les schémas suivants illustrent le modèle de données de la ressource Trip, ainsi que le schéma de la ressource Vehicle associée. Vous pouvez consulter les deux diagrammes pour explorer les relations entre les deux ressources, en gardant à l'esprit les points suivants:

  • Les trajets sont attribués à un véhicule à l'aide de son ID.
  • L'association trajet-véhicule est multi-à-un. Autrement dit, un trajet donné peut être le seul trajet programmé pour le véhicule ou l'un des nombreux trajets du véhicule.
  • Les objets Trip contiennent deux listes de points de cheminement de trajet, l'une pour le trajet lui-même et l'autre pour le véhicule attribué. Ceci est expliqué plus en détail dans ce document.
  • Le véhicule à la demande dispose également d'une liste de points de cheminement de trajet, qui est décrit plus en détail dans ce document.

Modèle de données sur les trajets

Modèle de données du véhicule

Types de trajets

Lorsque votre service crée un trajet, il peut définir le champ tripType comme suit: EXCLUSIVE ou SHARED.

Voyages exclusifs

Un trajet exclusif est un trajet dont le trajet ne chevauche pas d'autres trajets, et que le véhicule effectue avant ou après les autres trajets prévus dans son horaire. Cela signifie que lorsque votre système attribue des trajets exclusifs, il ne peut les attribuer qu'à un véhicule à effectuer dans l'ordre, et non simultanément. Par exemple, vous pouvez créer des trajets exclusifs présentant les caractéristiques suivantes:

  • Trajet comprenant un seul trajet et un seul dépôt pour un véhicule sans aucun autre trajet prévu.
  • Trajet avec une prise en charge, un point de cheminement intermédiaire et un dépose pour un véhicule sans autre trajet dans ses horaires.
  • Trajet dans lequel les usagers peuvent monter et descendre à la fin d'un trajet déjà planifié pour le véhicule. Dans ce cas, chaque trajet est exclusif à l'autre, mais les trajets sont classés les uns après les autres. En outre, ces trajets peuvent inclure des destinations intermédiaires, si nécessaire.

Trajets partagés

Un voyage partagé est un trajet dont le trajet peut chevaucher d'autres réservations de voyages. Votre système peut attribuer ces types de trajets pour qu'ils se produisent simultanément avec des destinations entrelacées. Par exemple, le dépôt d'un trajet peut se produire après la prise en charge d'un autre trajet. De plus, les trajets partagés ne peuvent pas utiliser de points de cheminement intermédiaires.

En règle générale, il s'agit d'un trajet partagé dans l'un des scénarios de pooling partagé illustrés dans la section Scénarios de trajet.

Points de cheminement du trajet

Pour Google Maps, un point de cheminement est un lieu situé sur un itinéraire, généralement défini par des coordonnées de latitude/longitude. Pour les trajets à la demande, un point de cheminement est représenté par un objet TripWaypoint, qui contient des informations supplémentaires telles que les suivantes:

  • ID du trajet
  • Le WaypointType : retrait, intermédiaire ou dépose
  • Informations sur le chemin et la distance entre le point de cheminement précédent du trajet et le point actuel
  • Conditions de circulation sur le trajet jusqu'au point de cheminement du trajet
  • Durée du trajet et heure d'arrivée prévue jusqu'au point de cheminement

Consultez les références:

Types de points de cheminement de trajet

Un point de cheminement pour un trajet est défini en fonction du cycle de vie général d'un trajet en véhicule:

  • Point de cheminement de retrait : utilisé pour le point de départ ou le début d'un trajet, par exemple lorsqu'un chauffeur récupère une commande de repas pour une livraison ultérieure, ou lorsqu'un chauffeur vient chercher une personne pour la déposer ultérieurement.
  • Point de cheminement intermédiaire : destination intermédiaire pouvant être utilisée à diverses fins, par exemple lorsqu'un chauffeur dépose un passager appartenant à la même équipe de réservation, mais que le trajet lui-même n'est pas terminé, car il reste plus de passagers. Ce point de cheminement est facultatif et ne peut être utilisé que pour des trajets exclusifs.
  • Point de cheminement de dépose : utilisé pour le lieu final du trajet, par exemple lorsque le passager restant quitte le véhicule.

Listes des points de cheminement de trajet

Une entité Trip comprend deux listes de points de cheminement, chacune correspondant à un champ répété de type TripWaypoint. Une liste décrit les champs nécessaires pour le trajet lui-même, et l'autre décrit tous les points de cheminement restants pour le véhicule associé au trajet. Cela vous permet d'avoir une vue d'ensemble de tous les éléments du trajet: le trajet et l'intégralité du trajet du véhicule.

  • Points de cheminement restants pour le véhicule : champ intitulé vehicle_waypoints. Il contient tous les points de cheminement restants pour tous les trajets attribués au véhicule.
  • Points de cheminement restants pour le trajet : champ nommé remaining_waypoints. Elle contient les points de cheminement que le véhicule doit parcourir dans l'ordre avant le point de dépôt final du trajet. Consultez les scénarios dans la section Scénarios de trajet.
    • Pour un trajet à destination unique attribué à un véhicule sans aucun autre trajet dans ses horaires, cela comprendrait uniquement un lieu de prise en charge et de dépose, en supposant que le véhicule n'avait pas quitté le point de cheminement de prise en charge.
    • Pour tout autre scénario de trajet où le véhicule est également planifié pour d'autres trajets, les points de cheminement restants pour chaque trajet de son itinéraire incluent tous les points de cheminement des autres trajets que le véhicule doit traverser avant d'atteindre le point de cheminement de dépôt pour ce trajet. Par exemple, dans un trajet aller-retour où le véhicule est en route pour déposer le trajet A, les points de cheminement restants pour le trajet B incluent le point de cheminement de dépôt du trajet A. Fleet Engine calcule ces informations à l'aide du champ vehicle_waypoints.

Consultez la documentation de référence sur l'entité Trip: gRPC ou REST.

Scénarios de trajet

Les schémas suivants illustrent différents scénarios de trajet pris en charge. Dans ces scénarios, seul le trajet de pooling partagé est de type SHARED. Tous les autres sont de type EXCLUSIVE. Les schémas indiquent également l'état du trajet et les points de cheminement restants pour le véhicule effectuant le trajet (concepts décrits plus loin dans ce guide).

Voyage à destination unique

Un trajet à destination unique est un trajet de EXCLUSIVE avec un lieu de prise en charge et un lieu de dépose. Par exemple, un chauffeur prend en charge un passager d'un endroit et le transporte à un autre, ou il récupère une commande de livraison de repas auprès d'un restaurant et la dépose chez un client.

Trajets multidestinations

Un trajet à plusieurs destinations est un trajet EXCLUSIVE qui contient une ou plusieurs destinations intermédiaires entre les lieux de prise en charge et de dépose. Par exemple, trois clients de VTC réservent une course ensemble à partir du téléphone d'une personne, mais ont chacun des destinations distinctes.

Trajets aller-retour

Les trajets aller-retour sont des trajets EXCLUSIVE contenant une série de trajets indépendants qui se produisent l'un après l'autre. Chaque trajet de la chaîne peut être à destination unique ou multidestination. Dans ce scénario, le chauffeur s'engage à prendre en charge un autre client avant d'effectuer le trajet en cours.

Ces trajets ne peuvent être attribués qu'à des véhicules autorisant les horaires d'horaires consécutifs. Consultez la documentation de référence Vehicle sur REST et gRPC.

Voyages de pooling partagés

Un trajet avec pooling partagé diffère des autres types de trajets. Tout d'abord, il doit s'agir d'un trajet de SHARED, et non d'un trajet de type EXCLUSIVE. Ici, le véhicule exécute les trajets simultanément, plutôt que dans l'ordre comme pour les trajets exclusifs. Bien qu'un trajet avec pooling partagé partage son parcours avec d'autres trajets, les informations sur les lieux de prise en charge et de dépose ne sont pas partagées entre les trajets. Chaque voyage est une réservation exclusive, de sorte que l'utilisateur final qui a réservé un voyage ne peut pas consulter les informations de prise en charge ou de destination d'un autre voyage que le sien. Exemple :

  • Un service de navette aéroport récupère différents clients à leur domicile et les dépose dans différents terminaux de l'aéroport sur l'itinéraire. La personne 2 peut utiliser votre application consommateur pour suivre la progression du trajet, mais son application ne montre que sa partie du parcours, et non l'endroit où la personne 1 a été prise en charge ni l'endroit où la personne 1 va être abandonnée, même si certaines parties de son parcours se chevauchent.
  • Un livreur récupère trois commandes de repas dans le même restaurant et les livre à différentes résidences de clients. À l'aide de votre application grand public, la personne 3 peut voir où et quand sa nourriture a été retirée, et voir l'itinéraire du chauffeur, mais pas les lieux de dépôt des repas des personnes 1 et 2.

État du trajet et cycle de vie

Cette section décrit l'état du trajet et son impact sur le véhicule, ainsi que les différents scénarios que vous rencontrez lorsque vous attribuez et gérez des trajets à la demande.

Un trajet passe généralement par différents états, de sa création à son achèvement. De manière générale, un trajet peut être actif ou inactif, en fonction de son état. L'état du trajet a une incidence sur divers scénarios d'utilisation avec Fleet Engine, ainsi que sur la capacité à suivre la progression des véhicules tout au long du trajet. Ces scénarios sont abordés dans la suite de ce document.

Le tableau suivant répertorie l'état des trajets en fonction des genres actifs et inactifs.

États des trajets actifs États des trajets inactifs
NEW
UNKNOWN_TRIP_STATUS
ENROUTE_TO_PICKUP
ARRIVED_AT_PICKUP
ENROUTE_TO_INTERMEDIATE_DESTINATION
ARRIVED_AT_INTERMEDIATE_DESTINATION
ENROUTE_TO_DROPOFF
COMPLETE
CANCELED

État du trajet et points de cheminement restants du véhicule

Lorsque vous attribuez des trajets supplémentaires à un véhicule exécutant déjà un trajet, vous devez comprendre la relation entre les points de cheminement restants pour le véhicule et l'impact de l'état du trajet sur ces points de cheminement restants.

Par exemple, vous pouvez attribuer une nouvelle demande de partage de course à un véhicule qui n'accepte que des trajets exclusifs et qui est en train d'effectuer un trajet. Dans ce cas, vous modéliserez le trajet comme un trajet aller-retour. Lors de l'attribution d'un tel trajet, votre système doit s'assurer que les points de cheminement du nouveau trajet apparaissent après ceux du trajet en cours.

Pendant le parcours du véhicule, Fleet Engine supprime un point de cheminement d'un trajet précédent de la liste des points de cheminement restants du véhicule uniquement lorsque celui-ci signale qu'il est en route vers la destination suivante ou qu'il est terminé. Autrement dit, l'un des éléments suivants:

  • ENROUTE_TO_INTERMEDIATE_DESTINATION
  • ENROUTE_TO_DROPOFF
  • TERMINÉ

Lorsque l'état du trajet passe à COMPLETED, Fleet Engine supprime le point de cheminement final du trajet de la liste des points de cheminement restants du véhicule.

En revanche, les changements d'état indiquant l'arrivée à un point de cheminement n'ont généralement aucun effet sur la liste des points de cheminement restants pour le véhicule:

  • ARRIVED_AT_PICKUP
  • ARRIVED_AT_INTERMEDIATE_DESTINATION
  • ARRIVED_AT_DROPOFF

Prenons l'exemple d'un trajet à la demande: supposons que le conducteur vienne récupérer un client à son domicile, le transporte jusqu'à un lieu où il attend qu'il ait terminé une tâche, puis le ramène chez lui. Lors de sa création initiale, le trajet comporte trois points de cheminement: PICKUP, INTERMEDIATE et DROPOFF. Le tableau suivant illustre les résultats d'une requête pour les points de cheminement restants à différents états du trajet:

État du trajet Points de cheminement restants
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

Exigences relatives au statut des trajets réattribués ou annulés

Avant de pouvoir effectuer les opérations suivantes, vous devez définir l'état du trajet sur NEW ou CANCELED.

  • Lorsque vous modifiez les attributions de véhicules pour un trajet. Par exemple, si un conducteur refuse un véhicule pour un trajet et qu'il doit être réaffecté à un autre véhicule.
  • Lorsque vous effacez l'attribution d'un véhicule pour un trajet. Par exemple, si un conducteur annule un trajet en cours d'itinéraire et que vous souhaitez effacer l'attribution du véhicule, l'état doit être NEW ou CANCELED.

Résultats de recherche basés sur l'état du trajet

Lorsque vous utilisez le service SearchTrips pour un véhicule spécifique, il renvoie la liste des trajets actifs dans le SearchTripsResponse. Les trajets actifs apparaissent également dans le champ active_trips de l'entité Vehicle. Pour en savoir plus, consultez la documentation de référence sur SearchTripsResponse: gRPC ou REST.

Par conséquent, tous les trajets avec un état actif apparaissent dans le champ active_trips, contrairement aux trajets terminés ou annulés.

Étapes suivantes