← Bibliothèque / Commerce
Rendez-vous & planning (services, prestataires)
Module RDV type salon/spa/coach : moteur de créneaux strict (heures de début imposées), calendrier mensuel heatmap, Google Agenda bidirectionnel, fidélité et waitlist.
Construit à partir de :
Studio Bellezabookflow pahono
Dans le back office
Pilotage (Dashboard/Journée/Calendrier) · Commercial (Rendez-vous + section à encaisser) · Exploitation (Horaires, Fermetures) · Relation (Liste d'attente, Fidélité).
Pages & écrans
| Page / zone | Rôle |
|---|---|
/admin/calendar | Mois entier en heatmap intensité oklch, semaine lundi, clic jour → détail + modale RDV |
/admin/today | Bento journée : timeline RDV, comptes, encaissé/attendu, tendance |
/admin/appointments | Table filtres/onglets, création (y compris préremplie DEPUIS une conversation), reprogrammation, annulation via RPC forcé sb_admin_set_appointment_status, section à encaisser |
/admin/hours | Jours/heure, pause déjeuner effective par jour, heures de DÉBUT imposées (slotStartTimes) |
/admin/holidays | Fermetures ponctuelles + récurrentes annuelles projetées (29 fév géré), reprise historique GCal « Reprendre ces dates » |
/admin/waitlist + loyalty | Liste d'attente quand place libérée ; fidélité seuils (8–9 relance, ≥10 = −50% suivante) via recount RPC |
Patterns UI/UX
- NewAppointmentModal réutilisable partout (contexte conversation → champs préremplis)
- Onglets statuts confirme/en_attente/termine/annule
Composants clés
- lib/slots.ts generateSlots
- lib/disponibilites.ts vue agenda 14 j pour le bot
- NewAppointmentModal
- AppointmentDetailModal
Automatisations
- n8n Confirmation RDV (webhook depuis POST /api/book → email branding Gmail OAuth2)
- n8n Rappel J-1 (cron 18h Tahiti veille → UPDATE reminder_sent)
- Fidélité tracker (webhook PATCH statut=terminé → seuils email)
- GCal : service account + webhook push + resync cron, rapprochement idempotent sb_gcal_matches, ICS privé par token
Intelligence artificielle
- Rôle IA
- Le bot RDV check_slots (strict, date passée refuse), create_booking après récap obligatoire, déplace/annule avec téléphone = preuve identité.
- Modèles
- modèle centralisé
- Garde-fous
- NE JAMAIS inventer de dispo ; dates calculées EN CODE (table 14 jours générée) pas par le LLM
Données
- appointments (date_heure, duree_totale, statut, reminder_sent, acompte, conversation_id)
- services (prestation|deco, prix_xpf, display_order)
- availability JSONB
- holidays
- gcal_matches
- waitlist/recurring/packages
Invariants & pièges
- Tunnel public 6 étapes validé par specs acceptance + gestion self-service token signé /booking/manage
- Accompte déposé seulement 1ʳᵉ visite (règle business paramétrable)
- MISE EN GARDE RDC : copier l'ARCHÉTYPE — un BO messagerie n'a pas la forme agenda