Veřejný rezervační portál
Komponenta: src/pages/PublicBookingPortal.jsx
Vstup: výchozí režim /client pro nepřihlášeného návštěvníka
Role: Veřejné (bez přihlášení lze procházet a začít rezervaci)
Ověřený fakt — veřejné rozhraní, kde si i nepřihlášený zájemce vybere službu a spustí rezervační průvodce (ClientBooking). Odpovídá modulu 2. Rezervační systém (front-end pro klienty) v zadání. Přihlášení se vyžádá až ve chvíli potvrzení rezervace.
Postavení v portálu
ClientPortal má stavový automat mode; výchozí režim bez přihlášení je public → renderuje PublicBookingPortal. Z hlavičky lze přejít na přihlášení (onLoginRequest → mode 'login') nebo na dashboard (onDashboard → mode 'dashboard'), pokud je klient přihlášen.
Výběr služby a filtrování
Zobrazí se ServicePicker se službami, které mají reálnou kapacitu a jsou povolené pro online rezervaci. Filtr (useMemo) kombinuje:
Service.is_active = true— jen aktivní služby.Service.online_booking_enabled ≠ false— služba smí do online portálu.- Reálná kapacita — existuje budoucí veřejný
AvailabilityBlock(is_public = true), který službu pokrývá:- blok s vyplněnými
service_types→ přímo tyto služby; - obecný blok (bez
service_types) → služby, které daný terapeut nabízí přesTherapistService(is_active).
- blok s vyplněnými
- Segmentace — pokud má služba
allowed_client_category_ids, zobrazí se jen přihlášenému klientovi, který je alespoň v jedné z povolených kategorií. Neomezené služby vidí každý.
Odvozeno — segmentované služby jsou pro nepřihlášené návštěvníky skryté (bez client se restrikce vyhodnotí jako „nezobrazit").
Rezervace
Po výběru služby se vykreslí ClientBooking (společný průvodce s klientským portálem) — výběr terapeuta, data, slotu a potvrzení. Přihlášení / on-boarding se vyžádá až v rámci tohoto průvodce.
Související
- Klientský portál — přihlášený režim (dashboard, kredity, historie)
- On-boarding klienta
- Entity
Service,AvailabilityBlock,TherapistService