52 lines
2.2 KiB
Markdown
52 lines
2.2 KiB
Markdown
# План 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
|