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.