# Ответ Соннета v3 — нумерация вместо генерации фейков (2026-07-12) ## Q1. Нумерация vs фейки - ✅ Адреса без абракадабры, код проще, аудит прозрачнее - ❌ Документ нечитаем (`Лицо_0042 заключил договор с Компания_0003`) - Вывод: для аудита/хранения — отлично, для показа людям — фейки лучше ## Q2. Глобальный счётчик на весь пакет Одна сущность в разных документах → один номер. `TwoPassObfuscator` хранит counters. ## Q3. Сохранять формат? Рекомендация: `Тип_NNNN` — проще всего, аудит максимально прозрачен. ## Q4. mapping.csv — главный документ аудита Да, это улучшение. mapping.csv — секретный ключ деобфускации. ## Q5. Номера vs UUID Номера (`Лицо_0042`) — лучше для читаемости и аудита. --- ## План изменений ### Удалить - `drhider/generators/` — все 12 файлов - `drhider/checksum.py` — больше не нужен (ИНН без контрольных сумм) - `drhider/random_utils.py` — больше не нужен ### Изменить - `scanner.py`: добавить `TYPE_PREFIXES` + `_next_token()`, убрать импорты генераторов - `obfuscator.py`: `TwoPassObfuscator` хранит `counters` dict - `config.py`: убрать словари имён/городов (RU_SURNAMES, ...) ### Новая логика замены ```python TYPE_PREFIXES = { "person_name": "Лицо", "company": "Компания", "phone": "Телефон", "email": "Email", "address": "Адрес", "inn": "ИНН", ... } _FALLBACK = "Данные" def _next_token(entity_type, counters): prefix = TYPE_PREFIXES.get(entity_type, _FALLBACK) counters[prefix] = counters.get(prefix, 0) + 1 return f"{prefix}_{counters[prefix]:04d}" ```