Ce fichier liste les statuts et transitions réellement codés dans DiddiFood. Il s'adresse aux développeurs, au frontend et à la QA.
Commande
| Depuis | Vers | Déclencheur |
|---|---|---|
placed |
preparing, rejected, cancelled |
Restaurant ou client selon l'action. |
preparing |
ready |
Personnel restaurant marque la commande prête. |
ready |
picked_up |
DiddiSend ou le parcours pickup autorisé confirme la prise. |
picked_up |
delivered |
DiddiSend ou pickup autorisé confirme la remise. |
delivered, rejected et cancelled sont terminaux. Le pickup reste désactivé en MVP par DIDDIFOOD_PICKUP_ENABLED=false.
Une commande restée placed jusqu'à respond_by est annulée automatiquement par Food avec cancellation_reason=restaurant_unresponsive. La valeur par défaut est cinq minutes et se règle au déploiement avec DIDDIFOOD_RESTAURANT_RESPONSE_TIMEOUT_SECONDS.
Paiement
pending peut devenir requires_action, succeeded, failed, cancelled, expired ou collected_cash. succeeded et collected_cash peuvent devenir refunded ou partially_refunded; partially_refunded peut devenir refunded.
Remboursement
submitted devient approved ou rejected; approved devient processing; processing devient refunded ou failed.
Livraison
DiddiSend est la source de vérité. Food projette requested, assigned, picked_up, in_transit, delivered ou failed; Food ne réimplémente pas la machine livreur.
Wallet et retrait
Les entrées wallet sont pending, available ou reserved. Un retrait suit requested, processing, succeeded, failed ou cancelled. Le crédit cash dépend de delivery.cash_remitted et de PAYOUT_CONSUMER_ENABLED.
Un retrait commence par GET .../wallet/withdrawal-quote. Le manager confirme le
quote_id reçu dans POST .../wallet/withdrawals; Food vérifie le devis stocké
et conserve le montant/frais confirmés jusqu'à son expiration.