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