
# Dinaminė sutikimo valdymas sintetinės duomenų generavimui su Formize ir generatyviai dirbtiniu intelektu

> **TL;DR** – Šiuolaikiniai sintetiniai duomenų vamzdynai dažnai nepaiso besikeičiančių duomenų subjekto sutikimo nuostatų. Įterpiant Formize realaus laiko formų orkestravimą į generatyviu DI valdomą duomenų sintezę, organizacijos gali fiksuoti detalią sutikimo informaciją, automatiškai ją įgyvendinti duomenų generavimo metu ir išlaikyti nekintamą audito taką, atitinkantį [GDPR](https://gdpr.eu/), [CCPA](https://oag.ca.gov/privacy/ccpa) ir kylančias DI etikos reguliacijas, tokias kaip [ES AI Aktas](https://digital-strategy.ec.europa.eu/en/policies/regulatory-framework-ai).

---

## Kodėl sutikimas svarbus sintetinėje duomenų srityje

Sintetiniai duomenys žada privatumo išsaugojimą analitikai, tačiau *pradiniai* duomenys vis dar priklauso realiems asmenims. Tokios reguliacijos kaip **Europos Sąjungos Bendrasis duomenų apsaugos reglamentas (GDPR)**, **Kalifornijos vartotojų privatumo įstatymas (CCPA)** ir artėjantis **ES AI Aktas** reikalauja, kad bet koks asmens duomenų – realių ar sintetinų – naudojimas gerbtų duomenų subjekto sutikimo pasirinkimus.

### Iššūkiai

| Iššūkis | Tipinis poveikis |
|-----------|----------------|
| **Detalių sutikimo apimtys** | Bendras „taip/ne“ sutikimas nesugeba fiksuoti niuansuotų nuostatų (pvz., „leisti sveikatos duomenis tyrimams, bet ne rinkodarai“). |
| **Sutikimo versijavimas** | Sutikimas keičiasi; senesnės versijos gali tapti neteisingomis, tačiau vamzdynai toliau naudoja pasenusias teises. |
| **Kryžminis sistemos įgyvendinimas** | Duomenų vamzdynai apima kelias priemones (ETL, LLM, saugyklas). Sutikimo įgyvendinimas tarp jų linkęs į klaidas. |
| **Audituojamumas** | Reguliatoriai reikalauja nekintamo sutikimo įrodymo duomenų generavimo momentu. |

Formize, turintis žemo kodo formų kūrimo įrankį, API‑pirmą architektūrą ir blokų grandinės suderinamus audito žurnalus, yra unikaliu būdu pasirengęs išspręsti šias problemas.

## Architektūrinė apžvalga

Below is a high‑level Mermaid diagram that illustrates the end‑to‑end flow from consent capture to synthetic data generation and downstream consumption.

```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.*

### Komponentų apžvalga

1. **Duomenų subjekto portalas** – Žiniatinklio arba mobilioji sąsaja, kurioje asmenys gali peržiūrėti, keisti arba atšaukti sutikimą.  
2. **Formize sutikimo forma** – Konfigūruojama žemo kodo forma, fiksuojanti sutikimo apimtį, tikslą, duomenų kategorijas ir galiojimo datas.  
3. **Sutikimo žurnalas** – Formize įrašo kiekvieną sutikimo įvykį į nekintamą žurnalą (galimai prijungtą prie blokų grandinės, siekiant įrodymo apie nepakitimumą).  
4. **Sutikimo paslaugos API** – Lengvas mikroservisas, teikiantis `GET /consent/{subjectId}` ir `POST /consent/validate` galinius taškus.  
5. **Sintetinių duomenų orkestratorius** – Koordinuoja duomenų išgavimą, transformavimą ir įvedimą į generatyvų modelį. Prieš kiekvieną generavimo užduotį klausia Sutikimo paslaugos.  
6. **Generatyvus DI modelis** – Bet kuris LLM, difuzijos modelis arba lentelių sintezatorius, naudojantis neapdorotais duomenimis.  
7. **Sintetinių duomenų saugykla** – Saugus objektų saugojimas su metaduomenimis, susietais su naudojama sutikimo versija.  
8. **Analitikos ir ML komandos** – Naudoja sintetinį duomenį modelių mokymui, testavimui arba ataskaitoms.  
9. **Reguliatorių audito skydelis** – Vaizduoja sutikimo kilmę, generavimo laiko žymas ir modelio kilmę.

## Žingsnis po žingsnio įgyvendinimo gidas

### 1. Sukurkite sutikimo formą Formize

* Naudokite Formize vilkimo ir numetimo kūrimo įrankį, kad sukurtumėte laukus:
  * **Duomenų kategorijos** – Daugiaprasmis pasirinkimas (pvz., „demografiniai“, „medicinos įrašai“, „finansiniai sandoriai“).
  * **Leidžiami tikslai** – Žymimasis langelis (pvz., „tyrimai“, „produkto kūrimas“, „rinkodara“).
  * **Saugojimo laikotarpis** – Datos pasirinkimas.
  * **Dinaminės sąlygos** – Sąlyginė logika, kuri rodo papildomus laukus, kai pasirenkama „Jautrūs duomenys“.
* Įjunkite **versijavimą**: kiekvieną kartą, kai formos schema keičiasi, Formize automatiškai sukuria naują versijos ID (`v1`, `v2`, …). Šis versijos ID saugomas kartu su kiekvienu sutikimo įrašu.

### 2. Fiksuokite sutikimo įvykius

Kai subjektas pateikia formą:

```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 įrašo šį duomenų paketą į savo **Sutikimo žurnalą**, kurį galima konfigūruoti:

* Saugojimas nekintamoje tik pridedamoje duomenų bazėje (pvz., **Cassandra** su **Time‑Series** suspaudimu).  
* Pasirinktinai publikuoti hashą į viešą blokų grandinę (pvz., **Ethereum** arba **Polygon**) išorinei patikrinimui.

### 3. Sukurkite Sutikimo paslaugos API

Plonas apvalkalas aplink Formize SDK:

```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})
    }
}
```

*The service can be deployed as a **Knative** function or a **Docker** container behind an API gateway.*

### 4. Integruokite su Sintetinių duomenų orkestratoriumi

Dauguma orkestravimo platformų (pvz., **Airflow**, **Prefect**, **Dagster**) palaiko pasirinktinius Python operatorius. Žemiau pateikiama Prefect užduotis, kuri patikrina sutikimą prieš paleidžiant generavimo užduotį.

```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()
```

Jei `allowed` yra `False`, vamzdynas nutraukiamas, o audito įrašas registruojamas.

### 5. Saugokite generavimo metaduomenis

Kai sintetiniai duomenys išsaugomi, pridėkite **metaduomenų manifestą**:

```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 gali automatiškai įterpti šį manifestą į objekto **pasirinktinius metaduomenis** (pvz., S3 `x-amz-meta-*` antraštes) arba saugoti jį **kataloge**, pvz., **DataHub**.

### 6. Sukurkite audito skydelį

Naudojant **Grafana** arba **Superset**, vizualizuokite:

* Sutikimo versiją vs. sintetinės duomenų versiją.  
* Sugeneruotų duomenų skaičių pagal tikslą.  
* Sutikimo atšaukimo įvykius ir jų poveikį žemiau esančioms vamzdynams.

Pavyzdinis Grafana skydelio užklausos (SQL‑panaši pseudo‑kodas):

```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;
```

## Formize valdomo sutikimo ciklo privalumai

| Privalumas | Paaiškinimas |
|------------|---------------|
| **Reguliavimo atitikimas** | Realiojo laiko patikrinimas garantuoja, kad naudojami tik duomenys su galiojančiu sutikimu, atitinkančiu GDPR 7 straipsnį ir CCPA § 1798.120. |
| **Dinaminis sutikimas** | Subjektai gali bet kuriuo metu keisti nuostatas; kitas vamzdyno vykdymas automatiškai gerbia naują būseną. |
| **Nekintama kilmė** | Kiekvienas sutikimo įvykis yra kriptografiškai susietas su sugeneruotais duomenimis, leidžiant atlikti nepakitimo įrodymą turinčius auditus. |
| **Mastelis žemo kodo** | Formize vizualinis kūrimo įrankis sumažina kūrimo laiką; netechninės atitikties komandos gali tiesiogiai valdyti formas. |
| **Kryžminis domenų pakartotinis naudojimas** | Ta pati sutikimo paslauga gali būti naudojama analitikai, DI mokymui ir trečiųjų šalių duomenų turgavietėms. |

## Realūs naudojimo atvejai

### 1. Sveikatos priežiūros tyrimų konsorciumas

Daugelio institucijų konsorciui reikia sintetinės paciento įrašų AI modelio mokymui, gerbiant pacientų atsisakymo nuostatas. Įdiegus sutikimo ciklą, konsorciumas:

* Fiksuoja sutikimą ligoninės portale.  
* Užtikrina, kad bet kuri sintetinė grupė neįtrauktų pacientų, kurie atšaukė sutikimą.  
* Suteikia reguliatoriams vieno spustelėjimo audito ataskaitą, susiejančią kiekvieną sintetinį įrašą su sutikimo hash.

### 2. Finansinių paslaugų rizikos modeliavimas

Bankai generuoja sintetinį transakcijų duomenų rinkinį stresų testavimui. Naudodami Formize, jie:

* Atskiria „rinkodaros“ sutikimą nuo „rizikos analizės“ sutikimo.  
* Automatiškai blokuoja sintetinį duomenų generavimą klientams, kurie sutikimą suteikia tik rinkodarai.  
* Sumažina teisinę riziką ir pagreitina modelių kūrimo ciklus.

### 3. Vartotojų technologijų produktų kūrimas

SaaS įmonė renka naudojimo telemetriją. Su Formize jie:

* Siūlo detalius sutikimus „funkcijų eksperimentavimui“ vs. „reklamai“.  
* Dinamiškai koreguoja sintetinės duomenų vamzdynus, kai vartotojai perjungia nuostatas.  
* Pateikia skaidrų viešą skydelį, rodantį sutikimo pagrindu naudojamus duomenis.

## Geriausios praktikos ir klaidos, kurių reikia vengti

| Geriausia praktika | Kodėl tai svarbu |
|--------------------|------------------|
| **Versijuokite kiekvieną formos pakeitimą** | Užtikrina, kad senesni sutikimo įrašai išliktų susieti su tiksliai tuo schema, kuris buvo naudojamas fiksavimo metu. |
| **Niekada nesaugokite neapdorotų asmens duomenų sintetinėje duomenų bazėje** | Sintetiniai duomenys turėtų būti *gauti*; originalių identifikatorių saugojimas panaikina privatumo tikslą. |
| **Užhashinkite sutikimo parašus su druskos (salt) elementu** | Apsaugo nuo rainbow‑table atakų, tuo pačiu leidžiant patikrinti. |
| **Įgyvendinkite „maloniosios pertraukos“ laikotarpį po atšaukimo** | Leidžia vamzdynams sklandžiai užbaigti vykdomas užduotis prieš sustabdant naujus generavimus. |
| **Reguliariai keiskite šifravimo raktus žurnalui** | Padidina nekintamo žurnalo saugumą nepažeidžiant audituojamumo (naudokite raktų keitimo strategijas). |

**Bendros klaidos**

* **Koduoti sutikimo patikrinimus tiesiai į modelio kodą** – Tai apsunkina atnaujinimus. Centralizuokite per Sutikimo paslaugos API.  
* **Ignoruoti sutikimo galiojimo pabaigą** – Traktuokite `expiresAt` kaip griežtą terminą; suplanuokite automatinius atšaukimo darbus.  
* **Perteklinis sutikimo duomenų rinkimas** – Rinkite tik tai, kas būtina numatytam tikslui; perteklinės laukai padidina GDPR „duomenų minimizavimo“ riziką.

## Ateities kryptys

1. **DI padedamas sutikimo rengimas** – Naudokite LLM, kad pasiūlytų sutikimo tekstą pagal jurisdikciją, sumažinant teisinio rengimo pastangas.  
2. **Federacinis sutikimas tarp organizacijų** – Naudokite **Decentralizuotus identifikatorius (DID)** ir **Patikrinamus įgaliojimus**, kad dalintumėtės sutikimo būsena per pasitikėjimo ribas necentralizuojant duomenų.  
3. **Realiojo laiko sutikimo atšaukimas per webhookus** – Siųskite atšaukimo įvykius tiesiai į Sintetinių duomenų orkestratorių, kad iš karto nutrauktumėte vamzdyną.  
4. **Paaiškinama sintetinė duomenų analizė** – Pridėkite kilmės paaiškinimus (pvz., „generuota naudojant sutikimo versiją v3, tikslas tyrimai“) prie kiekvieno sintetinės įrašo, kad pagerintumėte vėlesnių modelių interpretaciją.

## Išvada

Dinaminis sutikimas nebe yra tik „gražus“ priedas – tai reguliavimo reikalavimas bet kuriai organizacijai, kuri transformuoja asmens duomenis į sintetinį turtą. Sujungus Formize žemo kodo, nekintamą formų variklį su generatyvių DI vamzdynais, įmonės gali:

* Fiksuoti sutikimą detaliu lygiu, kaip reikalauja šiuolaikinės privatumo teisės.  
* Automatiškai įgyvendinti sutikimą duomenų generavimo metu.  
* Pateikti auditoriams nekintamą įrodymą apie atitiktį.

Rezultatas – patikima sintetinės duomenų ekosistema, kuri pagreitina inovacijas, tuo pačiu saugodama asmenų teises.

## Taip pat žiūrėkite

- **ES GDPR 7 straipsnis – Sutikimo sąlygos**  
- **Blokų grandinės pagrindu sukurtos audito takos duomenų valdymui** (IEEE Xplore)