Car audio · Chișinău str. Columna 184, Chișinău
ClearSound RU 060 832 279

Contorul de apăsări: de ce nu prelucrează date cu caracter personal

Decizia D10 din auditul de design (17/10/2026). Contorul arată câte apăsări primesc butoanele de contact (WhatsApp, Viber, Telegram, „Sună”, „Copiază”, e-mail), pe fiecare pagină, în fiecare zi. Nota explică de ce contorul nu intră sub Legea nr. 195/2024 privind protecția datelor cu caracter personal și de ce nu cere consimțământ. Nu e un aviz juridic. E raționamentul tehnic, cu sursele, pentru cine verifică.

Ce se păstrează

Un singur tabel în D1, clicuri:

zi pagina buton n
2026-10-17 /instalare-dsp-auto/ whatsapp.bara 14
2026-10-17 /contact/ suna.sus 3
  • zi: data calendaristică din Chișinău, fără oră.
  • pagina: una din paginile publice, dintr-o listă fixă (PAGINI în src/admin/clicuri.ts).
  • buton: canalul și zona de pe pagină (whatsapp.bara, suna.foaie etc.), tot dintr-o listă fixă.
  • n: un număr întreg. La fiecare apăsare se adună 1 pe rândul respectiv.

Asta e tot ce există. Nu există un rând pentru fiecare apăsare, ci doar totalul zilei.

Ce nu există și cum e garantat

Ce nu există Cum e garantat
Cookie Cererea pleacă cu credentials: 'omit', deci browserul nu trimite niciun cookie, nici pe cel al panoului. Funcția nu pune niciun cookie. check pică dacă scriptul pierde credentials: 'omit'.
Ceva stocat pe telefon sau calculator Scriptul nu folosește localStorage, sessionStorage, IndexedDB sau document.cookie. check pică dacă le atinge.
IP, user-agent, adresa de proveniență, alte antete functions/api/clic.ts citește doar corpul cererii. tools/clic.test.mjs trimite o cerere cu IP și cookie, iar testul pică dacă funcția atinge request.headers. check pică și la request.headers, headers.get sau console. în funcție.
Ora exactă Se păstrează doar ziua.
Identificator de utilizator sau de sesiune Tabelul nu are niciun câmp pentru așa ceva.
Text liber (un nume, un număr de telefon strecurat) Butonul și pagina trebuie să fie din listele fixe, altfel cererea e refuzată și nu se scrie nimic.
Jurnale cu cererile Funcția nu scrie nimic în jurnal. wrangler.toml nu pornește jurnale păstrate ([observability]).

De ce nu intră sub Legea 195/2024

  1. Legea se aplică datelor cu caracter personal, adică informațiilor despre o persoană fizică identificată sau identificabilă. Noțiunile sunt definite la art. 4 din lege, pe modelul art. 4 din Regulamentul (UE) 2016/679 (GDPR), pe care legea îl transpune. Legea e în vigoare din 23 august 2026.

  2. Informațiile anonime sunt scoase explicit din lege. Îndrumările CNPDCP pentru aplicarea Legii 195/2024, pct. 23:

    Principiile protecției datelor nu se aplică informațiilor anonime, adică informațiilor care nu sunt legate de o persoană fizică identificată sau identificabilă sau datelor cu caracter personal care sunt anonimizate astfel încât persoana vizată nu este sau nu mai este identificabilă. Prin urmare, Legea nr. 195/2024 nu se aplică prelucrării unor astfel de informații anonime, inclusiv în cazul în care acestea sunt utilizate în scopuri statistice sau de cercetare.

  3. Un rând din clicuri nu e legat de nicio persoană. „14 apăsări pe WhatsApp din bara de jos, pe pagina DSP, pe 17 octombrie” nu spune cine a apăsat. Același pct. 23 cere să se ia în calcul toate mijloacele pe care e rezonabil să le folosească operatorul sau altcineva ca să identifice persoana. Aici nu există ce folosi: informația despre cine a apăsat nu e ascunsă sau separată, ea nu ajunge deloc în tabel. Nu e nici pseudonimizare, pentru că nu există informații suplimentare păstrate în altă parte care să lege rândul de cineva.

  4. Contorul ocolește exact identificatorii pe care îi numește legea. Pct. 27 din aceleași îndrumări: persoanele pot fi asociate cu identificatori online, „cum ar fi adresele IP, identificatorii cookie sau alți identificatori”. Contorul nu folosește niciunul.

  5. Cazul-limită: o pagină cu un singur vizitator într-o zi. Rândul arată atunci „1”. Nici așa nu e identificabil: nu se știe cine, la ce oră sau de unde, iar tabelul nu are nimic de pus lângă alt set de date.

De ce nu cere consimțământ

  • Consimțământul e un temei pentru prelucrarea datelor cu caracter personal. Orice prelucrare de astfel de date trebuie să se bazeze pe unul din temeiurile de la art. 6, 9 și 10 din Legea 195/2024. Contorul nu prelucrează date cu caracter personal, deci nu are nevoie de temei.
  • Regula despre cookie-uri vine din alt act și privește dispozitivul utilizatorului. Legea comunicațiilor electronice nr. 72/2025, în vigoare din 1 ianuarie 2026 (art. 127), la art. 116 alin. (5): stocarea de informații sau accesul la informații deja stocate în echipamentul terminal al utilizatorului sunt permise doar dacă utilizatorul a primit „informații clare și complete, în conformitate cu Legea nr. 195/2024”, despre scopuri. Alin. (6) scoate de sub regulă stocarea strict necesară pentru transmisie sau pentru serviciul cerut expres de utilizator. Contorul nu stochează și nu citește nimic pe telefon sau pe calculator: nici cookie, nici localStorage, nici amprentă de browser. Trimite o cerere obișnuită, cum face orice link sau imagine de pe pagină, deci regula nu se aplică deloc.
  • Textul l-am citit în Monitorul Oficial nr. 226-228 din 13 mai 2025, art. 266 (17/10/2026). Până atunci nota spunea „doar cu consimțământ”, după un rezumat al vechii Legi 241/2007; textul nou cere informare. Concluzia nu se schimbă.

Ce rămâne în afara contorului

  • Cloudflare, gazda site-ului, primește IP-ul la orice cerere: la fiecare pagină, imagine sau font, nu doar la contor. Fără el nu poate livra pagina. Asta ține de găzduirea site-ului, nu de contor. Contorul nu citește IP-ul și nu adaugă nimic la ce primește gazda oricum.
  • Formularul de contact e altă poveste. Cererile din formular (nume, telefon) sunt date cu caracter personal și stau în tabelul leads, cu regulile lor (docs/confidentialitate.md; pe site, pagina Confidențialitate). Contorul nu se leagă de ele și nu are voie să se lege.

Ce ar schimba concluzia

Oricare din schimbările de mai jos cere o analiză nouă înainte să fie făcută:

  • ora exactă în loc de zi;
  • IP-ul sau o amprentă a lui (nici hash-ul nu ajunge: pct. 23 tratează datele pseudonimizate tot ca date cu caracter personal);
  • user-agent-ul, adresa de proveniență completă, rezoluția ecranului sau orice altă combinație care face o amprentă de browser;
  • un identificator în cookie sau în localStorage, chiar „anonim”;
  • câmpuri cu text liber;
  • legarea contorului de cererile din formular.

Corecții

Fiecare intervenție de mână în tabelul clicuri se trece aici.

  • 17/10/2026, 18:08 UTC: scoase 68 de apăsări false, cu acordul ownerului și doar pe rândurile respective. Scriptul de inventar pentru politica de confidentialitate a apăsat pe producție primul buton WhatsApp de pe fiecare din cele 17 pagini publice, de 4 ori (2 treceri × 2 lățimi), pe ziua de 2026-10-17. Rândurile atinse: whatsapp.sus pe / și /contact/; whatsapp.final pe /configurator/, /preturi/, /lucrari/, /despre/; whatsapp.unealta pe /calculator-izolare-fonica/; whatsapp.pret pe cele 10 pagini de serviciu. Corecția a făcut-o un script de unică folosință (rularea Actions 39056787677, ramura temporară claude/corectie-contor). Scriptul a citit întâi rândurile, s-ar fi oprit fără să scrie nimic dacă vreunul avea sub 4, a scăzut 4 din fiecare și a verificat rezultatul: total 68. Au rămas apăsările reale, 1 pe / (whatsapp.sus) și 2 pe /instalare-dsp-auto/ (whatsapp.pret). Rândurile ajunse la 0 au fost șterse. De atunci, orice script de test blochează /api/clic (page.route).

Unde e în cod

  • src/admin/clicuri.ts: listele permise (canale, zone, pagini), ziua din Chișinău, schema, plafonul pe rând.
  • functions/api/clic.ts: numără o apăsare și citește doar corpul cererii.
  • functions/api/admin/clicuri.ts și pagina „Apăsări” din panou: arată cifrele, cu autentificare.
  • src/layouts/Base.astro: scriptul care trimite apăsarea.
  • migrations/0002_clicuri.sql: tabelul. Funcția îl creează singură la prima apăsare dacă migrarea n-a rulat.
  • tools/clic.test.mjs și tools/check.mjs: gărzile de mai sus.

Surse

Ce facem

Prețurile sunt de manoperă. Echipamentul se alege separat.

Sună-ne

Se lucrează cu programare · Răspundem în aceeași zi

060 832 279