ADR-2026-10-30 — Expiration, retraits et disponibilité DiddiFood

  • Date : 2026-10-30
  • Statut : Acceptée
  • Périmètre : DiddiFood MVP/V1
  • Décideur : Produit DiddiFood

Contexte

Le paiement en ligne est confirmé avant l'acceptation et la préparation. Le restaurant dispose d'un délai de réponse de cinq minutes. Les retraits du wallet sont exécutés par DiddiPay et la livraison reste sous la responsabilité de DiddiSend.

Décisions

1. Expiration d'une commande non confirmée

Quand une commande expire après le délai de réponse restaurant, Food annule la commande avec le motif restaurant_unresponsive. Si une intention DiddiPay existe encore, Food doit aussi demander son annulation avec le motif order_expired. Une intention déjà succeeded ne doit pas être annulée : elle reste soumise au circuit de remboursement Support/Backoffice puis DiddiPay.

2. Devis de retrait

Le devis de retrait est engageant après confirmation par le gérant. Le montant demandé, les frais et le net versé doivent rester ceux du devis. Toute modification de frais nécessite un nouveau devis et une nouvelle confirmation.

3. Horaires et disponibilité des plats

Les horaires qui traversent minuit ne sont pas pris en charge en V1. Le restaurant doit découper la plage en deux jours.

La disponibilité d'un plat est pilotée manuellement par le personnel autorisé. Food ne doit pas réactiver automatiquement un plat le lendemain. Le bouton « indisponible aujourd'hui » pourra rester documenté comme évolution, mais ne doit pas être considéré comme une réactivation automatique active en V1.

4. Rayon de livraison

Le rayon maximal configurable d'un restaurant est fixé à 10 km. Une commande située au-delà doit être refusée avec OUTSIDE_SERVICE_RADIUS.

5. Arrivée du coursier

DiddiSend reste la source de vérité. Food ne déduit pas l'arrivée à partir de la position et ne modifie pas le statut de livraison. DiddiSend doit publier un événement interservice lorsque le coursier atteint le point de collecte afin que Food puisse notifier le restaurant.

Conséquences

  • L'annulation d'une intention DiddiPay à l'expiration doit être idempotente et traçable avec la référence food-order:<order_id>.
  • Le verrouillage du devis doit être conservé dans le retrait Food et transmis à DiddiPay.
  • La validation service_radius_km doit limiter la valeur à 10 km.
  • Le comportement until_end_of_day doit être aligné sur la disponibilité manuelle avant son activation en staging.
  • Le contrat d'événement d'arrivée doit être confirmé avec DiddiSend avant de développer la notification restaurant.

Hors périmètre de cet ADR

  • DiddiSend garde la décision opérationnelle en cas d'échec de livraison.
  • Support/Backoffice garde la décision d'accorder ou non un remboursement.
  • Le retrait sur place reste désactivé pour le MVP et prévu en V1.