Sari la conținut

Tutorial pentru administratori

Operațiunile complete din panoul administrativ.

01

Dashboard KPI — interpretare cifre

Cele 4 KPI-uri principale și ce decizii informează.

Ce vei vedea în acest video

Login ca admin → ești dus automat la `/admin`. Vezi pe rând:

1. **Priority card "Medici în așteptare"** (card mare în top) — afișează numărul de medici care așteaptă verificare documente, cu CTA "Vezi toate medicii pending →". Acesta e fluxul tău zilnic principal.

2. **KPI Grid** — grilă de 6 cifre cu trend month-over-month:
- Medici activi (total).
- Consultații în desfășurare.
- Consultații finalizate luna curentă.
- Venit luna curentă (sumă lei colectată via Stripe).
- Rating mediu medici.
- SLA breaches (consultații care depășesc timpul promis de răspuns).

Pauză deliberată pe fiecare KPI ca stakeholder-ul să citească cifrele. La final, click pe link-ul "Vezi toate medicii" → navighezi la lista pending.

Pentru Dr. Merchea: acest dashboard e sursa principală de informații pentru decizii operaționale zilnice.

02

Lista medicilor în așteptare

Filtre status + ordonare cronologică.

Ce vei vedea în acest video

Pe `/admin/doctors?status=pending`. Sus de tot, tab-uri filtru: **Toți / În așteptare / Activi / Respinși** — fiecare cu count-ul curent.

Tab-ul activ "În așteptare" arată lista medicilor cu `onboarding_status: pending_approval`, ordonați cronologic (cei mai noi sus). Fiecare rând afișează: avatar, nume, specialitate, data submisiei pentru aprobare, status pill amber, CTA "Detalii →".

Click pe "Detalii" → ești dus la pagina dedicată medicului unde poți review-ui documentele și aproba/respinge.

03

Aprobă cont medic

Verificare per-document, audit trail, email automat.

Ce vei vedea în acest video

Pe `/admin/doctors/` cu medic în `pending_approval`. Vezi:

- **Header** — nume, specialitate, status pill amber "În validare".
- **Documente CI / Aviz / CMR** — fiecare cu preview clickable (zoom modal), metadata (data expirare, data emitere) și badge stare.
- **Date juridice** — formă, ONRC, CUI, IBAN, adresă sediu.
- **Profil public** — bio, preț, limbi, experiență.
- **Istoric acțiuni** (audit trail) — gol pentru un medic nou pending.

Verifici fiecare document (deschizi preview → confirmi calitatea scanului). Când totul e OK, scroll-uiești la zona de butoane de jos:
- **Aprobă contul** (verde, primary).
- **Respinge contul** (roșu, secondary, deschide formular cu motiv).

Click pe "Aprobă contul" → status-ul medicului trece la `:active`, email automat de bun-venit, audit trail entry adăugată. Te redirecționează la lista pending (cea curentă a dispărut). Medicul apare imediat în lista publică pentru pacienți.

04

Respinge un document cu motiv

Dropdown motive standard + free text minim 10 caractere.

Ce vei vedea în acest video

Pe `/admin/doctors/` cu medic în pending. Click pe "Respinge contul" (jos pe pagină) → se expand-ează un mini-form inline:

- **Textarea motiv** — text liber, minim 10 caractere. Aici descrii concret problema (ex: "Scanarea CI nu este lizibilă — re-scanează la 300dpi minim").
- **Submit** "Respinge contul" (roșu).

Click pe submit → status-ul medicului trece la `:rejected`, motivul se persistă în `doctor_profile.rejection_reason`, email automat trimis medicului cu textul exact, audit trail entry. Te redirecționează la lista respinși (`status=rejected`).

Medicul vede motivul pe dashboard-ul lui sub banner-ul roșu și poate re-uploada documentele corectate.

05

Revizuiește un document rectificat

Re-aprobare după ce medicul a re-uploadat.

Ce vei vedea în acest video

Un medic care a fost respins re-uploadează documentul corectat → status revine la `:pending_approval`. Apare din nou pe lista pending.

Click pe medic → vezi documentele cu următoarele state-uri:
- **Documentul rectificat** are border amber + tag "Versiune nouă" (e clar ce s-a schimbat).
- **Audit trail** afișează pașii anterior: respingere cu motiv, re-upload, status changes.

Deschizi noul scan, verifici calitatea. Dacă e OK → click "Aprobă contul" identic cu admin-03. Dacă e încă problematic → respingere nouă cu motiv specific.

Acest flow asigură comunicare clară și auditabilă între admin și medic — fără email separat, totul în platformă.

06

Lista tranzacții + detalii

Filtre status, drawer cu Stripe payment intent + billing snapshot + link la consultație.

Ce vei vedea în acest video

Pe `/admin/transactions`. Vezi lista paginată a tranzacțiilor Stripe (sandbox + prod), ordonate cronologic invers. Fiecare rând: data + ora, pacient (email), medic, sumă, status pill (Paid / Refunded / Failed).

Click pe o tranzacție → drawer-ul de detalii (pagina dedicată). Vezi:
- **Stripe Payment Intent ID** — pentru cross-reference în dashboard Stripe.
- **Sumă** + comision platformă + sumă netă pentru medic.
- **Snapshot billing** — cele 6 câmpuri congelat la momentul plății (prenume, nume, oraș, județ, adresă, cod poștal). Asta e crucial pentru factura istorică — orice schimbare ulterioară a profilului de billing al pacientului NU afectează tranzacțiile vechi.
- **Link "Vezi consultația"** — navighezi direct la thread-ul Q&A asociat.
- **Audit log** — webhook-uri primite de la Stripe (success, refund, etc.).

Pentru rambursări manuale: poți declanșa refund din Stripe dashboard direct (acces admin), care va fi reflectat aici via webhook automat.

07

App Settings — tunare knob-uri

Modificare limite textarea, fallback specialty, fără redeploy.

Ce vei vedea în acest video

Pe `/admin/settings`. Vezi configurări tunabile la runtime, grupate pe categorii (UX, Triage, Pricing, etc.). Fiecare setting are: cheie, valoare curentă, descriere, tip (string / int / float / bool / slug), categorie.

Exemple de setting-uri:
- `patient_textarea_min_chars` (10) — minimum caractere pentru triaj.
- `patient_textarea_max_chars` (500) — maximum caractere.
- `faq_shortcut_max_visible` (6) — câte FAQ shortcuts afișezi pe homepage.

Click pe un row → editare inline. Schimbi valoarea, salvezi → modificarea e activă imediat în toată aplicația (cache invalidat). Audit trail PaperTrail captează cine a schimbat ce și când.

Beneficiu major: modificarea ratei de minim caractere de la 10 la 15 nu necesită redeploy — un click și e schimbat.

08

Gestionează FAQ shortcuts

Drag-drop reorder, toggle active, creare entry nou.

Ce vei vedea în acest video

Pe `/admin/faq_shortcuts`. Aceste shortcuts apar pe homepage public sub forma "Întrebări frecvente de la alți pacienți" — carduri quick-access care duc direct la o specialitate (bypass triaj).

Vezi lista cu max 6 vizibile + N inactive. Fiecare card: text-ul afișat (ex: "Am dureri de cap frecvente..."), specialitatea mapată, ordine, status (Activ / Inactiv).

Acțiuni disponibile:
- **Drag-drop** pentru reorder (Sortable.js) — schimbi ordinea pe homepage.
- **Toggle active** — activezi/dezactivezi un shortcut (păstrând conținutul).
- **Adaugă shortcut** (CTA primary) → form cu text RO + selecție specialitate.
- **Editează** un shortcut existent.

Soft-delete only (nu există hard delete) — istoric păstrat. Limita de 6 active e configurabilă din App Settings.

09

Audit trail acțiuni

Cine a aprobat/respins ce și când.

Ce vei vedea în acest video

Pe pagina de detail a oricărui medic (sau tranzacție), scroll la jos → secțiunea **"Istoric acțiuni"** (audit trail).

Vezi entries cronologice (cele mai recente sus): timestamp, **actor** (numele admin-ului care a făcut acțiunea — cu link la profilul lui), acțiune (ex: "Aprobat document CI", "Respins cont — motiv: ..."), eventual diff JSON pentru câmpurile modificate.

Audit trail-ul e populat automat via PaperTrail pe modelele DoctorProfile, PaymentTransaction, AppSetting. Nu poate fi șters din UI (doar via SQL direct, tipic exclus din producție).

Asta e crucial pentru conformitate (GDPR Art. 30 — registrul activităților) și pentru rezolvarea disputelor (ex: "cine a respins documentul meu și de ce?").

10

Flux complet: medic nou de la signup la activare

Case study end-to-end medic-admin.

Ce vei vedea în acest video

Acesta e un case study end-to-end de aproximativ 3 minute care leagă mai multe operațiuni admin într-o singură sesiune realistă:

1. **Dashboard** — observi că priority card-ul afișează "1 medic nou în așteptare". KPI Grid arată numerele actuale.
2. **Lista pending** — click pe priority card → ești la `/admin/doctors?status=pending`. Vezi medicul nou submis.
3. **Detail medic** — click → review complet:
- Header status amber "În validare".
- Cele 3 documente — preview fiecare, verifici scanul.
- Date juridice — IBAN, CUI etc.
- Profil public — bio, preț, limbi.
- Audit trail — gol (medic nou).
4. **Decizia de aprobare** — toate documentele OK, scroll la jos, click "Aprobă contul".
5. **Confirmare** — email automat, audit trail nou, redirect la lista pending.
6. **Dashboard recheck** — revii la `/admin` și vezi că "Medici în așteptare" a scăzut, KPI "Medici activi" a crescut.

Pentru Dr. Merchea: acest flow e operația zilnică principală — verifică pending, aprobă/respinge, monitorizează KPI. Acest video acoperă scenariul tipic complet în câteva minute.