2.1 KiB
2.1 KiB
Ответ Соннета 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хранитcountersdictconfig.py: убрать словари имён/городов (RU_SURNAMES, ...)
Новая логика замены
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}"