Configuration

Variables d'environnement de @lrvo/module-booking, permissions, fuseau horaire et ce qui se règle plutôt dans l'admin.

Toutes les variables du module portent le préfixe LRVO_MODULE_BOOKING. Elles se lisent une fois par processus et sont gelées : modifier le .env demande un redémarrage.

Ce qui n'est pas ici

Les types de rendez-vous, les intervenants, les horaires et les liens de réservation sont des données, pas de la configuration. Ils se créent dans la page Options de l'admin, sous la permission booking.options, et changent sans redéploiement. Voir Administration.

L'environnement ne porte que ce qui vaut pour tout le site : l'ouverture de la prise en ligne, la forme d'un nouveau type de rendez-vous, les fenêtres de réservation et d'annulation, les rappels et la marque de la page publique.

Activation

VariableDéfautRôle
LRVO_MODULE_BOOKING-Active le module. Requise.
LRVO_MODULE_BOOKING_CRONtrueEnregistre les deux tâches planifiées.
LRVO_MODULE_BOOKING_ONLINEfalseOuvre la prise de rendez-vous en ligne.

Fermée, la prise en ligne ne masque pas une interface : les routes de réservation répondent 404 et la page d'un lien aussi. Un lien de réservation diffusé cesse de fonctionner à la seconde où la variable passe à false.

Cette variable ne gouverne que la réservation. La page /lrvo/booking/rendez-vous/<jeton>, par laquelle un client consulte, déplace ou annule le rendez-vous qu'il a déjà, reste servie dans tous les cas. Ce qu'il peut y faire dépend de LRVO_MODULE_BOOKING_ALLOW_CANCEL et LRVO_MODULE_BOOKING_ALLOW_RESCHEDULE, décrites plus bas. Les deux à false laissent une page de consultation.

Forme d'un nouveau type de rendez-vous

Ces quatre valeurs ne sont que des défauts de formulaire. Chacune reste modifiable type par type.

VariableDéfautBornes
LRVO_MODULE_BOOKING_SLOT_STEP_MINUTES155 à 240
LRVO_MODULE_BOOKING_DEFAULT_DURATION_MINUTES605 à 1440
LRVO_MODULE_BOOKING_BUFFER_BEFORE_MINUTES00 à 720
LRVO_MODULE_BOOKING_BUFFER_AFTER_MINUTES00 à 720

Le pas de la grille est ancré sur le début de la plage d'ouverture, pas sur minuit : une ouverture à 9 h 05 avec un pas de 15 minutes donne 9 h 05, 9 h 20, 9 h 35.

Fenêtre de réservation

VariableDéfautRôle
LRVO_MODULE_BOOKING_MIN_NOTICE_MINUTES120Délai minimum entre maintenant et le créneau, en ligne seulement.
LRVO_MODULE_BOOKING_MAX_ADVANCE_DAYS60Horizon de réservation en ligne.
LRVO_MODULE_BOOKING_REQUIRE_APPROVALfalseMet les réservations en ligne en attente d'approbation.
LRVO_MODULE_BOOKING_PENDING_EXPIRY_HOURS72Annule une demande jamais approuvée. 0 désactive.

Un type de rendez-vous peut surcharger le délai, l'horizon et la confirmation. Le champ vide de l'admin veut dire « suivre l'environnement », ce qui n'est pas la même chose que zéro.

L'administration n'est pas soumise à ces fenêtres. Elle prend un rendez-vous pour quelqu'un qui est déjà au téléphone : le délai minimum et l'horizon sont la contrainte du visiteur, pas la sienne.

Ce que le client peut encore faire

VariableDéfautRôle
LRVO_MODULE_BOOKING_ALLOW_CANCELtrueAnnulation par le lien du courriel.
LRVO_MODULE_BOOKING_ALLOW_RESCHEDULEtrueDéplacement par le lien du courriel.
LRVO_MODULE_BOOKING_CANCEL_NOTICE_MINUTES1440Délai avant le rendez-vous, en deçà duquel les deux ferment.
LRVO_MODULE_BOOKING_MAX_RESCHEDULES2Déplacements par rendez-vous. 0 interdit.
LRVO_MODULE_BOOKING_MAX_PER_EMAIL_PER_DAY3Réservations en ligne par adresse et par jour. 0 lève la limite.

Le plafond par adresse est compté en base, dans la transaction de réservation. Le rate limit du routeur du core est par IP et en mémoire du processus : il ne survit pas à un redémarrage et ne voit pas les autres instances. Les deux se complètent, aucun ne remplace l'autre.

Courriels

VariableDéfautRôle
LRVO_MODULE_BOOKING_REMINDER_HOURS24Heures avant le rendez-vous, séparées par des virgules : 48,24,2. Vide désactive.
LRVO_MODULE_BOOKING_ICStrueJoint le fichier calendrier aux courriels du client.
LRVO_MODULE_BOOKING_NOTIFY_STAFFtruePrévient aussi l'intervenant, s'il a un courriel.
LRVO_MODULE_BOOKING_ADMIN_EMAIL-Adresse recevant les avis de l'administration.
LRVO_MODULE_BOOKING_CONTACT_EMAILl'adresse ci-dessusAdresse de réponse des courriels du client.

Voir Courriels.

Marque de la page publique

VariableDéfautRôle
LRVO_MODULE_BOOKING_BRAND_NAMELRVO_NAMENom affiché dans le pied de la page publique.
LRVO_MODULE_BOOKING_LOGO_URLLRVO_LOGO_URLURL absolue ou chemin servi depuis public/.
LRVO_MODULE_BOOKING_LOGO_URL_DARKle logo principalVariante pour le thème sombre.
LRVO_MODULE_BOOKING_SITE_URLLRVO_SITE_URLCible du logo et du pied de page.
LRVO_MODULE_BOOKING_COMPANY_ADDRESS-Adresse civique affichée.
LRVO_MODULE_BOOKING_COMPANY_PHONE-Téléphone affiché.

Les variables du module ne servent qu'aux sites qui prennent rendez-vous sous une autre enseigne que celle de l'application : sans elles, la marque du site sert, déclarée une fois dans le core. Voir Variables d'environnement.

Aucune de ces variables n'est préfixée NEXT_PUBLIC : elles descendent en props depuis le composant serveur. Les préfixer publierait la configuration à tout visiteur.

Fuseau horaire

Le module lit LRVO_TIMEZONE du core, America/Toronto par défaut, et ne redéclare rien. Toutes les heures saisies dans l'admin et affichées au client sont dans ce fuseau, nommé sous la grille de la page publique.

Les instants sont stockés en TIMESTAMPTZ, donc justes quel que soit le fuseau. En revanche la colonne local_date de chaque rendez-vous est calculée à l'écriture : changer LRVO_TIMEZONE sur un site en production la rend fausse pour les rendez-vous déjà pris et demande une migration de recalcul.

Permissions

CléCouvre
booking.viewAgenda, calendrier, panneau du tableau de bord, et les types, intervenants et horaires que ces écrans affichent.
booking.manageCréer, approuver, déplacer, annuler un rendez-vous, le marquer terminé ou absent, le supprimer.
booking.optionsLa page Options entière : types, intervenants, horaires, exceptions et liens. Aussi le lancement manuel d'une tâche planifiée.

Les trois sont attribuées au rôle admin par lrvo-db init, et ajoutées au catalogue par lrvo-db migrate sur une base existante.

booking.manage et booking.options s'appuient toutes deux sur booking.view : les écrans qu'elles ouvrent lisent par les routes de consultation. Un rôle qui porte l'une sans booking.view verrait des listes vides.

booking.options a été séparée de booking.manage, qui ouvrait auparavant la page Options. Sur une base existante, lrvo-db migrate l'attribue une fois à chaque rôle qui détient booking.manage : personne ne perd ses réglages à la mise à jour. Pour qu'un rôle prenne des rendez-vous sans accéder aux options, lui retirer booking.options dans /admin/roles.

Sur cette page