Files
drhider/History/2026-07-12-sonnet-response.md
2026-07-12 09:09:54 +04:00

3.3 KiB

Ответ Соннета — универсальная архитектура DrHider (2026-07-12)

Кратко: 6 вопросов → 6 ответов → карта изменений.


Q1. Как сделать обнаружение универсальным?

Промпт должен звучать не «найди вот эти типы», а «найди ВСЁ, что выглядит как приватная информация, и сам назови тип».

Затрагивает: scanner.py (промпт), builder.py (тип для mapping.csv).


Q2. Regex или LLM?

Гибрид — правильный выбор:

  • Regex = pre-pass для структурированных данных (телефон, email, ИНН, БИК). Экономит токены LLM.
  • LLM = post-pass для неструктурированного (имена, адреса, нестандартные ID).
  • Дублирования не страшны — mapping dict сам отсеет.

Q3. Генерация фиктивных значений — универсальная?

Два уровня:

  1. Известные типы — специализированные генераторы (оставить как есть).
  2. Неизвестные типы — fallback-генератор: character-class preserving замена (цифры→цифры, буквы→буквы той же длины).

Дополнительно: в промпт добавить "category": "person|org|contact|id|financial|other" — 6 категорий вместо 10+ типов.


Q4. Двухпроходная или однопроходная?

Двухпроходная — обязательно. Причина: «Иванов» в 5 документах должен заменяться одинаково. Однопроход не может этого гарантировать.

Текущий TwoPassObfuscator — правильный, не трогать.


Q5. Новый промпт

You are a PII detector. Find ALL sensitive or private information.

Return JSON array: [{"type": "short_label", "value": "exact_string"}]

Rules:
- Copy "value" VERBATIM from text
- "type" is snake_case label you invent
- Same value → include once
- Return ONLY JSON

Ключевое: нет ограничения на типы, value verbatim.


Q6. DOCX или Markdown?

  • Внутренняя обработка: Markdown проще парсить, LLM понимает лучше.
  • На выходе: опция output_format: "docx" | "md". По умолчанию "docx".

Итоговая карта изменений

scanner.py     — новый промпт (убрать список типов, LLM сама называет типы)
generators/    — добавить fallback-генератор для неизвестных типов
obfuscator.py  — вызывать fallback если тип неизвестен
api_bp.py      — принять параметр output_format
replacer.py    — добавить replace_to_markdown()
builder.py     — упаковывать .md если output_format=md

Не трогать: двухпроходная схема, checksum-генераторы, ZIP-безопасность.