
# Dinamičko upravljanje pristankom za generiranje sintetičkih podataka s Formize-om i generativnom AI

> **TL;DR** – Moderni pipeline‑i sintetičkih podataka često zanemaruju promjenjive preferencije pristanka subjekata podataka. Ugradnjom real‑time orkestracije obrazaca Formize‑a u generativno‑AI‑vođenu sintezu podataka, organizacije mogu zabilježiti detaljan pristank, automatski ga provoditi tijekom generiranja podataka i održavati nepromjenjiv audit trail koji zadovoljava [GDPR](https://gdpr.eu/), [CCPA](https://oag.ca.gov/privacy/ccpa) i nadolazeće regulative o AI‑etici poput [EU AI Act](https://digital-strategy.ec.europa.eu/en/policies/regulatory-framework-ai).

---

## Zašto je pristankom bitan u sintetičkim podacima

Sintetički podaci obećavaju analitiku koja čuva privatnost, ali *izvorni* podaci i dalje pripadaju stvarnim osobama. Regulacije poput **EU Opće uredbe o zaštiti podataka (GDPR)**, **Kalifornijskog zakona o privatnosti potrošača (CCPA)** i nadolazećeg **EU AI Act** zahtijevaju da svaka daljnja upotreba osobnih podataka – stvarnih ili sintetičkih – poštuje odluke subjekta o pristanku.

Ključni izazovi:

| Izazov | Uobičajeni učinak |
|-----------|----------------|
| **Granularni opseg pristanka** | Jednostavan “da/ne” pristup ne hvata nijansirane preferencije (npr. “dozvoli zdravstvene podatke za istraživanje, ali ne za marketing”). |
| **Verzija pristanka** | Pristank se mijenja; starije verzije mogu postati nevažeće, a pipeline‑i i dalje koriste zastarjele dozvole. |
| **Provođenje kroz više sustava** | Pipeline‑i obuhvaćaju više alata (ETL, LLM‑i, pohranu). Provođenje pristanka kroz sve njih je sklon pogreškama. |
| **Auditornost** | Regulatori zahtijevaju nepromjenjiv dokaz o pristanku u trenutku generiranja podataka. |

Formize, sa svojim low‑code builder‑om obrazaca, API‑prvom arhitekturom i blockchain‑kompatibilnim audit log‑ovima, jedinstveno je pozicioniran za rješavanje ovih problema.

---

## Arhitektonski pregled

Dolje je prikazan visokorazinski Mermaid dijagram koji ilustrira cjelokupni tok od prikupljanja pristanka do generiranja sintetičkih podataka i daljnje potrošnje.

```mermaid
flowchart TD
    A["Data Subject Portal"] --> B["Formize Consent Form"]
    B --> C["Consent Ledger (Immutable)"]
    C --> D["Consent Service API"]
    D --> E["Synthetic Data Orchestrator"]
    E --> F["Generative AI Model (LLM / Diffusion)"]
    F --> G["Synthetic Dataset Store"]
    G --> H["Analytics & ML Teams"]
    H --> I["Regulatory Audit Dashboard"]
```

*All nodes are quoted as required; no escaped characters are used.*

### Razlaganje komponenti

1. **Portal subjekta podataka** – Web ili mobilno sučelje gdje pojedinci mogu pregledati, mijenjati ili povući svoj pristank.
2. **Formular pristanka Formize** – Konfigurabilni low‑code obrazac koji bilježi opseg pristanka, svrhu, kategorije podataka i datume isteka.
3. **Knjiga pristanka** – Formize zapisuje svaki događaj pristanka u nepromjenjivi log (po želji povezan na blockchain radi dokazivanja nepromjenjivosti).
4. **API usluge pristanka** – Lagani mikro‑servis koji izlaže `GET /consent/{subjectId}` i `POST /consent/validate` endpoint‑ove.
5. **Orkestrator sintetičkih podataka** – Koordinira ekstrakciju, transformaciju i prosljeđivanje podataka generativnom modelu. Prije svakog posla generiranja upita Consent Service.
6. **Generativni AI model** – Bilo koji LLM, diffusion model ili tabularni sintetizator koji konzumira sirove podatke.
7. **Skladište sintetičkih skupova podataka** – Sigurna objektna pohrana s metapodacima koji povezuju natrag na korištenu verziju pristanka.
8. **Timovi za analitiku i strojno učenje** – Koriste sintetičke podatke za treniranje modela, testiranje ili izvještavanje.
9. **Regulatorna nadzorna ploča** – Vizualizira podrijetlo pristanka, vremenske oznake generiranja i liniju podrijetla modela.

---

## Vodič za implementaciju korak po korak

### 1. Dizajnirajte formular pristanka u Formize

* Koristite drag‑and‑drop builder za stvaranje polja:
  * **Kategorije podataka** – Multi‑select (npr. “demografski”, “medicinski zapisi”, “financijske transakcije”).
  * **Dozvoljene svrhe** – Checkbox‑i (npr. “istraživanje”, “razvoj proizvoda”, “marketing”).
  * **Razdoblje zadržavanja** – Date picker.
  * **Dinamički uvjeti** – Uvjetna logika koja prikazuje dodatna polja kada je odabrano “Osjetljivi podaci”.

* Omogućite **verzioniranje**: svaki put kad se shema obrasca promijeni, Formize automatski kreira novi ID verzije (`v1`, `v2`, …). Taj ID verzije pohranjuje se uz svaki zapis pristanka.

### 2. Zabilježite događaje pristanka

Kad subjekt pošalje obrazac:

```json
POST /api/v1/consent
{
  "subjectId": "user-12345",
  "formVersion": "v3",
  "consentGiven": true,
  "scopes": ["demographics", "financial"],
  "purposes": ["research"],
  "expiresAt": "2028-12-31T23:59:59Z",
  "signature": "base64‑encoded‑hash"
}
```

Formize zapisuje ovaj payload u **Knjigu pristanka**, koju možete konfigurirati da:

* Pohranjuje u nepromjenjivu bazu tipa append‑only (npr. **Cassandra** s **Time‑Series** kompakcijom).
* Opcionalno objavi hash na javni blockchain (npr. **Ethereum** ili **Polygon**) radi vanjske verifikacije.

### 3. Izgradite API usluge pristanka

Tanki omotač oko Formize‑ovog SDK‑a:

```go
// consent_service.go
package consent

import (
    "net/http"
    "encoding/json"
    "github.com/formize/sdk"
)

type ConsentRequest struct {
    SubjectID string `json:"subjectId"`
    DataCategories []string `json:"dataCategories"`
    Purpose string `json:"purpose"`
}

// Validate checks if the subject’s consent covers the requested scope.
func Validate(w http.ResponseWriter, r *http.Request) {
    var req ConsentRequest
    json.NewDecoder(r.Body).Decode(&req)

    consent, err := sdk.GetLatestConsent(req.SubjectID)
    if err != nil {
        http.Error(w, "Consent not found", http.StatusNotFound)
        return
    }

    // Simple rule engine
    allowed := false
    for _, cat := range req.DataCategories {
        for _, allowedCat := range consent.Scopes {
            if cat == allowedCat {
                allowed = true
                break
            }
        }
    }

    if allowed && consent.PurposesContains(req.Purpose) && !consent.IsExpired() {
        w.WriteHeader(http.StatusOK)
        json.NewEncoder(w).Encode(map[string]bool{"allowed": true})
    } else {
        w.WriteHeader(http.StatusForbidden)
        json.NewEncoder(w).Encode(map[string]bool{"allowed": false})
    }
}
```

*Uslugu možete rasporediti kao **Knative** funkciju ili **Docker** kontejner iza API gateway‑a.*

### 4. Integrirajte s orkestratorom sintetičkih podataka

Većina platformi za orkestraciju (npr. **Airflow**, **Prefect**, **Dagster**) podržava prilagođene Python operatore. Ispod je Prefect zadatak koji provjerava pristank prije pokretanja posla generiranja.

```python
# consent_check_task.py
from prefect import task, Flow
import requests

@task
def check_consent(subject_id: str, categories: list, purpose: str):
    payload = {
        "subjectId": subject_id,
        "dataCategories": categories,
        "purpose": purpose
    }
    resp = requests.post("https://consent.service/api/v1/validate", json=payload)
    resp.raise_for_status()
    return resp.json()["allowed"]

@task
def generate_synthetic_data(subject_id: str):
    # Placeholder for LLM or diffusion model call
    print(f"Generating synthetic data for {subject_id}")

with Flow("synthetic-data-pipeline") as flow:
    allowed = check_consent("user-12345", ["demographics"], "research")
    generate = generate_synthetic_data("user-12345")
    generate.set_upstream(allowed, upstream_tasks=[allowed])

flow.run()
```

Ako je `allowed` **False**, pipeline se prekida, a audit zapis se bilježi.

### 5. Pohranite metapodatke generacije

Kad se sintetički skup podataka pohrani, priložite **manifest metapodataka**:

```json
{
  "datasetId": "synthetic-2026-08-21-001",
  "generatedAt": "2026-08-21T14:32:10Z",
  "consentVersion": "v3",
  "subjectId": "user-12345",
  "model": "gpt‑4‑synthetic‑v1",
  "purpose": "research"
}
```

Formize može automatski umetnuti ovaj manifest u **custom metadata** objekta (npr. S3 `x-amz-meta-*` zaglavlja) ili ga pohraniti u katalog poput **DataHub**.

### 6. Izradite nadzornu ploču

Korištenjem **Grafane** ili **Superseta**, vizualizirajte:

* Verziju pristanka vs. verziju sintetičkog skupa podataka.
* Broj generiranih skupova po svrsi.
* Događaje povlačenja pristanka i njihov utjecaj na downstream pipeline‑e.

Primjer Grafana upita (SQL‑like pseudo‑code):

```sql
SELECT
  consent_version,
  COUNT(*) AS datasets_generated,
  SUM(CASE WHEN purpose = 'research' THEN 1 ELSE 0 END) AS research_datasets
FROM synthetic_dataset_store
GROUP BY consent_version
ORDER BY consent_version DESC;
```

---

## Korist Formize‑vođenog petlje pristanka

| Korist | Objašnjenje |
|--------|-------------|
| **Regulatorna usklađenost** | Validacija u real‑time jamči da se koriste samo podaci s trenutnim pristankom, zadovoljavajući GDPR Art. 7 i CCPA § 1798.120. |
| **Dinamički pristank** | Subjekti mogu u bilo kojem trenutku mijenjati preferencije; sljedeći run pipeline‑a automatski poštuje novo stanje. |
| **Neponovljiva provjera** | Svaki događaj pristanka kriptografski je povezan s generiranim skupom podataka, omogućujući audit koji otkriva manipulacije. |
| **Skalabilni low‑code** | Vizualni builder Formize‑a smanjuje vrijeme razvoja; timovi za usklađenost mogu sami upravljati obrascima. |
| **Ponovna upotreba kroz domene** | Isti Consent Service može konzumirati analitika, AI treniranje i vanjski data marketplace. |

---

## Primjeri iz stvarnog svijeta

### 1. Konsorcij za zdravstvena istraživanja

Konzorcij više institucija treba sintetičke pacijentske zapise za treniranje AI modela, poštujući pacijentove preferencije za odjavu. Implementacijom petlje pristanka, konsorcij:

* Prikuplja pristanke na bolničkom portalu.
* Jamči da bilo koji sintetički kohort isključuje pacijente koji su povukli pristank.
* Pruža regulatorima jednim klikom audit izvještaj koji povezuje svaki sintetički zapis s hash‑om pristanka.

### 2. Financijske usluge – modeliranje rizika

Banke generiraju sintetičke transakcijske podatke za stres‑testiranje. Uz Formize:

* Razdvajaju “marketing” pristank od “analiza rizika”.
* Automatski blokiraju generiranje sintetičkih podataka za klijente koji su dali pristank samo za marketing.
* Smanjuju pravni rizik i ubrzavaju razvoj modela.

### 3. Potrošačka tehnološka tvrtka – razvoj proizvoda

SaaS tvrtka prikuplja telemetry upotrebe. S Formize‑om:

* Nudi granularni pristank za “eksperimentiranje s funkcijama” vs. “oglašavanje”.
* Dinamički prilagođava pipeline‑e sintetičkih podataka kako korisnici mijenjaju preferencije.
* Održava transparentnu javnu nadzornu ploču koja prikazuje korištenje podataka temeljeno na pristanku.

---

## Najbolje prakse i zamke za izbjegavanje

| Najbolja praksa | Zašto je važna |
|-----------------|----------------|
| **Verzija svakog promijenjenog obrasca** | Osigurava da se stariji zapisi pristanka povezuju s točnom shemom koja je bila aktivna u trenutku prikupljanja. |
| **Nikada ne pohranjujte sirove PII u sintetički skup** | Sintetički podaci trebaju biti izvedeni; pohranjivanje originalnih identifikatora poništava cilj privatnosti. |
| **Hashirajte potpise pristanka uz sol** | Sprječava napade tablicama pretraživanja, a i dalje omogućuje verifikaciju. |
| **Implementirajte „grace period“ nakon povlačenja** | Omogućuje pipeline‑ima da dovrše u tijeku poslove prije potpunog zaustavljanja novih generacija. |
| **Redovito rotirajte ključeve enkripcije za ledger** | Povećava sigurnost nepromjenjivog log‑a bez narušavanja auditabilnosti (koristite strategije key‑rolling‑a). |

**Uobičajene zamke**

* **Hard‑kodiranje provjere pristanka** – Ugradnja logike pristanka izravno u kod modela otežava ažuriranja. Centralizirajte provjeru putem Consent Service API‑ja.
* **Zanemarivanje isteka pristanka** – `expiresAt` tretirajte kao čvrsti rok; planirajte automatske zadatke za revokaciju.
* **Prekomjerno prikupljanje podataka o pristanku** – Prikupljajte samo ono što je potrebno za određenu svrhu; višak podataka povećava rizik prema GDPR‑ovom principu “minimalizacije podataka”.

---

## Budući smjerovi

1. **AI‑pomoć pri sastavljanju pristanka** – Iskoristite LLM‑ove za predlaganje jezičnog teksta pristanka temeljenog na jurisdikciji, smanjujući pravni napor.
2. **Federirani pristank među organizacijama** – Upotrijebite **Decentralized Identifiers (DIDs)** i **Verifiable Credentials** za dijeljenje statusa pristanka preko granica povjerenja bez centralizacije podataka.
3. **Real‑time revokacija pristanka putem webhook‑ova** – Push‑ajte događaje povlačenja izravno orkestratoru sintetičkih podataka za trenutno zaustavljanje pipeline‑a.
4. **Objašnjivi sintetički podaci** – Priložite objašnjenja podrijetla (npr. “generirano uz verziju pristanka v3, svrha istraživanje”) svakom sintetičkom zapisu radi interpretabilnosti modela.

---

## Zaključak

Dinamički pristank više nije “lijepa dodatna opcija”; to je regulatorna nužnost za svaku organizaciju koja pretvara osobne podatke u sintetičke resurse. Spojivanjem low‑code, nepromjenjivog obrasca Formize‑a s pipeline‑ima generativne AI, poduzeća mogu:

* Prikupiti pristank na granularnoj razini koju zahtijevaju moderni zakoni o privatnosti.
* Automatski provoditi taj pristank tijekom sinteze podataka.
* Pružiti revizorima nepromjenjiv dokaz o usklađenosti.

Rezultat je pouzdan ekosustav sintetičkih podataka koji ubrzava inovacije, a istovremeno štiti prava pojedinaca.

---

## Vidi također

- **EU GDPR Članak 7 – Uvjeti za pristank**  
- **Blockchain‑ankrirani audit trailovi za upravljanje podacima** (IEEE Xplore)