From 23b4ad98895125801c441487abc351e9c923bcb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Mon, 13 Jul 2026 13:14:42 +0400 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=BE=D1=82=D0=B2=D0=B5=D1=82=20Sonnet?= =?UTF-8?q?=20=E2=80=94=20=D1=84=D0=B8=D0=BA=D1=81=20Markdown-=D0=B6=D0=B8?= =?UTF-8?q?=D1=80=D0=BD=D0=BE=D1=81=D1=82=D0=B8=20=D0=B8=20\xa0=20=D0=B2?= =?UTF-8?q?=20PERSON=5FPATTERN?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...-07-13-sonnet-response-obfuscation-bugs.md | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 History/2026-07-13-sonnet-response-obfuscation-bugs.md diff --git a/History/2026-07-13-sonnet-response-obfuscation-bugs.md b/History/2026-07-13-sonnet-response-obfuscation-bugs.md new file mode 100644 index 0000000..da69b5a --- /dev/null +++ b/History/2026-07-13-sonnet-response-obfuscation-bugs.md @@ -0,0 +1,37 @@ +# Sonnet: анализ багов обфускации — fix + +**Дата:** 2026-07-13 + +--- + +## Баг 1: `ООО "НУБЕС"` не заменено + +**Причина:** DOCX → Markdown: `**ООО **"**НУБЕС**"`. Кавычка в отдельном run → `**` разрывает строку. Replacer ищет точное совпадение `ООО "НУБЕС"` — не находит. + +**Фикс (replacer.py):** добавить `_md_tolerant_pattern()` — паттерн, допускающий `**` между частями строки. При промахе точного совпадения — фоллбэк с этим паттерном. + +```python +def _md_tolerant_pattern(original: str) -> str: + MD = r'(?:\*{1,2})?' + parts = re.findall(r'[А-ЯЁа-яёA-Za-z0-9]+|[^А-ЯЁа-яёA-Za-z0-9]', original) + return MD + MD.join(re.escape(p) for p in parts) + MD +``` + +## Баг 2: `Новиков И.В.` → `ФИО` + +**Причина:** В оригинале буквально `ФИО` — незаполненный шаблон. Не баг паттерна. + +**Превентивный фикс (config.py):** `\s+` → `[\s\xa0]+` в PERSON_PATTERN — на случай неразрывных пробелов в DOCX. + +```python +PERSON_PATTERN = re.compile( + r'\b[А-Я][а-я]+[\s\xa0]+[А-Я]\.[А-Я]\.' + r'|\b[А-Я][а-я]+[\s\xa0]+[А-Я][а-я]+[\s\xa0]+[А-Я][а-я]+', +) +``` + +## Моё мнение + +**Баг 1 — делать.** Логично, минимально, решает проблему Markdown-жирности. + +**Баг 2 — `\xa0` делать** (превентивно). Сам `ФИО` — не баг, документ содержит незаполненный шаблон. Можно добавить `ФИО` в список игнорируемых (исключить из mapping), но не обязательно.