Files
drhider/History/2026-07-13-sonnet-response-obfuscation-bugs.md
T
2026-07-13 13:14:42 +04:00

38 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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), но не обязательно.