Files
contracts-flask/History/opus-drhider-code-review-2026-06-29.md
T
naeel 6c00ce3cb4
Deploy contracts-flask / validate (push) Successful in 0s
docs: Opus code review request for DrHider
2026-06-29 15:17:16 +04:00

2.1 KiB

Opus — ревью кода DrHider v0.1

29.06.2026

Файлы для ревью

Все в contracts-flask:

  • deploy/services/drhider.py — ядро обфускации
  • site/app.py — роуты /DrHider + /api/drhider
  • site/templates/drhider.html — фронтенд

Что делает

Загрузка .docx/.pdf/.doc/.zip → обфускация чувствительных данных → ZIP с обезличенными файлами + mapping.csv. Без БД, всё в памяти.

Ключевые моменты для проверки

  1. _expand_zips: распаковка вложенных ZIP, cp437→utf-8, path traversal, лимиты 500 файлов/500MB
  2. _scan_regex: regex-паттерны для телефонов/email/ИНН/ОГРН/компаний. Не ловит ли лишнего? (например passport-паттерн матчит числа)
  3. _apply_replacements: замена по сортированным ключам. Не заменит ли подстроку внутри другого слова?
  4. _replace_in_docx: замена в paragraphs.runs и tables. Что если слово разбито на несколько runs?
  5. _replace_in_text: PDF отдаётся как plain text — теряется форматирование. Нормально для MVP?
  6. Генераторы фиктивных данных: валидные контрольные суммы ИНН/ОГРН, словари ФИО/городов
  7. Обработка ошибок: try/except в _expand_zips, _scan_llm_ner. Не глотаются ли ошибки молча?
  8. Безопасность: удаление tempdir в finally, очистка _mapping, нет логов с реальными данными
  9. Потенциальные баги: использовал переменную inner_name вместо name (уже исправлено). Есть ли ещё такие?

Код

# deploy/services/drhider.py (полностью)