Come servire cliniche, ristoranti e saloni con un unico sistema di prenotazione?
Share

In this article
Modella un'entità di prenotazione generica e lascia che ogni settore la estenda con un payload tipizzato: una cartella paziente, un ordine al tavolo o una selezione di servizi. I motori di prenotazione, notifica e fatturazione rimangono indipendenti dal settore, quindi cambia solo lo schema di estensione per ogni verticale e il codice non si frammenta mai.
Perché non creare un flusso di prenotazione separato per ogni settore?
Le cliniche prenotano appuntamenti, i ristoranti prendono ordini al tavolo e i saloni vendono slot di servizi, quindi sembrano prodotti diversi. Creare un fork per ogni settore triplica il codice di prenotazione, WhatsApp e fatturazione e ogni correzione deve essere applicata tre volte. Le parti condivise sono le stesse; cambia solo l'oggetto principale.
Come si presenta un'entità di prenotazione generica?
Una prenotazione base con i campi condivisi (attività, cliente, slot, stato) più un payload tipizzato per settore: una cartella paziente per le cliniche, un ordine di tavolo e menù per i ristoranti, una selezione di servizi per i saloni. I motori operano sulla base; il codice verticale legge e scrive solo il proprio payload.
Come evitare la doppia prenotazione di uno slot?
Assegna a ogni slot un campo versione. Se due clienti prenotano entro millisecondi, la scrittura che perde genera un conflitto invece di sovrascrivere silenziosamente e riprova sullo stato attuale dello slot. Le scritture sugli slot sono brevi e raramente contese, quindi il locking ottimistico è migliore di un lock mantenuto per tutta la richiesta.
Come evitare che un'attività rallentata limiti il riepilogo settimanale di tutti?
Esegui la sincronizzazione di Google Business Profile e la generazione del riepilogo come job in una coda RabbitMQ con un consumer per attività, ognuno con il proprio backoff. Un limite di velocità su un account ritarda solo il job di quell'account. Snapshot dell'ultimo sync e contatori di rate-limit per attività risiedono in Redis.
Originariamente pubblicato su sakshamjain.codes/blog/one-booking-engine-for-clinics-restaurants-salons. Hai bisogno di questo sistema? Vedi i miei servizi su NexoRush o contattami.