From 84ae7439f5a129258e1d3b3843b35328f8b028c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sun, 12 Jul 2026 09:15:13 +0400 Subject: [PATCH] =?UTF-8?q?History:=20v3.0.0=20=D0=B7=D0=B0=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D1=88=D1=91=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- History/2026-07-12-v3-done.md | 45 +++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 History/2026-07-12-v3-done.md diff --git a/History/2026-07-12-v3-done.md b/History/2026-07-12-v3-done.md new file mode 100644 index 0000000..ae41473 --- /dev/null +++ b/History/2026-07-12-v3-done.md @@ -0,0 +1,45 @@ +# v3.0.0 — универсальная архитектура (2026-07-12) + +Переход на Markdown-пайплайн + универсальное LLM-обнаружение. + +## Что изменилось + +### 1. `generators/fallback.py` — новый +Character-class preserving замена для неизвестных типов сущностей. +Цифры→цифры, буквы→буквы, спецсимволы→без изменений. + +### 2. `scanner.py` — универсальный LLM-промпт +- Убран жёсткий список типов (person, company, address, passport) +- LLM САМА придумывает тип (snake_case) — person_name, contract_number, employee_id... +- Если тип не совпадает с известными — fallback-генератор +- Промпт на английском (LLM точнее) + +### 3. `extractor.py` — Markdown-пайплайн +- `docx_to_markdown()`: DOCX → MD (Heading → #, Bold → **, таблицы → |...|) +- `pdf_to_markdown()`: PDF → MD (текст + таблицы, без форматирования) +- `extract_text()` возвращает только str (без docx-объектов) +- Удалён `convert_pdfs_to_docx()` (PDF → MD напрямую) + +### 4. `replacer.py` — упрощён +- Удалён `replace_in_text()` (заменён на `apply_replacements()` + `.encode()`) +- Оставлен `replace_in_docx()` для будущего DOCX-выхода + +### 5. `obfuscator.py` — новый пайплайн +- Pass 1: extract MD → scan_regex + scan_llm_ner +- Pass 2: apply_replacements к MD → .md файлы +- Нет docx-объектов, нет convert_pdfs_to_docx + +## Коммиты + +- `579f9c8` — generators: fallback.py +- `2ceeb05` — scanner.py: универсальный промпт +- `af2f2a9` — extractor.py: MD + obfuscator.py: новый пайплайн +- `f5427b0` — replacer.py: удалён replace_in_text +- `2a2cc14` — v3.0.0 + +## Плюсы + +- LLM точнее (нет XML-шума, только Markdown) +- Новые типы сущностей — без правки кода +- Код проще: -120 строк, -1 функция, -1 модуль (convert_pdfs_to_docx) +- Единый внутренний формат (Markdown)