3. Mapa stránek a navigace
Diagram navigace
graph TD
LOGIN["StaffGate → StaffLogin (OTP personálu)"] --> ROOT
ROOT["/ → Kalendář"] --> CAL[Kalendář]
ROOT --> CLI[Klienti]
ROOT --> PAY[Platby]
ROOT --> STA[Statistiky]
ROOT --> SET["Nastavení ▾\n10 položek"]
ROOT --> CLIENT["/client — Klientský portál"]
CAL --> CALDET["EventDialog"]
CLI --> CLIDET["/clients/:id"]
SET --> SETPAGES["Kalendář · Provozní hodiny\nNotifikace · Výkony · Terapeuti\nFakturace · Platby · Log aktivit\nVouchery · Právní dokumenty"]
CLIENT --> OTP["OTP přihlášení"]
ROOT --> THERAPIST["/TherapistPortal — Portál terapeuta"]
REDEEM["/redeem — Uplatnění voucheru (veřejné)"]
INVOICE["/invoice — Doklad (veřejné, přes token)"]
STORNO["/storno — Úhrada storno poplatku (veřejné)"]
Tabulka rout
Admin rozhraní
Ověřený fakt — ze src/App.jsx a src/pages.config.js:
| Cesta (URL) | Komponenta | Popis | Role |
|---|---|---|---|
/ |
Calendar |
Hlavní stránka — vizuální kalendář | Admin |
/Calendar |
Calendar |
Alias pro hlavní stránku | Admin |
/Clients |
Clients |
Seznam klientů (tabulka + vyhledávání) | Admin |
/clients/:id |
ClientDetail |
Detail klienta (záložky) | Admin |
/AvailabilityManagement |
AvailabilityManagement |
Kapacitní bloky terapeutů | Admin |
/Services |
Services |
CRUD správa výkonů/služeb | Admin |
/RoomOccupancyStats |
RoomOccupancyStats |
Statistiky obsazenosti místností | Admin |
/PaymentLogs |
PaymentLogs |
Přehled všech plateb | Admin |
/ActivityLog |
ActivityLog |
Auditní log akcí | Admin |
/TherapistManagement |
TherapistManagement |
Správa terapeutů | Admin |
/NotificationSettings |
NotificationSettings |
Šablony e-mailů a SMS | Admin |
/CalendarSettings |
CalendarSettings |
Provozní hodiny, granularita slotů | Admin |
/OperatingHoursSettings |
OperatingHoursSettings |
Detailní nastavení provozní doby | Admin |
/AppointmentStatusSettings |
AppointmentStatusSettings |
Správa stavů termínů | Admin |
/ClientCategorySettings |
ClientCategorySettings |
Barevné kategorie klientů | Admin |
/RoomCategorySettings |
RoomCategorySettings |
Kategorie místností | Admin |
/InvoiceSettings |
InvoiceSettings |
Nastavení fakturace | Admin |
/PaymentSettingsPage |
PaymentSettingsPage |
Nastavení plateb (lhůty, storno) | Admin |
/DemoUserManagement |
DemoUserManagement |
Správa účtů zaměstnanců a jejich rolí (dříve „demo účty") | Admin only |
/Documentation |
Documentation |
Vestavěná dokumentace | Admin |
/VoucherManagement |
VoucherManagement |
Správa dárkových voucherů (viz Vouchery) | Admin |
/LegalDocumentsSettings |
LegalDocumentsSettings |
Editace VOP/GDPR dokumentů (viz Právní dokumenty) | Admin |
/StaffLogin |
StaffLogin |
Přihlášení zaměstnance (OTP) — zobrazuje se místo obsahu, dokud není přihlášen | Veřejné |
Změna logiky (export 19. 8. 2026): admin rozhraní je nově chráněné. V App.jsx je vše kromě veřejných rout zabaleno do layout route <StaffGate />; bez přihlášeného zaměstnance se místo aplikace vykreslí StaffLogin. Dříve bylo admin rozhraní přístupné bez autentizace na úrovni aplikace.
Dále: duplicitní registrace /PaymentSettingsPage byla odstraněna a /TherapistPortal i /invoice se přesunuly mezi veřejné routy (portál terapeuta má vlastní OTP, doklad se otevírá přes token z e-mailu).
Odvozeno — většina admin stránek se registruje automaticky přes pages.config.js (auto-generováno z src/pages/). App.jsx navíc zaregistruje část rout explicitně.
Klientský portál (veřejné)
| Cesta (URL) | Komponenta | Popis |
|---|---|---|
/client |
ClientPortal |
Vstupní bod klientského portálu |
/client?payment=1&... |
ClientPortal |
Platební flow (query parametry) |
/client?action=onboarding&client_id=… |
ClientPortal |
On-boarding klienta z e-mailového odkazu (viz On-boarding) |
/redeem?code=… |
VoucherRedeem |
Veřejné uplatnění voucheru přes QR/URL (viz Vouchery) |
/invoice?token=… |
InvoiceView |
Zobrazení/tisk dokladu — přístup pouze přes unikátní token (backend getPublicInvoice) |
/storno?token=… |
StornoLanding |
Úhrada storno poplatku (pojišťovna) z odkazu v e-mailu/SMS |
/TherapistPortal |
TherapistPortal |
Portál terapeuta — vlastní OTP přihlášení (viz Portál terapeuta) |
Odvozeno — interní režimy portálu jsou řešeny stavem uvnitř ClientPortal komponenty (mode: public / login / dashboard / onboarding), nikoliv React Router routami. Výchozí režim bez přihlášení je veřejný rezervační portál (PublicBookingPortal, viz Veřejný rezervační portál).
Stránky bez Layout wrapperu
Tyto stránky nemají horní navigaci:
/client— klientský portál (jiný UX kontext)/redeem— uplatnění voucheru (veřejné, samostatný kontext)/invoice— zobrazení dokladu (print-friendly)/storno— úhrada storno poplatku (veřejné)/TherapistPortal— portál terapeuta (vlastní kontext i autentizace)*— PageNotFound