docs: ответ Sonnet — TMP-файлы от старого кода, _next_token() чист
Deploy drhider / validate (push) Waiting to run
Deploy drhider / validate (push) Waiting to run
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
# Sonnet: анализ обфускации — TMP-файлы vs текущий код
|
||||
|
||||
**Дата:** 2026-07-13
|
||||
|
||||
---
|
||||
|
||||
## Главный вывод
|
||||
|
||||
**TMP-файлы созданы СТАРОЙ версией кода.** Они не были сгенерированы текущим `_next_token()`-кодом. Это не баг в текущем коде — это артефакт предыдущей реализации.
|
||||
|
||||
---
|
||||
|
||||
## Доказательства
|
||||
|
||||
### 1. Имена файлов — старый формат
|
||||
|
||||
Текущий `obfuscator.py` генерирует имена вида `договор-НУБЕС001-03700.md` (меняет расширение). TMP-файлы: `договор-XXX001-03700_obfuscated.md` — суффикс `_obfuscated` и `XXX`-маскировка в имени. Текущий код так не делает.
|
||||
|
||||
### 2. Тип `text` — fallback из builder.py, не из сканера
|
||||
|
||||
`build_mapping_csv()` определяет тип постфактум по паттернам. Если ни один не совпал → `"text"`. Типа `text` нет в `TYPE_POOLS` scanner.py. Значит строки вида:
|
||||
```
|
||||
text,Исполнителем Заказчику Сторонами,Кузнецов О.В.
|
||||
```
|
||||
попали из старого кода, который не фильтровал роли (Исполнитель, Заказчик) — текущий LLM-промпт их явно исключает.
|
||||
|
||||
### 3. Одна сущность → разные замены
|
||||
|
||||
```
|
||||
email,info@nubes.ru,ypiorej@company.local ← файл 1
|
||||
email,info@nubes.ru,qifdckke@org.example.ru ← файл 2
|
||||
```
|
||||
|
||||
Текущий `TwoPassObfuscator` гарантирует глобальную согласованность. Старый код обрабатывал файлы по одному — отсюда расхождения.
|
||||
|
||||
### 4. Реалистичные замены невозможны из `_next_token()`
|
||||
|
||||
```python
|
||||
TYPE_POOLS = {
|
||||
"phone": (["+7_000_000"], "phone"), # → "+7_000_000_0001"
|
||||
"email": (["email"], "email"), # → "email_0001"
|
||||
}
|
||||
```
|
||||
|
||||
`+7 (495) 906-87-80` или `ypiorej@company.local` физически не могут выйти из этих пулов.
|
||||
|
||||
---
|
||||
|
||||
## Ответ на главный вопрос
|
||||
|
||||
> Кто и где генерирует замены в обход `_next_token()`?
|
||||
|
||||
**Никто в текущем коде.** Это артефакты старого кода (версии до v3). Текущий `_next_token()` написан позже.
|
||||
|
||||
---
|
||||
|
||||
## Что реально нужно проверить
|
||||
|
||||
| Вопрос | Как проверить |
|
||||
|--------|---------------|
|
||||
| Работает ли текущий код? | Прогнать оригиналы через v0.0.12, посмотреть mapping.csv |
|
||||
| Regex ловит все сущности? | Проверить `config.py` паттерны на примерах из TMP |
|
||||
| Адрес `115404, г. Москва...` — почему не заменён? | `ENTITY_PATTERNS` не содержит тип `address` |
|
||||
| `ООО "НУБЕС"` в тексте не заменён? | Возможно кавычки — regex матчит `«»` но не `""` |
|
||||
|
||||
---
|
||||
|
||||
## Итог
|
||||
|
||||
**Ложное противоречие** — сравнивались TMP-файлы (старый код) с текущим scanner.py. Нужно прогнать текущий код на тех же документах и посмотреть результат.
|
||||
Reference in New Issue
Block a user