Skip to main content

Privacy Policy v2.0 implementacija (pravnik Ilhan Erma) — MC #106821, 2026-08-04

MC #106821 · Status: Implementirano, spremno za deploy-gate · 2026-08-04 · Grana fix/106821-privacy-policy, worktree ~/business/ALAI-Holding-AS/products/qody-106821-privacy

1. Kontekst

Pravnik Ilhan Erma je mailom (posredstvom Asmira, 2026-08-04) dostavio finalni tekst Politike privatnosti koji zamjenjuje interni draft v1.0 iz MC #104526 (koji je nosio napomenu „podložno pravnoj reviziji“). Izvor istine za sadržaj je repo fajl docs/legal/politika-privatnosti-pravnik-2026-08-04.md — sav frontend tekst je preslikan iz njega, ne parafraziran.

2. Šta je promijenjeno

Implementacija pokriva četiri deliverable-a, u jednom PR-u (commitovi 6af2683 inicijalna implementacija + 2777887 fix nakon peer-review nalaza), na grani fix/106821-privacy-policy:

  1. Landing stranica Politike privatnosti v2.0 (apps/landing/politika-privatnosti/index.html) — svih 11 sekcija pravnikovog teksta, DPO „Ilhan Erma, licencirani pravnik“, kontakti [email protected] (sekcije 1 i 8) i [email protected], datum ažuriranja 2026-08-04, TOC ažuriran, string „podložno pravnoj reviziji“ uklonjen, postojeći legal.css layout zadržan.
  2. Footer na sve 4 landing stranice (index.html, politika-privatnosti, politika-kolacica, uvjeti-koristenja) — standardizovan tekst „© 2026 SnowIT d.o.o. — QODY. Sva prava zadržana.“ + 4 linka (Uslovi korištenja | Politika privatnosti | Politika kolačića | Kontakt).
  3. CookieBanner (apps/guest/src/components/CookieBanner.tsx) — naslov „Vaša privatnost nam je važna“ + pravnikov tekst, tri dugmeta (Prihvati sve / Odbij opcionalne / Postavke kolačića), consent state perzistiran u localStorage, nijedan opcioni skript se ne aktivira prije saglasnosti, link na politiku kolačića.
  4. InviteAcceptScreen (apps/admin/src/InviteAcceptScreen.tsx) — obavezan checkbox „Pročitao/la sam i prihvatam Uslove korištenja QODY platforme.“ (submit blokiran dok nije čekiran), info linija s linkom na Politiku privatnosti, odvojen opcioni checkbox za marketing saglasnost (default neoznačen). Nigdje se ne koristi zabranjena fraza „prihvatam Politiku privatnosti“.

3. Verifikacija (Writer ≠ Witness)

Nezavisna peer-verifikacija (Angie Jones / Proveo persona, odvojena sesija od buildera) prošla je kroz dva kruga:

Round 1 — PARTIAL, 5 nalaza:

  • UTF-8/ćirilica korupcija u TOC-u („2.Ције podatke prikupljamo?“ umjesto „2. Koje podatke prikupljamo?“) — greška heredoc encodinga pri inicijalnom pisanju fajla.
  • Footer na apps/landing/index.html nije bio ažuriran iako je AC2 tvrdio suprotno.
  • Rečenica o kartičnim podacima bila parafrazirana umjesto doslovnog citata pravnika.
  • Mrtvi i18n fallback u InviteAcceptScreen.tsxt("admin.invite.tosRequired") || "..." nikad ne bi pao na fallback jer nepostojeći i18n ključ vraća istinit (truthy) string.
  • Build gate blokiran jer je MC owner bio „john“ umjesto „codecraft“, pa sankcionisani run-build.sh runner nije mogao izvršiti buildove.

Fix ciklus (commit 2777887): sva 4 sadržajna nalaza ispravljena (heredoc encoding root-cause, footer standardizovan na svih 4 stranice, kartična rečenica vraćena na doslovan pravnikov tekst, i18n fallback zamijenjen literalnim stringom), owner promijenjen na codecraft → buildovi izvršeni: guest app 283 modula, admin app 1947 modula, oba PASS bez TypeScript grešaka.

Round 2 — PASS: svih 5 nalaza nezavisno reprodukovano kao popravljeno (verifikator sam ponovo pokrenuo buildove — byte-identični brojevi modula/bundle veličina, ne samo pročitan builderov transkript). Uživo Playwright testiranje protiv stvarnih dist/ bundlova: cookie baner (3 dugmeta po role/label, settings panel, perzistencija preko reloada, 3 distinktna consent stanja u localStorage), invite ekran (mockovan peek endpoint, submit dugme disabled→enabled tačno na ToS checkbox, marketing checkbox potvrđeno neoznačen po defaultu, pravnikov tekst doslovan u DOM-u). Pun diff commit-a 2777887 pročitan direktno — potvrđeno da nijedan drugi paragraf nije dirnut. Zabranjene fraze i provjera odsustva analytics/marketing skripti i dalje čiste.

4. DEPLOY GATE — JOŠ NIJE DEPLOYANO

Implementacija je verifikovana lokalno (build + Playwright protiv lokalno serviranih bundlova), ali deploy je izričito van scope-a ovog MC-a i čeka sljedeće uslove:

  • Email adrese moraju postojati živo: [email protected] i [email protected] (CF Email Routing) — čeka odluku CEO-a/Asmira o destinaciji poruka.
  • Politika kolačića i Uslovi korištenja i dalje sadržajno nedovršeni: obje stranice još nose napomenu „Verzija 1.0 (2026-06-30) — podložno pravnoj reviziji“ — footer im je ažuriran u ovom MC-u, ali sadržaj čeka odvojen pravnikov pregled.
  • PI2 deploy verifikacija mora se odraditi kao poseban zadatak nakon deploya (landing = CF Pages qody-landing; guest/admin = ACA s VITE_API_BASE_URL build-argom) — browser/production dokaz, ne samo build zeleno.
  • Puni invite-accept submit round-trip (kreiranje naloga) nije end-to-end testiran — van pravnog/consent scope-a ovog MC-a, izričito deklarisano kao netestirano, ne kao PASS.

5. Follow-up

MC #106826 — otvoren za dodavanje marketing-consent polja na backend invite-accept endpoint (trenutno checkbox state postoji samo lokalno u formi jer backend polje ne postoji; nije izmišljen backend ugovor).


Evidence: /Users/makinja/system/evidence/106821/ (dispatch-plan.md, s1-fix-report.md, s2-verify-report.md, s2-verify-report-round2.md, p2p-native-verify-transcript.md, screenshotovi i JSON izvještaji Playwright testova).