Jak obsługiwać kliniki, restauracje i salony z jednego systemu rezerwacji?
Share

In this article
Stwórz ogólny model rezerwacji i pozwól każdemu sektorowi rozszerzyć go o typizowany ładunek: kartę pacjenta, zamówienie stolika lub wybór usługi. Silniki rezerwacji, powiadomień i rozliczeń pozostają niezależne od branży, więc zmienia się tylko schemat rozszerzenia dla każdego sektora, a baza kodu nigdy się nie rozgałęzia.
Dlaczego nie budować osobnego procesu rezerwacji dla każdego sektora?
Kliniki umawiają wizyty, restauracje przyjmują zamówienia na stoliki, a salony sprzedają sloty usługowe, więc każdy z nich wygląda jak inny produkt. Rozgałęzianie kodu dla każdego sektora potraja kod rezerwacji, WhatsApp i rozliczeń oraz powoduje, że każda poprawka musi być wprowadzana trzykrotnie. Wspólne części są takie same; różni się tylko obiekt bazowy.
Jak wygląda ogólny model rezerwacji?
Podstawowa rezerwacja zawiera wspólne pola (firma, klient, slot, status) oraz typizowany ładunek dla każdego sektora: kartę pacjenta dla klinik, zamówienie stolika i menu dla restauracji, wybór usługi dla salonów. Silniki działają na bazie; kod specyficzny dla sektora tylko odczytuje i zapisuje swój ładunek.
Jak unikać podwójnej rezerwacji tego samego slotu?
Każdemu slotowi przypisz pole wersji. Jeśli dwóch klientów próbuje zarezerwować w ciągu milisekund, zapis, który przegra, otrzymuje konflikt zamiast cichego nadpisania i ponawia próbę na aktualnym stanie slotu. Zapisy slotów są krótkie i rzadko konkurencyjne, więc optymistyczne blokowanie jest lepsze niż blokada trzymana przez cały czas żądania.
Jak zapobiec spowolnieniu cotygodniowego podsumowania przez jedno ograniczone konto?
Synchronizację Google Business Profile i generowanie podsumowań uruchamiaj jako zadania w kolejce RabbitMQ z jednym konsumentem na firmę, każdy z własnym mechanizmem opóźnień. Limit prędkości na jednym koncie opóźnia tylko zadanie tego konta. Ostatnie zsynchronizowane migawki i liczniki limitów na firmę przechowywane są w Redis.
Artykuł pierwotnie opublikowany na sakshamjain.codes/blog/one-booking-engine-for-clinics-restaurants-salons. Potrzebujesz takiego rozwiązania? Zobacz moje usługi na NexoRush lub napisz do mnie.