# Политика сроков хранения персональных данных

**Оператор:** Индивидуальный предприниматель Аведикян Карен Самвелович
**Домен:** [remcard.ru](https://remcard.ru)
**Редакция:** 1.0 от 24 апреля 2026 года
**Основание:** Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных» (ст. 5 ч. 7, ст. 21), Федеральный закон от 06.12.2011 № 402-ФЗ «О бухгалтерском учёте» (ст. 29).

---

## 1. Общие принципы

Оператор обрабатывает персональные данные (далее — ПДн) только в течение срока, необходимого для достижения заявленных целей обработки. По истечении срока хранения данные подлежат уничтожению либо обезличиванию в автоматическом режиме средствами планировщика задач (`/api/cron/daily-retention`, запускается ежесуточно в 04:00 UTC).

Политика учитывает требование ст. 5 ч. 7 ФЗ-152: срок хранения ПДн не должен превышать цели обработки, если более длительный срок не установлен федеральным законом или договором.

## 2. Таблица сроков хранения

| Категория данных | Модель / таблица | Основание обработки | Срок хранения | Действие по истечении |
|---|---|---|---|---|
| Учётная запись клиента | `User` с `role=CLIENT` | согласие, договор-оферта | До отзыва согласия или запроса удаления | Анонимизация, `User.deletedAt` заполняется, идентификаторы OAuth обнуляются |
| Учётная запись партнёра | `User` с `role=PRO` | договор, ст. 6 ч. 1 п. 5 ФЗ-152 | 5 лет после последней активности | Анонимизация; бухгалтерские записи сохраняются 5 лет (ст. 29 № 402-ФЗ) |
| Привязки OAuth-провайдеров | `AuthAccount` | обеспечение входа | Синхронно с `User` | Удаление при удалении `User` |
| Журнал согласий | `Consent` | юридическое доказательство (ст. 9 ч. 4) | Бессрочно в части факта выдачи/отзыва; IP и User-Agent обезличиваются через 365 дней | Обезличивание персональных идентификаторов, запись о согласии сохраняется |
| Журнал действий | `AuditLog` | ст. 18.1 ч. 1 п. 5 | 3 года; `ipAddress`/`userAgent` обнуляются через 365 дней | `ipAddress=null, userAgent=null` через год; запись удаляется через 3 года |
| Обращение в Консьерж-чат | `ConciergeRequest` | согласие | 180 дней после закрытия запроса | Обнуление `comment`, базовая запись архивируется |
| Лид партнёру | `Lead` | договор между клиентом и партнёром | 180 дней после закрытия | Обнуление свободных текстовых полей |
| Проект ремонта | `Project` | согласие, договор | До удаления клиентом или закрытия проекта + 90 дней | Обезличивание при удалении клиента; `address` обнуляется |
| Заказ | `ClientOrder` | договор | 5 лет (ст. 29 № 402-ФЗ) | Обезличивание `address`, `comment`; базовая запись (сумма, дата, партнёр) сохраняется 5 лет |
| Сертификат | `Certificate` | договор | До истечения + 1 год | Удаление |
| In-app уведомление | `ClientNotification` | эксплуатационное | Непрочитанные — до прочтения; прочитанные — 180 дней | `deleteMany` в суточном cron |
| Заявка в команду | `TeamApplication` | согласие, рекрутинг | `NEW/CONTACTED` — 365 дней; `ACCEPTED` — 180 дней после найма; `REJECTED` — 90 дней | Удаление целиком в суточном cron |
| Инвайт сотрудника | `StaffInvite` | организационное | `EXPIRED/REVOKED` — 30 дней; `ACCEPTED` — до удаления связи | Удаление в cron `invites-expire` и `daily-retention` |
| Одноразовый код для OAuth-бота | `BotLoginCode` | аутентификация | 90 дней либо до использования | Удаление в суточном cron |
| Сырой просмотр страницы | `PageView` | веб-аналитика при активном cookie-consent | 365 дней | Удаление в суточном cron; `ipAddress` хранится обезличенно (`/24` для IPv4, `/64` для IPv6) с момента записи |
| Экспорт данных субъекта | файл ZIP | ст. 14 ФЗ-152 | Не сохраняется на сервере; выдаётся streaming-ответом | — |
| Запрос на удаление | запись `AuditLog` с action `USER_DATA_DELETED` | ст. 21 ФЗ-152 | 3 года как часть `AuditLog` | Обезличивание через 365 дней, удаление через 3 года |

## 3. Автоматическое исполнение сроков

Сроки хранения принудительно применяются ежесуточной cron-задачей `/api/cron/daily-retention`, реализованной в `src/app/api/cron/daily-retention/route.ts`. Задача защищена заголовком `Authorization: Bearer <CRON_SECRET>`, результат каждого запуска фиксируется в `AuditLog` с action `RETENTION_CRON_RAN` и полем `meta.results`, содержащим счётчики удалённых/обезличенных записей по каждой категории.

Cron-задача `/api/cron/invites-expire` (тот же планировщик, иной час) обрабатывает просроченные `StaffInvite`.

## 4. Ручная процедура удаления

Субъект ПДн может инициировать ранее наступление срока уничтожения своих данных:

1. Через личный кабинет — страница [/account/privacy](https://remcard.ru/account/privacy), блок «Удалить аккаунт».
2. Через письменный запрос Оператору.

В обоих случаях применяется процедура `anonymizeAndDeleteUser` (модуль `src/lib/user-deletion.ts`), описанная в Политике защиты данных.

## 5. Связь с резервными копиями

Удаление или обезличивание ПДн в production-базе **не распространяется на резервные копии**. Данные в резервных копиях сохраняются до естественного истечения срока ретенции копий (см. `BACKUP_POLICY.md`):

- PITR — 7 дней;
- именованные снапшоты — 14 дней;
- версии объектов в Object Storage — 30 дней.

После истечения указанных сроков сведения о субъекте считаются уничтоженными во всех средах обработки.

## 6. Пересмотр

Политика пересматривается не реже одного раза в год либо при:

- появлении новых категорий ПДн;
- изменении бизнес-процессов, влияющих на сроки хранения;
- изменении законодательства.

---

**Утверждено:** ИП Аведикян К.С., 24 апреля 2026 года.

