Skip to content

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 = true
  • Therapist.portal_user_email = e-mail, na který chodí OTP a podle kterého se páruje účet
  • volitelně Therapist.portal_can_override_capacity a Therapist.online_meeting_url

Nastavuje se v Správě terapeutů (/TherapistManagement).

Související