App chauffeur — la tournée du jour

Flux quotidien du chauffeur sur l'app mobile — notification de tournée, photos terrain, quantités réelles, signalement de problème.

L'app chauffeur est conçue pour un usage terrain : navigation entre clients, photos horodatées, signalement de problèmes, mode hors-ligne. L'écran d'accueil affiche la tournée du jour dès le login.

Prérequis

  • Le chauffeur a été créé côté admin (voir Installer l'app technicien — même mécanisme e-mail + PIN).
  • Le chauffeur est rattaché à un transporteur (établissement avec rôle TRANSPORTER côté TrackDéchets).
  • Une tournée lui a été assignée par l'admin transporteur (voir Gérer les tournées) — Bordoly envoie alors une notification push DRIVER_SCHEDULE_ASSIGNED.

Étape 1 — L'écran d'accueil

Au login, le chauffeur arrive sur Aujourd'hui. La page affiche :

  • Les tournées du jour (/driver/schedules?filter=today), regroupées par tournée.
  • Les tournées À venir (jours suivants), accessibles plus bas.
  • Pour chaque tournée : nombre d'enlèvements et compteur "X/Y réalisés".

En tapant sur une tournée, le chauffeur arrive sur Détail de la tournée (avec carte et liste). Chaque enlèvement affiche son rang dans la tournée, le nom du site et son statut courant.

Étape 2 — Notifications push

Le chauffeur reçoit une notification push quand l'admin transporteur crée ou réassigne sa tournée — fan-out via Expo Push API + insertion d'une notification in-app DRIVER_SCHEDULE_ASSIGNED. Les autres événements (annulation côté producteur, modification d'horaire) ne déclenchent pas encore de push spécifique côté chauffeur — c'est un point de roadmap. Le chauffeur doit donc rafraîchir sa tournée régulièrement (un RefreshControl est disponible en haut des listes).

Étape 3 — Ouvrir un enlèvement

Le chauffeur tape sur la ligne d'un enlèvement : la fiche affiche :

  • L'adresse du site (bouton Ouvrir dans Maps pour la navigation).
  • Les contacts (administrateur producteur + administrateur transporteur, avec deep-link téléphone).
  • Les contenants attendus (issus de la liste des TenantWasteContainerLinks actifs pour le site producteur).

Deux boutons en bas : Terminer l'enlèvement ou Signaler un problème.

Étape 4 — Terminer l'enlèvement

Pré-requis — l'enlèvement doit être au statut En cours (IN_PROGRESS). C'est l'admin transporteur qui fait la transition SCHEDULED → IN_PROGRESS depuis la web app (bouton Confirmer l'arrivée (BSD)), au moment où le chauffeur arrive. C'est cette action côté admin qui crée le BSD sur TrackDéchets. Si le chauffeur ouvre l'enlèvement mais ne voit pas le bouton Terminer, c'est que l'admin n'a pas encore confirmé.

Quand le chauffeur appuie sur Terminer l'enlèvement, il passe par un wizard 3 étapes :

  1. Photos — au moins une photo obligatoire (jusqu'à 3). Stockées en base sous forme d'attachement pickup_attachments de type confirm.
  2. Quantités — confirme ou ajuste les quantités collectées par contenant.
  3. Note (optionnel) — commentaire libre pour l'administrateur.

À la validation : l'enlèvement passe au statut Terminé (COMPLETED), l'événement PICKUP_COMPLETED est inséré dans la timeline, le compteur de la tournée s'incrémente et un haptic de succès joue. Une notification est envoyée aux administrateurs producteurs (fan-out PICKUP_COMPLETED).

Étape 5 — Signaler un problème

Si l'enlèvement ne peut pas se faire normalement, le chauffeur appuie sur Signaler un problème. Wizard 4 étapes :

  1. TypeEnlèvement partiel, Accès refusé, Matériel non conforme, Autre.
  2. Quantités (si type partiel ou non conforme) — saisie des deltas réels par contenant.
  3. Détails — description (min 20 caractères) + jusqu'à 3 photos (pickup_attachments de type report).
  4. Suite — switch Problème bloquant (impossible de continuer la tournée).

Si non bloquant : le statut de la demande reste IN_PROGRESS, mais les notes et photos sont enregistrées pour information. Si bloquant : la demande passe au statut Refusé (REFUSED), un événement PICKUP_REFUSED est inséré avec actor: "driver" + le type de problème, et un audit pickup.refuse (actor driver) est créé.

Étape 6 — Côté exutoire (TrackDéchets)

Une fois le BSD créé (au moment où l'admin transporteur a cliqué Confirmer l'arrivée), la suite du cycle BSD se passe sur TrackDéchets — Bordoly ne propage pas automatiquement les signatures intermédiaires de TD.

Important : Le statut Terminé côté Bordoly traduit la clôture de l'enlèvement par le chauffeur, pas la signature de réception côté exutoire. Pour le moment, la signature exutoire vit uniquement sur TrackDéchets ; un webhook TD permettant de propager bsdReceived vers Bordoly est sur la roadmap.

Mode hors-ligne

Les actions terrain (Terminer, Signaler) sont mises en file locale via un mutation queue quand la connexion réseau est absente. Voir Mode hors-ligne pour le détail (réessais, gestion des échecs).

Bonnes pratiques

  • Toujours photographier au moins le contenant + l'étiquette si un BSD est en jeu.
  • En cas de doute sur le type de déchet ou la quantité, signalez plutôt que de terminer — l'admin pourra clôturer manuellement côté web (FORCE_CLOSED) avec un audit clair.
  • Ne pas confondre Terminer l'enlèvement (action chauffeur) avec Confirmer l'arrivée (BSD) (action admin transporteur, qui crée le BSD).

Et après ?

Vous êtes bloqué ? Écrivez-nous à support@bordoly.fr — engagement Standard : réponse sous 4h ouvrées (lun-ven 9h-18h CET). Entreprise : sous 1h ouvrées (8h-20h CET).

Cet article vous a-t-il aidé ?