ADR-0001 · Спорная зона: что передаётся по клиентам с полисами обоих направлений#
Статус: принят · 2026-09-18
Метод: D-07 v1.0 · шаблон ADR v1.2
Участники: команда (9 человек), юрист, владелец направления
Учебная запись: часть узкого прогона U-01, система вымышлена. Форма и рассуждение настоящие.
Контекст#
Вход — 00-context.md. Этот ADR не планировался.
Договор говорит: покупатель обслуживает клиентов проданного направления. У 1,1 млн клиентов полисы обоих направлений, и они клиенты обоих. Договор этого случая не разрешает — он его не предвидел. Значит линию надо выбрать, а выбор линии данных — это D-07, а не D-08.
Область решения — одна связная группа: профили и обращения 1,1 млн спорных клиентов.
Реестр копий#
| Куда | Как попадает | Доходит ли изменение | Можно ли удалить |
|---|---|---|---|
| Основная база профилей | Запись | — | Да |
| История обращений, вложения в объектном хранилище | Запись | — | Да |
| Выгрузка перестраховщику, ежемесячно за 5 лет | Регулярная передача наружу | Нет | Нет — уехало [режим] |
| Вебхуки 22 партнёрам | Событие полиса | Нет | Нет — доставлено |
| Витрина отчётности | Ночная выгрузка | Односторонне | Да |
| Резервные копии | Еженедельно, 60 суток | Нет | Нет, пока не истекут |
| Система покупателя — после передачи | Передача по договору | Нет: мы не управляем приёмником | Нет [режим] |
Седьмая строка — новая для набора. Во всех прежних применениях D-07 последняя копия была нашей. Здесь появляется копия, о которой нельзя даже узнать, дошло ли до неё изменение.
Дисквалификаторы#
| Условие | Что вышло |
|---|---|
| Разделение размазывает защищаемые данные по нескольким владельцам | Сработал и неустраним. После передачи ПДн 1,1 млн человек держат две организации. D-07 велит линию двигать, а не оплачивать — двигать её здесь можно только в сторону минимума передаваемого |
| Есть копия, из которой нельзя удалить | Сработал трижды: выгрузка перестраховщику, доставленные вебхуки, система покупателя. Решать надо до передачи — после будет нечего решать |
| Двойная запись без единого источника порядка | Не сработал: до даты пишем только мы, после — только покупатель |
| Атомарность поперёк линии | Не сработал: профиль и обращения читаются вместе, но атомарности между ними инвариант не требует |
| Отказ остаётся общим | Неприменимо: приёмник не наш, общего отказа не бывает по построению |
Рассмотренные варианты#
| Ось | Что записывать | Передать профиль целиком | Передать минимум по полису | Не передавать спорных |
|---|---|---|---|---|
| Режим защиты | Сколько мест держат ПДн и какой объём | 2 места, весь профиль и вся история [режим] |
2 места, но только привязанное к проданным полисам [режим] |
1 место — но покупатель не может обслуживать |
| Отношения в данных | Что рвётся | Ничего | 1,2 млн обращений без привязки остаются у нас [схема] |
Полис без держателя — нерабочее состояние |
| Управление изменениями | Кто задевается при изменении схемы | Мы и покупатель | Мы и покупатель | Мы |
| Число копий | Мест синхронизировать | 7 | 7 | 6 |
| Исполнимость договора | Может ли покупатель обслуживать | Да | Да | Нет — договор не исполнен |
| Что уезжает лишнего | Данные о нашем оставшемся бизнесе | Уезжают: обращения по нашим полисам внутри общей истории | Не уезжают | — |
Нулевой вариант «не передавать спорных» отсекается договором, а не осями — покупатель обязан обслуживать проданные полисы, а полис без держателя не обслуживается.
Решение#
Передаётся минимум, привязанный к проданным полисам.
| Что | Передаётся | Остаётся у нас |
|---|---|---|
| Профиль спорного клиента | Копия: идентификатор, ФИО, контакты, согласия | Оригинал |
| Полисы | Проданные | Наши |
| Обращения | Привязанные к проданным полисам | Привязанные к нашим |
| Обращения без привязки к полису — 1,2 млн | Не передаются | Остаются |
Правило для остатка названо явно: обращение, принадлежность которого к полису не установлена, не передаётся. Причина не в осторожности, а в том, что в нём с равной вероятностью данные о нашем оставшемся бизнесе, и передавать их покупателю нет ни основания, ни права.
Обоснование#
Решил дисквалификатор о защищаемых данных, и решил единственным доступным способом. Линию нельзя было сдвинуть так, чтобы ПДн остались у одного владельца: покупатель обязан обслуживать людей, значит обязан знать, кто они. Дисквалификатор в такой ситуации не отменяет линию, а задаёт направление — минимизировать передаваемое, а не оптимизировать удобство приёмника.
Спорным оказался не клиент, а обращение. Как только единицей передачи стал полис, а не клиент, 1,1 млн спорных клиентов перестали быть спорными: спорными остались 1,2 млн обращений без привязки. Задача сузилась в двенадцать раз, и её удалось закрыть правилом, а не переговорами.
Последствия#
Отрицательные:
- Покупатель получает неполную историю по 18 % своих клиентов, и узнает об этом в первом же обращении. Это должно попасть в приложение к договору, иначе станет спором через месяц после даты.
- 1,2 млн обращений остаются непривязанными и у нас — задача, которую передача не решает, а обнажает.
- ПДн 1,1 млн человек оказываются у двух организаций. Дисквалификатор сработал и не снят: он назвал направление, а не отменил проблему.
- Мы не узнаем, дошло ли до приёмника удаление. Если клиент потребует стереть данные после даты, мы можем передать требование, но не проверить исполнение.
Положительные: передаваемый объём сокращён до привязанного к предмету договора; правило для остатка записано и проверяемо; седьмая строка реестра копий названа, а не обнаружена потом.
Замечание к методу: У6 — промах, и объявлять данностью нельзя#
Предсказание У6 утверждало: кроме D-08 и D-09 применять ничего не придётся. Пришлось применить D-07.
Соблазн был записать спорную зону как [договор] — вход, который читают, а не выбирают. Анти-подгонка записана в том же файле заранее: «если по ходу придётся выбрать то, что предполагалось прочитать в готовом виде, это промах, а не уточнение области». Договор спорной зоны не разрешает; выбор был наш.
Узкий прогон не остался узким, и это результат, а не сбой. Он говорит о границе между D-07 и D-08 ровно то, что оба документа утверждают в шапках: первый решает, делить ли и по какой линии, второй — как перебраться. Пока линия не проведена целиком, второй неприменим. В шапке D-08 это записано; в планировании прогона — не учтено.
Условия пересмотра#
- Договор дополнен приложением, разрешающим спорную зону иначе.
- Обращения без привязки к полису получили привязку — тогда правило для остатка больше не нужно.
- Покупатель потребовал полную историю — вопрос уходит к юристам, а не к архитектуре.
- Появилось требование стирания от спорного клиента — проверить, что путь требования доходит до приёмника.
Самая дорогая будущая граница#
Граница между «нашим» и «переданным» внутри профиля одного человека. Она проведена по признаку привязки к полису. Всякое будущее изменение состава профиля — новое поле, новое согласие, новый тип обращения — придётся класть по одну или другую сторону этой границы, и делать это будет уже не архитектор, а тот, кто добавляет поле.
Связанные ADR#
Зависимые: ADR-0002 — переход и его обратимость.