Une réservation SLOXO a 4 statuts possibles stockés dans la base, avec leur libellé d'affichage :

CodeLibelléCouleur badge
`pending`En attentejaune
`confirmed`Confirméebleu clair
`cancelled`Annuléerose
`completed`Terminéegris

Tu vois ces statuts partout : Réservations, Calendrier, Tournée du jour, et l'historique.

Statut "En attente" (pending)

Quand : la cliente vient de finir sa réservation depuis ton lien.

Visible côté pro : badge jaune "En attente". Un point rouge clignotant apparaît sur l'icône Réservations du menu, avec un compteur (1, 2, 9+).

Action attendue : tu dois cliquer ✓ Accepter ou ✕ Refuser.

Conséquences :

  • La cliente a reçu un email "Demande envoyée"
  • Le créneau n'est pas définitivement libéré pour les autres clientes
  • Aucune sync vers Google Calendar à ce stade (event marqué "[En attente]" si Google connecté)

Statut "Confirmée" (confirmed)

Quand : tu as cliqué Accepter.

Visible côté pro : badge bleu clair "Confirmée".

Conséquences :

  • La cliente reçoit un email de confirmation (template "confirmed")
  • Le RDV apparaît dans Tournée du jour au moment voulu
  • Sync Google Calendar : event créé/mis à jour avec le statut confirmé
  • Une re-optimisation 2-opt est déclenchée en arrière-plan
  • Si c'est ton 1er RDV confirmé : événement `first_confirmed` enregistré (score Démarrer +10 pts)
  • Si c'est ton 3e : événement `three_confirmed` (+10 pts)

Statut "Annulée" (cancelled)

Quand :

  • Tu as cliqué Refuser sur une demande pending
  • Tu as cliqué Annuler sur un RDV confirmé
  • La cliente a annulé via le lien dans son email
  • (très rare) Une annulation automatique est intervenue (cas exceptionnels)
Visible côté pro : badge rose "Annulée". Le RDV passe dans la section Historique.

Conséquences :

  • Email envoyé selon la source : `cancelled_by_client`, `cancelled_by_provider`, `cancelled_auto`
  • Le créneau est libéré (nouvelle réservation possible)
  • Sync Google Calendar : event supprimé ou marqué annulé
⚠️ Pas de statut "Refusé" séparé. Refuser une demande pending = annuler. Le mot "Refuser" est utilisé seulement dans l'UI quand le RDV n'a pas encore été confirmé. Le code stocke le même `cancelled`.

Statut "Terminée" (completed)

Quand : un RDV est passé (date dans le passé) et a été marqué comme terminé.

Visible côté pro : badge gris "Terminée" dans l'Historique.

Conséquences : c'est un statut historique, pas d'action automatique. Sert au calcul du ROI et à la pertinence des statistiques.

Cycle de vie typique

  • Cas standard : `pending` → `confirmed` → (RDV honoré) → `completed`
  • Refus : `pending` → `cancelled`
  • Annulation : `pending` → `confirmed` → `cancelled` (par cliente ou par toi)
⚠️ Pas de retour en arrière : un RDV `cancelled` ne peut pas être ré-activé. La cliente doit re-réserver via ton lien.

Questions fréquentes

Mes RDV "Annulés" restent-ils dans ma liste ? Oui, dans la section Historique en bas de la page Réservations (limité aux 50 plus récents).

Existe-t-il un statut "No-show" (cliente non venue) ? Pas en natif. Tu peux annuler manuellement après coup et noter dans l'historique. Pas d'indicateur dédié.

Mon ROI compte-t-il les RDV annulés ? Le ROI est calculé sur les RDV confirmés uniquement. Les annulés et pending sont exclus.

Que voit la cliente comme statut ? Elle reçoit un email à chaque transition. Sur le lien d'annulation/confirmation, elle voit le statut courant.

Le passage automatique à `completed` est-il fait par SLOXO ? Le code ne montre pas de cron explicite pour cette transition automatique. Elle peut dépendre de logiques admin ou de futures évolutions.