generators: fallback.py — character-class preserving для неизвестных типов
Deploy drhider / validate (push) Waiting to run

This commit is contained in:
2026-07-12 09:09:54 +04:00
parent d607d7d306
commit 579f9c8334
5 changed files with 273 additions and 0 deletions
+51
View File
@@ -0,0 +1,51 @@
# План v3 — универсальная архитектура (2026-07-12)
## Цель
Убрать жёсткую привязку к фиксированному списку типов сущностей.
Перейти на Markdown как внутренний формат.
## Изменения по модулям
### 1. `scanner.py` — универсальный LLM-промпт
- Убрать список типов из промпта
- LLM сама называет типы (snake_case)
- `value` — verbatim из текста
### 2. `generators/` — fallback-генератор
- Новый `fallback.py`: character-class preserving замена
- `__init__.py`: добавить в ENTITY_GENERATORS
- `obfuscator.py`: использовать fallback для неизвестных типов
### 3. `extractor.py` — единый MD-пайплайн
- DOCX → MD (python-docx: стили, форматирование)
- PDF → MD (pdfplumber: текст + таблицы)
- TXT → как есть
- Убрать convert_pdfs_to_docx (не нужен)
- Убрать хранение docx-объектов
### 4. `replacer.py` — упростить
- `apply_replacements(text)` — уже есть
- `replace_in_docx(doc, mapping)` — сохранить как утилиту для DOCX-выхода
- Удалить `replace_in_text()` (заменяется на apply_replacements)
### 5. `obfuscator.py` — обновить пайплайн
- Pass 1: extract MD → scan_regex + scan_llm_ner
- Pass 2: apply_replacements к MD
- Опционально: replace_in_docx к оригинальному DOCX
### 6. `api_bp.py` — output_format
- Параметр `output_format: "md" | "docx"` (по умолчанию md)
### 7. `.doc` — потом
- Добавим convert_doc_to_docx через LibreOffice отдельно
## Порядок реализации
1. `generators/fallback.py` + обновить `__init__.py`
2. `scanner.py` — новый промпт
3. `extractor.py` — MD-конвертация
4. `replacer.py` — упростить
5. `obfuscator.py` — новый пайплайн
6. `api_bp.py` — output_format
7. Проверить всё → commit