sanitizer

Обезличивание PostgreSQL с сохранением связей и объёма. Исходный код

До
клиент 428
Михайлов Денис Олегович
solovev.e428@bk.ru · +79101871644
г. Омск, ул. Садовая, д. 69
Здравствуйте, я Михайлов Денис Олегович, свяжитесь со мной по телефону +79101871644
клиент 855
Богданова Ксения Николаевна
sokolov.o855@mail.ru · +79103738915
None
Здравствуйте, я Богданова Ксения Николаевна, свяжитесь со мной по телефону +79103738915
клиент 1282
Голубев Матвей Иванович
sidorov.m1282@gmail.com · +79105606186
г. Новосибирск, ул. Лесная, д. 83
Здравствуйте, я Голубев Матвей Иванович, свяжитесь со мной по телефону +79105606186
После
клиент 428
Глафира Антоновна Боброва
u44a0a0732f37aede@live.ru · +79290315326
Москва, ул. Кедрова, д. 16, кв. 36
Здравствуйте, я Глафира Антоновна Боброва, свяжитесь со мной по телефону +79290315326
клиент 855
Панфил Анисимович Капустин
u79eff9555db5d3c3@inbox.ru · +79064163819
None
Здравствуйте, я Панфил Анисимович Капустин, свяжитесь со мной по телефону +79064163819
клиент 1282
Аггей Эдуардович Фадеев
ub453111e996c1334@tula.ru · +79351909264
Казань, ул. Максимова, д. 37, кв. 21
Здравствуйте, я Аггей Эдуардович Фадеев, свяжитесь со мной по телефону +79351909264

В тексте обращения стоит тот же псевдоним, что и в таблице клиентов.

Проверки копии PASS

Ссылочная целостность ok
0 осиротевших строк
проверено FK-связей: 3
Объём строк ok
13000 из 13000
таблиц: 4
Сквозная консистентность ok
4848 связок сохранено
проверок: 2, расхождений: 0
Разнообразие ok
минимум 56% от исходного distinct-ratio
колонок: 9, порог: 30%
Остаточные ПДн ok
0 матчей в сэмплах
regex-детектор плюс словарь значений источника
обновлено в 23:28:44
Проверить у себя

Демо поднимается одной командой, копия собирается из источника с нуля.

git clone https://github.com/xrn6px6xyy-svg/db-sanitizer
cd db-sanitizer && make demo

В конце отчёт verify с вердиктом и ненулевым кодом возврата при провале. Готовые артефакты прогона лежат в demo/artifacts.

Как здесь используется модель

Модель работает один раз на схему, а не на каждую строку: размечает колонки по классам ПДн, выбирает стратегию замены и генерирует пулы правдоподобных значений. Результат сохраняется как план и пулы, дальше исполнение идёт чистыми функциями.

Поэтому прогон повторяем и не зависит от доступности модели, а сквозная консистентность не ломается. Обращение к модели на каждое значение отклонено осознанно: недетерминированно и дорого на больших объёмах.

Сырые ответы модели: demo/artifacts/llm_transcripts/