
# Динамічне управління згодою для генерації синтетичних даних за допомогою Formize та генеративного ШІ

> **TL;DR** – Сучасні конвеєри синтетичних даних часто ігнорують змінювані переваги щодо згоди суб’єктів даних. Вбудувавши оркестрацію форм Formize в реальному часі у процес генерації даних за допомогою генеративного ШІ, організації можуть захоплювати детальну згоду, автоматично застосовувати її під час генерації даних і підтримувати незмінний журнал аудиту, який задовольняє вимоги [GDPR](https://gdpr.eu/), [CCPA](https://oag.ca.gov/privacy/ccpa) та нових регуляцій етики ШІ, таких як [EU AI Act](https://digital-strategy.ec.europa.eu/en/policies/regulatory-framework-ai).

---

## Чому згода важлива у синтетичних даних

Синтетичні дані обіцяють аналітику, що зберігає конфіденційність, проте *джерельні* дані все ще належать реальним особам. Регуляції, такі як **Загальний регламент захисту даних ЄС (GDPR)**, **Закон про конфіденційність споживачів Каліфорнії (CCPA)** та майбутній **EU AI Act**, вимагають, щоб будь‑яке подальше використання персональних даних — реальних чи синтетичних — поважало вибір суб’єкта даних щодо згоди.

Ключові виклики:

| Виклик | Типовий вплив |
|-----------|----------------|
| **Гранульовані області згоди** | Загальна згода «так/ні» не охоплює нюанси (наприклад, «дозволити використання медичних даних для досліджень, але не для маркетингу»). |
| **Версіонування згоди** | Згода змінюється; старі версії можуть стати недійсними, проте конвеєри продовжують використовувати застарілі дозволи. |
| **Застосування між системами** | Конвеєри охоплюють кілька інструментів (ETL, LLM, сховища). Забезпечення згоди у всіх з них схильне до помилок. |
| **Аудитність** | Регулятори вимагають незмінного доказу згоди в момент генерації даних. |

Formize, завдяки low‑code конструктору форм, API‑першій архітектурі та блокчейн‑сумісним журналам аудиту, унікально підходить для вирішення цих проблем.

---

## Огляд архітектури

Нижче — діаграма Mermaid високого рівня, що ілюструє повний потік від захоплення згоди до генерації синтетичних даних і їх подальшого використання.

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

### Розбір компонентів

1. **Портал суб’єкта даних** – Веб‑ або мобільний інтерфейс, де користувачі можуть переглядати, змінювати або відкликати згоду.  
2. **Форма згоди Formize** – Налаштовувана low‑code форма, що захоплює область згоди, мету, категорії даних та терміни дії.  
3. **Журнал згоди** – Formize записує кожну подію згоди в незмінний лог (за потреби прив’язаний до блокчейну для доказу незмінності).  
4. **API сервісу згоди** – Легковаговий мікросервіс, що надає кінцеві точки `GET /consent/{subjectId}` та `POST /consent/validate`.  
5. **Оркестратор синтетичних даних** – Керує витягом, трансформацією та передачею даних у генеративну модель. Перед кожним запуском запитує сервіс згоди.  
6. **Генеративна модель ШІ** – Будь‑яка LLM, дифузійна модель або табличний синтезатор, що споживає сирі дані.  
7. **Сховище синтетичних наборів** – Безпечне об’єктне сховище з метаданими, що посилаються на використану версію згоди.  
8. **Команди аналітики та ML** – Використовують синтетичні дані для навчання моделей, тестування або звітності.  
9. **Дашборд аудиту регуляторів** – Візуалізує походження згоди, часові мітки генерації та ланцюжок моделі.

---

## Покроковий посібник з впровадження

### 1. Проектування форми згоди у Formize

* Використайте конструктор drag‑and‑drop, щоб створити поля:
  * **Категорії даних** – Мультивибір (наприклад, «демографія», «медичні записи», «фінансові транзакції»).  
  * **Дозволені цілі** – Чекбокси (наприклад, «дослідження», «розробка продукту», «маркетинг»).  
  * **Термін зберігання** – Вибір дати.  
  * **Динамічні умови** – Умовна логіка, що показує додаткові поля, коли обрано «чутливі дані».  

* Увімкніть **версіонування**: кожного разу, коли схема форми змінюється, Formize автоматично створює новий ідентифікатор версії (`v1`, `v2`, …). Цей ідентифікатор зберігається разом із кожним записом згоди.

### 2. Захоплення подій згоди

Коли суб’єкт надсилає форму:

```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 записує цей payload у **Журнал згоди**, який можна налаштувати так, щоб:

* Зберігати в незмінній базі типу **append‑only** (наприклад, **Cassandra** з компакцією **Time‑Series**).  
* За потреби публікувати хеш у публічний блокчейн (наприклад, **Ethereum** або **Polygon**) для зовнішньої верифікації.

### 3. Створення API сервісу згоди

Тонка обгортка навколо SDK Formize:

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

*Сервіс можна розгорнути як функцію **Knative** або контейнер **Docker** за API‑шлюзом.*

### 4. Інтеграція з оркестратором синтетичних даних

Більшість платформ оркестрації (наприклад, **Airflow**, **Prefect**, **Dagster**) підтримують кастомні Python‑оператори. Нижче — приклад завдання Prefect, що перевіряє згоду перед запуском генерації.

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

Якщо `allowed` дорівнює `False`, конвеєр переривається, а запис аудиту створюється автоматично.

### 5. Зберігання метаданих генерації

При збереженні синтетичного набору додавайте **маніфест метаданих**:

```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 може автоматично вбудовувати цей маніфест у **custom metadata** об’єкта (наприклад, заголовки `x-amz-meta-*` в S3) або зберігати його в каталозі типу **DataHub**.

### 6. Побудова дашборду аудиту

За допомогою **Grafana** або **Superset** візуалізуйте:

* Версії згоди проти версій синтетичних наборів.  
* Кількість наборів, створених за кожною метою.  
* Події відкликання згоди та їх вплив на конвеєри.

Приклад запиту Grafana (SQL‑подібний псевдокод):

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

| Перевага | Пояснення |
|----------|-----------|
| **Відповідність регуляціям** | Валідація в реальному часі гарантує, що використовується лише актуальна згода, що задовольняє GDPR Art. 7 та CCPA § 1798.120. |
| **Динамічна згода** | Суб’єкти можуть у будь‑який момент змінювати свої уподобання; наступний запуск конвеєра автоматично їх враховує. |
| **Незмінна простежуваність** | Кожна подія згоди криптографічно пов’язана з генерованим набором, що дозволяє проводити незмінний аудит. |
| **Масштабоване low‑code** | Візуальний конструктор Formize скорочує час розробки; команди з комплаєнсу без коду можуть керувати формами. |
| **Універсальне використання** | Один і той самий сервіс згоди може споживатися аналітиками, командами AI та сторонніми маркетплейсами даних. |

---

## Реальні сценарії використання

### 1. Консорціум медичних досліджень

Консорціум, що об’єднує кілька медичних установ, потребує синтетичних пацієнтських записів для навчання AI‑моделей, при цьому повинен поважати відмови пацієнтів. Завдяки цьому циклу згоди консорціум:

* Захоплює згоду у порталі лікарні.  
* Гарантує, що будь‑яка синтетична когорта виключає пацієнтів, які відкликали згоду.  
* Надає регуляторам звіт «одним кліком», що зв’язує кожен синтетичний запис із хешем згоди.

### 2. Банківське моделювання ризиків

Банки генерують синтетичні транзакції для стрес‑тестування. Використовуючи Formize, вони:

* Розділяють згоду «маркетинг» та «аналіз ризиків».  
* Автоматично блокують генерацію синтетичних даних для клієнтів, які дали згоду лише на маркетинг.  
* Скорочують юридичні ризики та пришвидшують цикл розробки моделей.

### 3. Розробка продукту в сфері споживчого SaaS

Компанія SaaS збирає телеметрію використання. За допомогою Formize вона:

* Пропонує гранульовану згоду для «експерименти функцій» vs. «реклама».  
* Динамічно коригує конвеєри синтетичних даних у відповідності до змін уподобань користувачів.  
* Публікує прозорий дашборд, що демонструє використання даних згідно з їхньою згодою.

---

## Кращі практики та типові помилки

| Краща практика | Чому це важливо |
|----------------|-----------------|
| **Версіюйте кожну зміну форми** | Забезпечує прив’язку старих записів згоди саме до тієї схеми, яка була використана під час їх створення. |
| **Не зберігайте сирі ПІБ у синтетичному наборі** | Синтетичні дані мають бути лише похідними; зберігання оригінальних ідентифікаторів руйнує конфіденційність. |
| **Хешуйте підписи згоди з сіллю** | Запобігає атакам типу rainbow‑table, залишаючись можливим верифікувати підпис. |
| **Впровадьте «граціозний період» після відкликання** | Дозволяє завершити вже запущені завдання перед повним припиненням генерації. |
| **Регулярно ротируйте ключі шифрування журналу** | Підвищує безпеку незмінного логу без порушення аудиту (використовуйте стратегії key‑rolling). |

**Типові помилки**

* **Жорстке кодування перевірок згоди** – Вбудовування логіки згоди безпосередньо у код моделі ускладнює оновлення. Централізуйте через API сервісу згоди.  
* **Ігнорування терміну дії згоди** – Ставте `expiresAt` як жорстку межу; плануйте автоматичні завдання відкликання.  
* **Збір зайвих даних згоди** – Запитуйте лише те, що необхідно для конкретної мети; надмірність підвищує ризик порушення принципу мінімізації GDPR.

---

## Перспективи розвитку

1. **AI‑асистоване формулювання згоди** – Використання LLM для пропозиції тексту згоди відповідно до юрисдикції, скорочуючи юридичну працю.  
2. **Федеративна згода між організаціями** – Використання **Decentralized Identifiers (DIDs)** та **Verifiable Credentials** для обміну статусом згоди без централізованого сховища.  
3. **Реальний час відкликання згоди через вебхуки** – Пуш‑повідомлення про відкликання безпосередньо оркестратору синтетичних даних для миттєвого зупинення.  
4. **Пояснювані синтетичні дані** – Додавання пояснень (наприклад, «згенеровано згідно з версією згоди v3, мета – дослідження») до кожного запису для підвищення інтерпретованості моделей.

---

## Висновок

Динамічна згода вже не «приємний бонус», а регуляторна вимога для будь‑якої організації, що перетворює персональні дані у синтетичні активи. Поєднуючи low‑code движок форм Formize з конвеєрами генеративного ШІ, підприємства можуть:

* Захоплювати згоду з необхідною гранулярністю.  
* Автоматично застосовувати її під час генерації даних.  
* Надавати аудиторам незмінний доказ відповідності.

Результат – надійна екосистема синтетичних даних, що прискорює інновації, одночасно захищаючи права індивідів.

---

## Дивіться також

- **Стаття GDPR, стаття 7 – Умови згоди**  
- **Блокчейн‑підкріплені журнали аудиту для управління даними** (IEEE Xplore)