Cum servești clinici, restaurante și saloane dintr-un singur sistem de rezervări?
Share

In this article
Modelează o entitate generică de rezervare și lasă fiecare verticală să o extindă cu un payload tipizat: un dosar de pacient, o comandă la masă sau o selecție de servicii. Motoarele de rezervare, notificare și facturare rămân agnostice față de verticală, astfel încât doar schema de extensie se schimbă în funcție de verticală, iar baza de cod nu se bifurcă niciodată.
De ce să nu construiești un flux de rezervare separat pentru fiecare verticală?
Clinicile programează consultații, restaurantele preiau comenzi la masă, iar saloanele vând intervale de servicii, deci fiecare pare un produs diferit. Bifurcarea codului pentru fiecare verticală triplează codul pentru rezervări, WhatsApp și facturare și face ca fiecare remediere să fie aplicată de trei ori. Părțile comune sunt aceleași; doar obiectul de bază diferă.
Cum arată o entitate generică de rezervare?
O rezervare de bază cu câmpurile comune (afacere, client, interval, stare) plus un payload tipizat pentru fiecare verticală: un dosar de pacient pentru clinici, o comandă de masă și meniu pentru restaurante, o selecție de servicii pentru saloane. Motoarele operează pe baza rezervării; codul vertical doar citește și scrie în payload-ul său.
Cum eviți dublarea rezervării unui interval?
Fiecare interval primește un câmp de versiune. Dacă doi clienți încearcă să rezerve în câteva milisecunde, scrierea care pierde primește un conflict în loc de o suprascriere silențioasă și încearcă din nou pe baza stării curente a intervalului. Scrierile pe interval sunt scurte și rareori contestate, deci blocarea optimistă este mai eficientă decât un lock ținut pe durata cererii.
Cum faci să nu încetinească o afacere throttled sumarul săptămânal al tuturor?
Rulează sincronizarea Google Business Profile și generarea sumarului ca joburi într-o coadă RabbitMQ cu un consumator per afacere, fiecare cu propriul backoff. O limită de rată pe un cont întârzie doar jobul acelui cont. Snapshot-urile ultimei sincronizări și contoarele de limită pe afacere sunt stocate în Redis.
Publicat inițial la sakshamjain.codes/blog/one-booking-engine-for-clinics-restaurants-salons. Ai nevoie să fie construit? Vezi serviciile mele pe NexoRush sau trimite-mi un mesaj.