---
title: "Приватність і GDPR"
description: "Поверхні приватності Ring — гранулярна згода в записі користувача, 30-денний життєвий цикл видалення акаунта з вікном скасування та користувацький маршрут /privacy"
locale: "uk"
---
# Приватність і GDPR

> **Info**
> Використовуйте вкладки **Founder** / **Developer** у бічній панелі, щоб відфільтрувати цю сторінку. Учасники керують власними налаштуваннями на `/privacy`; ця стаття документує сервіси за цими поверхнями.

Ring дає кожному клону дві конкретні поверхні приватності з коробки: **гранулярне керування згодою** (зберігається в записі користувача) і **запланований життєвий цикл видалення акаунта** з 30-денним вікном і скасуванням. Обидва реалізовані в `features/auth/services/` — сторонній SDK згоди не потрібен.

| Previous | Ring equivalent |
|----------|-----------------|
| All-or-nothing tracking consent | Чотири перемикачі спільного використання даних + чотири контактні вподобання |
| Immediate, irreversible delete | 30-денне заплановане видалення з `canCancel` і життєвим циклом статусів |
| Consent scattered across vendors | Згода зберігається в записі `users` (`data_sharing_consent`) |

## Модель згоди (перевірено)

`PrivacyConsent` у `features/auth/types.ts`:

| Group | Fields |
|-------|--------|
| `dataSharingConsent` | `analytics` · `personalization` · `notifications` · `research` |
| `anonymizedResearchConsent` | один boolean |
| `contactPreferences` | `marketing` · `opportunities` · `system` · `evolution` |

`PrivacyConsentService` (`getUserConsent` / `updateUserConsent`) читає й пише ці поля проти власного запису користувача — зміна згоди учасником ніколи не залишає клон.

### For founders

## Чому це важливо для вашого клону

- **Клони під GDPR отримують фору.** Перемикачі згоди та запити на стирання вже в кодовій базі; поверх цього ви підключаєте локальний юридичний огляд.
- **Видалення гуманне, не миттєве.** Учасники запитують видалення з паролем і причиною; запис чекає 30 днів і може бути скасований — реальне вікно скасування.
- **Без vendor lock для приватності.** Згода живе у вашій базі, а не в сторонній панелі.

### Що перевірити перед go-live

1. Переконайтеся, що текст політики приватності відповідає чотирьом групам згоди, які ви вмикаєте.
2. Визначте вікно видалення (типово 30 днів, `scheduledDeletionDate = request + 30`).
3. Прогоніть один end-to-end тест видалення в staging: request → cancel → request again → confirm.

### For developers

## Сервісні поверхні (перевірено)

| Module | Role |
|--------|------|
| `features/auth/services/privacy-consent-service.ts` | GDPR-сумісне читання/оновлення згоди в записі `users` |
| `features/auth/services/account-deletion.ts` | Повний життєвий цикл видалення над колекцією `account_deletions` |

## Життєвий цикл видалення

**Запит**

`requestAccountDeletion({ userId, password, reason, userEmail, userName })` створює запис `account_deletions` зі `status: 'pending'`, `scheduledDeletionDate = now + 30 days` і `canCancel: true`. Повторний pending-запит повертає `DELETION_ALREADY_PENDING`.

**Скасування або підтвердження**

- `cancelAccountDeletion` — учасник скасовує pending-запит у межах вікна.
- `confirmAccountDeletion` — учасник підтверджує; починається обробка.
- `getAccountDeletionStatus` — прочитати поточний стан для UI.

**Обробка**

`processExpiredDeletions()` проходить прострочені заплановані видалення через `pending → processing → completed`. Статуси: `pending | cancelled | processing | completed | failed` (невдачі несуть `failureReason`).

## Часті запитання

### Вплив

#### Чи впливають зміни згоди на наявні сповіщення?

Згода живе в записі користувача; доставка сповіщень враховує збережене вподобання `dataSharingConsent.notifications` у момент читання.

#### Чи є поверхня експорту даних?

Окремого endpoint експорту сьогодні немає — реалізовані GDPR-поверхні це видалення і згода. Позначте це команді Ringdom, якщо експорт стане вимогою вашої юрисдикції.

### Ops

#### Чи можна змінити 30-денне вікно?

Вікно задається в `requestAccountDeletion` (`+30` днів). Власники клонів, яким потрібне інше вікно, мають змінити його в сервісі й зафіксувати зміну в compliance-документах.

## Повʼязана документація

  
- [features/authentication](/docs/features/authentication.md) — Same-workflow: згода і видалення обидва працюють з записом користувача Auth.js.

  
- [architecture/security](/docs/architecture/security.md) — See-also: шари defense-in-depth, що захищають поверхні приватності.

  
- [features/admin](/docs/features/admin.md) — Next-step: де оператори переглядають записи користувачів і стани видалення.
