Inventarul Cookie-urilor și al Tehnologiilor de Urmărire
Inventar al fiecărui cookie, valoare similară din local-storage și semnal de urmărire setat de cele trei aplicații (Clinică, Portal, Consolă) și de subîmputerniciții pe care îi apelează. Determină conținutul banner-ului de cookie-uri și secțiunea de cookie-uri din nota de informare privind confidențialitatea. Artefact obligatoriu pentru conformitatea ePrivacy + transparența GDPR. v1 redactată la 15.05.2026; reconciliată cu codul sursă la 06.09.2026, ocazie cu care au fost adăugate
org-timezoneșidemo-activeși au fost corectate două rânduri.
Stadiul revizuirii juridice
Aceasta este o ciornă v1 redactată de dezvoltator. Consilierul revizuiește UX-ul banner-ului de cookie-uri (designul consimțământului granular, comportamentul „închiderea înseamnă refuz"), confirmă conformitatea ePrivacy conform Legii nr. 506/2004 și validează clasificarea ca strict necesar pentru fiecare cookie. A se vedea brief-ul consilierului.
Metodologie
Conform ePrivacy + GDPR, contează trei clasificări:
| Clasă | Definiție | Consimțământ necesar? |
|---|---|---|
| Strict necesar | Cookie / valoare de stocare fără de care serviciul solicitat nu poate fi furnizat | Nu — exceptat conform Art. 5 alin. (3) teza a doua din ePrivacy |
| Funcțional | Cookie care îmbunătățește o funcționalitate la care utilizatorul a optat explicit (limba, tema) | La limită — depinde de existența unei acțiuni explicite anterioare a utilizatorului |
| Analitic / de măsurare | Cookie / valoare de stocare utilizată pentru măsurarea utilizării | Da — consimțământ înainte de setare |
| Marketing / urmărire | Cookie utilizat pentru urmărire între site-uri, targetare publicitară, retargeting | Da — consimțământ înainte de setare; așteptări mai mari de transparență |
Postura platformei la lansare: doar strict necesar + funcțional. Niciun cookie de marketing. Analiza este condiționată de consimțământ (iar la lansare, este amânată — furnizorul de analiză se selectează exclusiv după lansare).
Inventar
Portal (portal.restartix.pro, nume de host personalizate per clinică)
Strict necesare
| Cookie | Setat de | Scop | TTL | Atribute |
|---|---|---|---|---|
__session | Clerk | Sesiune de autentificare activă | Conform configurației de sesiune Clerk (~7 zile la lansare) | HttpOnly, Secure, SameSite=Lax |
__clerk_db_jwt | Clerk | Starea de autentificare Clerk | Sesiune | HttpOnly, Secure |
__clerk_* (variabil) | Clerk | Cookie-uri ale framework-ului de autentificare Clerk | Conform Clerk | HttpOnly, Secure |
org-id | Platformă (proxy.ts) | Contextul tenantului legat de nume de host; folosit la fiecare fetch de partea serverului pentru a delimita cererile către organizația corectă | Sesiune | HttpOnly, SameSite=Lax |
org-slug | Platformă (proxy.ts) | Slug-ul tenantului pentru construirea URL-urilor și pentru afișare | Sesiune | HttpOnly, SameSite=Lax |
org-name | Platformă (proxy.ts) | Denumirea afișată a tenantului pentru randarea UI | Sesiune | HttpOnly, SameSite=Lax |
org-portal-self-signup | Platformă (proxy.ts) | Dacă portalul tenantului permite auto-înscrierea; condiționează ruta /onboard | Sesiune | HttpOnly, SameSite=Lax |
share-link-code | Platformă (/join/[code]) | Transportă codul invitației / link-ului de share prin fluxul de înscriere atunci când pacientul ajunge printr-un share link | ≤ 1 oră | HttpOnly, Secure, SameSite=Lax |
org-timezone | Platformă (proxy.ts) | Fusul orar al tenantului; folosit pentru a afișa datele și orele în fusul local al clinicii, nu al serverului. În lipsa lui se folosește Europe/Bucharest | Sesiune | HttpOnly, SameSite=Lax |
demo-active | Platformă (Portal /demo) | Marchează faptul că pacientul a intrat într-o sesiune prin fluxul demo, pentru ca ecranul comun de finalizare să îl întoarcă la /demo în loc de destinația implicită. Se setează doar pentru vizitatorii care deschid /demo | 12 ore | HttpOnly, SameSite=Lax |
Funcționale
| Cookie | Setat de | Scop | TTL | Atribute |
|---|---|---|---|---|
language | Platformă (proxy.ts) | Limba implicită UI a tenantului; lizibilă de partea clientului pentru formatarea datelor / numerelor | Sesiune | NU HttpOnly (deliberat), SameSite=Lax |
language-user-override | Platformă (acțiune de server setLanguage) | Limba aleasă explicit de utilizator (suprascrie implicitul tenantului) | 1 an | HttpOnly, SameSite=Lax |
Analitice
Niciunul la lansare. Furnizorul de analiză (Plausible / PostHog / similar, găzduit în UE) se selectează după lansare. La adăugare:
- Condiționat prin consimțământ via banner-ul de cookie-uri.
- Se folosește modul „fără cookie" al furnizorului preferat, dacă este disponibil.
- Dacă sunt folosite cookie-uri, intrarea de inventar este adăugată în acest document în același PR care integrează furnizorul.
Marketing / urmărire
Niciunul. Platforma nu rulează pixeli publicitari terți la lansare și nu există nicio intenție în acest sens.
Setate de subîmputerniciții care traversează calea cererii
| Cookie | Setat de | Scop | Clasă | Atribute |
|---|---|---|---|---|
__cf_bm | Cloudflare (Bot Management) | Detectarea boților pe calea cererii | Strict necesar | HttpOnly, Secure, SameSite=None |
cf_clearance | Cloudflare (când se declanșează un challenge) | Persistă rezultatul unui bot-challenge reușit | Strict necesar | HttpOnly, Secure, SameSite=None |
Acestea sunt cookie-urile CDN standard ale Cloudflare. Documentate la developers.cloudflare.com. Sunt operațional strict necesare pentru funcția de securitate a CDN-ului și sunt exceptate de la consimțământ.
Aplicația Clinică (clinic.restartix.pro, nume de host personalizate per clinică)
Aceeași formă ca Portal:
- Cookie-urile de autentificare Clerk (strict necesare)
- Cookie-urile proxy
org-*(strict necesare) language/language-user-override(funcționale)- Cookie-urile Cloudflare (strict necesare)
În plus, post-lansare, cookie-uri de debug / operaționale pentru tooling-ul de administrare a clinicii — în afara sferei lansării.
Fără analiză și fără marketing.
Consolă (console.restartix.pro — exclusiv pentru personalul platformei)
Restricționată la personalul platformei. Aceleași cookie-uri de autentificare + funcționale. Fără analiză. Consola rulează deliberat fără urmărire terță, deoarece telemetria din Consolă ar putea expune tipare de utilizare break-glass sau operațiuni interne ale platformei.
| Cookie | Scop |
|---|---|
| Cookie-urile de autentificare Clerk | Strict necesare |
| Cookie-urile Cloudflare | Strict necesare |
Nu există cookie org-id în Consolă — context superadmin, nelegat de tenant. Și nici language sau language-user-override: Consola este exclusiv în limba engleză prin proiectare și nu are un selector de limbă, deci nu există nicio preferință de păstrat.
Pagina publică de aterizare (restartix.pro rădăcină)
Atunci când pagina publică de aterizare este livrată:
| Cookie | Scop | Clasă |
|---|---|---|
cookie-consent | Înregistrează alegerea utilizatorului din banner-ul de cookie-uri („doar strict necesar" / „cu analiză") | Strict necesar (înregistrarea propriu-zisă a consimțământului este exceptată) |
| Cookie-urile Cloudflare | Strict necesare | |
| (Viitor) cookie-uri de analiză | Funcțional / analitic — condiționate de valoarea cookie-consent |
Suprafețe de urmărire non-cookie similare
Local Storage / Session Storage
| Cheie | Setată de | Scop | Aplicație |
|---|---|---|---|
| Internă Clerk | Clerk | Cache de partea clientului pentru starea de autentificare a SDK-ului Clerk | Toate cele trei aplicații |
| Internă Sentry | Sentry SDK | ID de sesiune pentru gruparea crash-urilor; fără date cu caracter personal — SDK-ul rulează cu sendDefaultPii: false și nu atașează niciun identificator de utilizator | Doar Portalul. Aplicațiile Clinică și Consolă nu sunt conectate la urmărirea erorilor |
Produsul session-replay al Sentry este dezactivat la lansare (ar captura datele introduse de utilizator — în afara sferei până la revizuirea posturii de confidențialitate pentru replay).
IndexedDB
Niciuna la lansare.
Web Workers / Service Workers
Niciunul la lansare.
Pixeli / web beacons
Niciunul.
Fingerprinting
Platforma nu folosește biblioteci de fingerprinting (FingerprintJS etc.). Cloudflare poate folosi metadate din handshake-ul TLS pentru detectarea boților — aceasta face parte din funcția strict necesară a CDN-ului Cloudflare, nu este un strat de urmărire separat integrat de platformă.
Designul banner-ului de cookie-uri
Comportament obligatoriu conform ePrivacy + ghidurilor ANSPDCP (sub rezerva confirmării de către consilier):
- Implicit înainte de consimțământ: se setează exclusiv cookie-urile strict necesare. Cookie-urile de analiză (când vor fi introduse) nu se setează până când utilizatorul nu acordă consimțământul.
- Simetria opțiunilor: banner-ul oferă „Accept toate", „Refuz toate" și „Personalizează" cu stilizare la fel de proeminentă. Butoanele „Refuz" ascunse, îngropate într-un panou de setări, eșuează la revizuirea ANSPDCP.
- Închiderea echivalează cu refuz. Închiderea banner-ului fără selectare nu constituie consimțământ.
- Granularitate pe categorie: strict necesare (mereu active, nu pot fi dezactivate), funcționale, analitice. Fiecare categorie comutabilă are o descriere de o frază a scopului.
- Retragere: pacientul poate revedea oricând alegerea din banner printr-un link „Preferințe cookie-uri" în footer-ul tuturor paginilor publice.
- Evidența consimțământului: alegerea este înregistrată cu timestamp + IP + versiunea conținutului banner-ului afișat. Stocată în același registru
consentsversionat utilizat pentru alte scopuri de consimțământ (sau într-o tabelăcookie_consentsdedicată, dacă consilierul recomandă separarea). - Link către nota de informare privind confidențialitatea: banner-ul include un link către nota de informare privind confidențialitatea completă pentru detalii.
Notă de implementare
La lansare, fără analiză în sferă, banner-ul de cookie-uri este structural minim — o singură confirmare „Continuă" a notei privind cookie-urile strict necesare este suficientă conform ghidurilor ANSPDCP (nu se cere consimțământ pentru cookie-urile strict necesare; doar nota de transparență). Atunci când furnizorul de analiză este adăugat post-lansare, banner-ul se extinde la forma cu mai multe categorii.
Conținut minim viabil al banner-ului la lansare:
Folosim cookie-uri strict necesare pentru autentificare,
gestionarea sesiunii și securitatea acestui site.
Nu rulăm cookie-uri de urmărire sau de publicitate.
[ Continuă ] [ Nota de informare privind confidențialitatea → ]Atunci când se adaugă analiza, conținutul se extinde:
Folosim cookie-uri și tehnologii similare pe acest site.
Cookie-urile strict necesare (mereu active) vă mențin autentificat
și asigură securitatea site-ului.
Cookie-urile de analiză ne ajută să înțelegem cum funcționează
programul pentru pacienții noștri. Puteți opta sau renunța mai jos.
[ Strict necesare ] ON (nu pot fi dezactivate)
[ Analitice ] ☐ Dezactivate implicit
[ Accept selecția ] [ Accept toate ] [ Refuz toate ]
[ Nota de informare privind confidențialitatea → ]Adăugarea unui nou cookie / a unei noi suprafețe de urmărire
Regulă de inginerie: un PR care introduce un nou cookie, o nouă valoare de local-storage sau un nou apel de urmărire trebuie să adauge intrarea în acest inventar în același PR. CI-ul nu impune încă acest lucru (inventarul este doar markdown); convenția este aplicată prin revizuirea de cod până când va fi construit un gard CI (TODO: cmd/check-cookies, similar cu cmd/check-classification).
O suprafață nouă de analiză sau de marketing necesită suplimentar:
- O intrare în catalogul scopurilor de consimțământ
- O extindere a banner-ului de cookie-uri pentru a permite opt-in / opt-out
- O actualizare a șablonului notei de informare privind confidențialitatea (1B.10), astfel încât comunicarea să fie curentă
- Avizul RPD
Jurnal de modificări
| Data | Modificare |
|---|---|
| 15.05.2026 | Inventar inițial v1 — strict necesare + funcționale; analiza amânată; conținut de banner redactat |