# 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 `privacy@qody.ba` (sekcije 1 i 8) i `dpo@qody.ba`, 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.tsx` — `t("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:** `privacy@qody.ba` i `dpo@qody.ba` (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).*