Wie bedient man Kliniken, Restaurants und Salons mit einem einzigen Buchungssystem?
Share

In this article
Modellieren Sie eine generische Buchungsentität und lassen Sie jede Branche diese mit einem typisierten Payload erweitern: eine Patientenakte, eine Tischbestellung oder eine Serviceauswahl. Die Buchungs-, Benachrichtigungs- und Abrechnungssysteme bleiben branchenunabhängig, sodass sich nur das Erweiterungsschema pro Branche ändert und der Code nie verzweigt.
Warum nicht für jede Branche einen eigenen Buchungsablauf erstellen?
Kliniken buchen Termine, Restaurants nehmen Tischbestellungen auf und Salons verkaufen Servicezeiten – daher sieht jede Branche wie ein eigenes Produkt aus. Eine Aufspaltung pro Branche verdreifacht den Buchungs-, WhatsApp- und Abrechnungscode und jede Änderung muss dreimal eingepflegt werden. Die gemeinsamen Teile sind gleich; nur das Kernobjekt unterscheidet sich.
Wie sieht eine generische Buchungsentität aus?
Eine Basisbuchung mit gemeinsamen Feldern (Geschäft, Kunde, Zeitfenster, Status) plus einem typisierten Payload pro Branche: eine Patientenakte für Kliniken, eine Tisch- und Menübestellung für Restaurants, eine Serviceauswahl für Salons. Die Engines arbeiten auf der Basis; der branchenspezifische Code liest und schreibt nur seinen Payload.
Wie verhindert man Doppelbuchungen eines Zeitfensters?
Jedes Zeitfenster erhält ein Versionsfeld. Wenn zwei Kunden innerhalb von Millisekunden buchen, erhält der Schreibvorgang, der verliert, einen Konflikt statt eines stillen Überschreibens und versucht es erneut mit dem aktuellen Zeitfensterstatus. Schreibvorgänge für Zeitfenster sind kurz und selten umkämpft, daher ist optimistisches Sperren besser als eine Sperre, die über die gesamte Anfrage gehalten wird.
Wie verhindert man, dass ein gedrosseltes Geschäft die wöchentliche Zusammenfassung aller verlangsamt?
Führen Sie die Synchronisation mit Google Business Profile und die Zusammenfassungserstellung als Jobs in einer RabbitMQ-Warteschlange aus, mit je einem Verbraucher pro Geschäft, der seine eigene Rückoff-Strategie hat. Eine Ratenbegrenzung für ein Konto verzögert dann nur den Job dieses Kontos. Zuletzt synchronisierte Snapshots und ratenbegrenzte Zähler pro Geschäft werden in Redis gespeichert.
Ursprünglich veröffentlicht auf sakshamjain.codes/blog/one-booking-engine-for-clinics-restaurants-salons. Benötigen Sie diese Lösung? Sehen Sie meine Services auf NexoRush oder kontaktieren Sie mich.