47 lines
2.1 KiB
Markdown
47 lines
2.1 KiB
Markdown
# Ответ Соннета 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}"
|
|
```
|