Portál terapeuta
Cesta: /TherapistPortal
Komponenta: src/pages/TherapistPortal.jsx
Role: Terapeut (přihlášení přes OTP)
Ověřený fakt — samostatné rozhraní terapeuta, nezávislé na admin účtu. Odpovídá modulu 3. Therapist Portal v zadání.
Změna logiky (export 19. 8. 2026): portál se z pouhé správy kapacit rozrostl na čtyři záložky — kalendář, kapacity, nastavení a export výkonů. Terapeut si nově může sám zakládat rezervace klientů.
Přihlášení (OTP pro terapeuta)
Komponenta src/components/therapist/TherapistOtpLogin.jsx:
flowchart TD
A[Terapeut zadá e-mail] --> B["clientAuth: request_otp (contact_type=email)"]
B --> C[Zadání 6místného kódu]
C --> D["clientAuth: verify_otp_therapist"]
D --> E{Platný kód + Therapist s portal_access_enabled?}
E -- ano --> F[Přihlášen — session v localStorage 'neo_therapist']
E -- ne --> G[Přístup zamítnut]
Backend akce verify_otp_therapist (funkce clientAuth) po ověření kódu dohledá terapeuta podle portal_user_email mezi těmi, kdo mají portal_access_enabled: true. Pokud takový terapeut neexistuje, přístup je zamítnut.
Session terapeuta je uložena v localStorage (neo_therapist); po načtení se profil obnoví přes clientAuth akci get_therapist.
Záložky
| Záložka | Komponenta | Obsah |
|---|---|---|
| Kalendář | TherapistCalendarView |
Vlastní termíny v týdenním, měsíčním a agenda pohledu; klik na volný slot otevře rezervaci klienta (TherapistBookingDialog), klik na termín jeho detail (TherapistEventDialog) |
| Kapacity | (v TherapistPortal.jsx) |
Správa vlastních AvailabilityBlock — vytváření, editace, mazání |
| Nastavení | (v TherapistPortal.jsx) |
Vlastní profil a odkaz na online schůzku (online_meeting_url) |
| Export | TherapistExportPanel |
Měsíční CSV export provedených a zaplacených výkonů (status = completed a payment_status = paid), UTF-8 BOM pro Excel |
Ověřený fakt — terapeut pracuje jen s vlastními daty; správu plateb, dokladů ani cizích kalendářů portál neobsahuje.
Změna logiky — kapacita: pokud má terapeut portal_can_override_capacity = true, může v portálu vytvořit online rezervaci i mimo naplánovanou online kapacitu. Fyzická (ambulantní) kapacita ve stejném čase mu v tom nebrání.
Předpoklady v datech
Therapist.portal_access_enabled = trueTherapist.portal_user_email= e-mail, na který chodí OTP a podle kterého se páruje účet- volitelně
Therapist.portal_can_override_capacityaTherapist.online_meeting_url
Nastavuje se v Správě terapeutů (/TherapistManagement).
Související
- Entita
Therapist— poleportal_access_enabled,portal_user_email - Funkce
clientAuth(viz Base44 coupling)