---
title: "Приватность и GDPR"
description: "Поверхности приватности Ring — гранулярное согласие в записи пользователя, 30-дневный жизненный цикл удаления аккаунта с окном отмены и пользовательский маршрут /privacy"
locale: "ru"
---
# Приватность и 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: где операторы просматривают записи пользователей и состояния удаления.
