Disponibilite et localisation
Statuts de disponibilite, planning de shifts et suivi GPS des chauffeurs.
Disponibilite et localisation
Statuts de disponibilite
Chaque chauffeur possede un statut gere par une machine a etats (workflow Symfony). Trois statuts existent :
| Statut | Code | Couleur | Description |
|---|---|---|---|
| Disponible | available | Vert | Le chauffeur est en ligne et pret a recevoir des taches |
| Occupe | busy | Orange | Le chauffeur a des taches actives en cours |
| Hors ligne | off | Gris | Le chauffeur est deconnecte ou en pause |
Transitions
| Transition | De | Vers | Qui |
|---|---|---|---|
go_online | off | available | Le chauffeur (depuis l'app mobile) |
go_offline | available, busy | off | Le chauffeur (depuis l'app mobile) |
force_offline | Tout statut | off | Administrateur uniquement |
Garde sur go_offline : un chauffeur ne peut pas passer hors ligne s'il a des taches actives (pickup_in_progress, delivery_in_progress, in_transit). Il doit d'abord terminer ou echouer ses taches en cours.
Chaque changement de statut declenche une notification temps reel via Mercure vers le tableau de bord (page Dispatch).
Planning de shifts
Chaque chauffeur peut avoir des horaires de travail configures :
| Champ | Description |
|---|---|
Debut de shift (shiftStartsAt) | Heure de debut de service |
Fin de shift (shiftEndsAt) | Heure de fin de service |
Taches max par jour (maxTasksPerDay) | Nombre maximal de taches assignables par jour |
Ces champs sont modifiables par le chauffeur depuis l'app mobile (Profil > Modifier le shift) et par l'administrateur depuis le tableau de bord.
Localisation GPS en temps reel
L'application mobile du chauffeur envoie sa position GPS en continu au backend. Chaque mise a jour contient :
| Donnee | Description |
|---|---|
| Latitude / Longitude | Coordonnees GPS |
Cap (heading) | Direction en degres (0-359) |
Vitesse (speed) | Vitesse au sol en km/h |
Horodatage (lastLocationAt) | Heure de la derniere mise a jour |
Les positions sont traitees de maniere asynchrone (via Symfony Messenger) pour ne pas bloquer l'application du chauffeur.
Position de depart (domicile)
Les champs homeLatitude et homeLongitude stockent l'adresse de depart du chauffeur. Ces coordonnees sont utilisees par l'algorithme d'optimisation de tournees pour calculer les distances et les temps de trajet initiaux.
Affichage sur la carte Dispatch
Les chauffeurs disponibles et occupe apparaissent en temps reel sur la carte Dispatch (/map) :
- Marqueur colore selon le statut (vert = disponible, orange = occupe)
- Direction indiquee par le cap (heading)
- Derniere activite horodatee
Capacite et charge
La capacite d'un chauffeur est determinee par :
- Le nombre max de taches par jour (
maxTasksPerDay) - La capacite du vehicule en poids (kg) et nombre de colis
Lors de l'assignation, le systeme de suggestions prend en compte la charge actuelle du chauffeur par rapport a sa capacite pour calculer un score de recommandation.
Voir aussi : Gerer les chauffeurs | Assignation des taches