Swaloo Docs
Expéditions

Statuts des colis

Comprendre le cycle de vie complet d'un colis et de ses taches sur Swaloo.

Statuts des colis

Un colis sur Swaloo suit un cycle de vie en 8 statuts. En interne, chaque colis est compose de taches (collecte, livraison, transfert, rescue) qui suivent leur propre machine a etats a 11 statuts. Le statut du colis est derive automatiquement de la progression de ses taches.


Statuts du colis (Shipment)

Cycle de vie principal

Ces statuts representent la progression normale d'un colis du depot au destinataire :

StatutCodeCouleurDescription
En attente d'approbationpending_approvalGrisLe colis a ete soumis via le portail marchand ou le formulaire public. Il attend la validation d'un operateur avant d'etre pris en charge.
En attentependingGrisLe colis est confirme et attend sa premiere action (assignation a un chauffeur, collecte, ou depart en livraison). C'est le statut par defaut a la creation.
Ramassage en courspickup_in_progressBleu infoUn chauffeur est en route vers le point de collecte pour recuperer le colis.
Recuperepicked_upCyanLe colis a ete recupere par un chauffeur au point de collecte. Il est en possession du transporteur mais pas encore en livraison.
En routein_transitBleuLe colis est en cours d'acheminement vers le destinataire.
LivredeliveredVertLe colis a ete remis avec succes au destinataire. Statut terminal.

Statuts exceptionnels

StatutCodeCouleurDescription
RetourreturnedOrangeLe colis a ete retourne a l'expediteur apres un echec definitif de livraison. Voir Retours. Statut terminal.
AnnulecancelledRougeL'expedition a ete annulee, avant ou pendant l'operation. Statut terminal.

Enchainement typique

pending_approval ──(approuver)──> pending

            ┌────────────────────────┤
            │                        │
    (avec collecte)          (sans collecte)
            │                        │
            v                        │
   pickup_in_progress                │
            │                        │
            v                        │
        picked_up                    │
            │                        │
            v                        v
       in_transit ──────────> in_transit

                                     v
                                 delivered

Les statuts terminaux (delivered, returned, cancelled) mettent fin au cycle de vie : aucune modification n'est possible apres.


Statuts des taches (Task)

Chaque colis genere une ou plusieurs taches : collecte (pickup), livraison (delivery), transfert (transfer), rescue, etc. Chaque tache suit sa propre machine a etats, plus fine que celle du colis.

StatutCodeCouleurDescription
En attente du ramassagewaiting_for_pickupGrisLa tache de livraison attend que le colis soit d'abord recupere via une tache de collecte ou un transfert depot.
Pre-assignee (en attente)assigned_waitingIndigoUn chauffeur est pre-assigne a la tache, mais elle attend encore la collecte du colis avant de devenir active.
En attentependingGrisLa tache est prete a etre prise en charge. Elle peut etre assignee a un chauffeur.
AssigneeassignedBleuLa tache est assignee a un chauffeur. Il peut demarrer l'approche.
En route (collecte)pickup_in_progressBleu cielLe chauffeur est en route vers le point de collecte.
Recupereepicked_upVioletLe chauffeur a recupere le colis. Il peut maintenant demarrer la livraison.
En route (livraison)delivery_in_progressVioletLe chauffeur est en route vers le destinataire.
En livraisonin_transitOrangeLe colis est en cours de livraison active.
LivreedeliveredVertLa tache est terminee avec succes. Statut terminal.
EchecfailedRougeLa tache a echoue (destinataire absent, adresse incorrecte, refus, etc.). Le dispatcher peut retenter ou creer une tache rescue. Statut terminal.
AnnuleecancelledRougeLa tache a ete annulee par un dispatcher. Statut terminal.

Transitions des taches

Les transitions sont contrôlees par le moteur de workflow Symfony. Certaines sont reservees a des roles specifiques.

Assignation

TransitionDeVersRole requis
assignpendingassignedDispatcher
claimpendingassignedChauffeur (marketplace uniquement)
assign_waitingwaiting_for_pickupassigned_waitingDispatcher
unassignassignedpendingDispatcher
unassign_waitingassigned_waitingwaiting_for_pickupDispatcher

Collecte

TransitionDeVersRole requis
start_approachpending, assignedpickup_in_progressChauffeur
pick_uppending, assigned, pickup_in_progresspicked_upChauffeur
unlock_deliverywaiting_for_pickuppendingSysteme
unlock_delivery_assignedassigned_waitingassignedSysteme

Livraison

TransitionDeVersRole requis
start_deliverypending, assignedin_transitChauffeur ou Dispatcher
start_transitpicked_upin_transitChauffeur
start_delivery_approachpicked_updelivery_in_progressChauffeur
deliverin_transit, delivery_in_progressdeliveredChauffeur

Echec et reprise

TransitionDeVersRole requis
fail_pickuppickup_in_progress, picked_upfailedChauffeur ou Dispatcher
fail_transitin_transit, delivery_in_progressfailedChauffeur ou Dispatcher
retryfailedpendingDispatcher

Annulation

TransitionDeVersRole requis
cancel_pendingpendingcancelledDispatcher
cancel_waitingwaiting_for_pickupcancelledDispatcher
cancel_assignedassigned, assigned_waitingcancelledDispatcher
cancel_approachingpickup_in_progresscancelledDispatcher
cancel_deliveringdelivery_in_progresscancelledDispatcher
cancel_in_transitin_transitcancelledDispatcher

Relation entre taches et statut du colis

Le statut du colis est derive automatiquement de la progression de ses taches :

Evenement sur la tacheStatut du colis
Tache de collecte passe en pickup_in_progresspickup_in_progress
Tache de collecte passe en picked_uppicked_up
Tache de livraison passe en in_transit ou delivery_in_progressin_transit
Tache de livraison passe en delivereddelivered
Toutes les taches annuleescancelled
Retour au depot apres echec definitifreturned

Evenements du colis

Chaque changement de statut ou action importante genere un evenement dans l'historique du colis :

EvenementCodeDescription
Colis creeshipment_createdLe colis a ete cree
Statut modifiestatus_changedLe statut du colis a change
Collecte termineetask_pickup_completedLa tache de collecte est terminee
Livraison termineetask_delivery_completedLa tache de livraison est terminee
Tache echoueetask_failedUne tache a echoue
Reprise incidentincident_recoveryReprise apres un incident
Rescue creerescue_createdUne tache rescue a ete creee pour retenter la livraison
Chauffeur assignedriver_assignedUn chauffeur a ete assigne a une tache
Livraison deverrouilleedelivery_unlockedLa tache de livraison a ete deverrouillee apres la collecte
Transfert creetransfer_createdUn transfert entre depots a ete cree
Colis deposepackage_depositedLe colis a ete depose dans un depot
Colis collectepackage_collectedLe colis a ete collecte depuis un depot
Collecte groupee creeegrouped_pickup_createdLe colis a ete ajoute a une collecte groupee
Retire de la collecte groupeeremoved_from_grouped_pickupLe colis a ete retire d'une collecte groupee
Modifie par le marchandshipment_updated_by_merchantLe marchand a modifie les informations du colis
Tournee creeedelivery_run_createdUne tournee de livraison a ete creee
Ajoute a la tourneedelivery_run_task_addedLa tache a ete ajoutee a une tournee
Retire de la tourneedelivery_run_task_removedLa tache a ete retiree d'une tournee
Ejecte de la tourneedelivery_run_task_ejectedLa tache a ete ejectee d'une tournee
CommentairecommentUn commentaire a ete ajoute
SystemesystemEvenement systeme automatique

Notifications

Chaque changement de statut declenche :

  • Une mise a jour en temps reel via Mercure (WebSocket/SSE)
  • Un email de notification (si configure)
  • Un evenement webhook (si configure)

Voir aussi : Gestion des colis | Creer une expedition

Statuts des colis | Documentation Swaloo