docs: записка о переносе оверлея в 1.6.0 (ours-1.6)

This commit is contained in:
2026-10-05 18:16:44 +03:00
parent 1cc9043d70
commit 9cee071f9f
+62
View File
@@ -0,0 +1,62 @@
# ours-1.6 — наш оверлей поверх апстрима 1.6.0
Ветка `ours-1.6` = тег **v1.6.0** (`cdb1063`, released 1.6.0 lineage) + наш патч,
ранее живший в 1.5.1 (`/opt/data/autocad-mcp-build/patch/`, прод-контейнер `:30015`).
Перенос сделан **трёхсторонним слиянием с ветвью `ours-1.5`** (v1.5.1 + оверлей),
а не копированием файлов: 30 конфликтов разрешены по смыслу. Копирование файлов
оверлея 1.5.1 поверх 1.6.0 затирало бы новые модули 1.6.0 — этот путь исключён.
Дельта к 1.5.1: 10 изменённых + 2 новых файла, +3207 / −152 строк.
## Что перенесено (наше)
| Область | Что именно |
|---|---|
| Инструменты | `titleblock_apply_gost_form3`, `file_put`, `file_get`, `drawing_open_base64`, `drawing_save_base64`, `entity_create_attdef`, `block_get_attdefs`, `textstyle_ensure`, `text_apply_style`, `text_style_report`, `dimstyle_ensure`, `layout_set_paper` |
| Параметр `layout` | адресация в пространство листа — 36 инструментов, включая геометрию (`entity_create_line/polyline/circle/arc`), `block_insert`, `block_create_from_entities`, `dimension_*`; в COM — `_activate_layout()` |
| `inline_font` | ГОСТ-шрифт ISOCPEUR прямо в MTEXT/таблицы — 5 инструментов |
| ГОСТ-стиль | стиль по умолчанию `GOST_A` при `drawing_new` / `drawing_open` |
| Атрибуты | ATTDEF → ATTRIB: `block_insert` вставляет **именованный** блок (не `*U`), `block_set_attributes` достраивает отсутствующие ATTRIB из определений |
| Отчётность | `filled` / `unknown_tags` / `created_tags`, штамп стиля на ATTRIB |
| PDF | `page_size` (`layout` — страница равна формату листа 1:1, `extents` — по содержимому), настоящий текстовый слой (`pdf.fonttype=42`), текст через видовые экраны, предупреждения о мелких надписях |
| Новые файлы | `engineering/gost_titleblock.py` (ГОСТ Р 21.1101-2013, форма 3), `_fonts/isocpeur.ttf` |
## Что уступили апстриму (дубли удалены)
- `drawing_export_pdf`: рамка листа считается `_paper_frame()` из 1.6.0 (масштаб,
plot area, поворот, поля) вместо нашего `_layout_paper_mm()`; наш текстовый слой
и `page_size` наложены сверху.
- Размерные стили: `_current_dimstyle_name()` из 1.6.0; наш `_current_dimstyle()`
оставлен — им пользуется отчёт о стилях.
- Таблицы (ezdxf и COM): объединённая строка-заголовок, «span», масштабируемый
отступ ячеек и `SetCellTextHeight()` из 1.6.0 + наши `inline_font` / style.
- `block_insert`: структура вставки и многострочные ATTRIB из 1.6.0 + наша отчётность.
- Экспорт DWG/xref/image_attach/профили и группы `arch` (12), `pid` (9), `mech` (6),
`sheet`, `understand` — сохранены целиком, 1.6.0 ничего не потерял.
## Три структурные правки после слияния
Найдены pyflakes и аудитом дерева (git сшил код механически):
1. `com_backend`: наша подпись `drawing_export_pdf` попала в тело `xref_attach` и
дублировала метод — вставка убрана, `text_layer`/`page_size` перенесены в
настоящую COM-функцию;
2. `_space_name` в ezdxf-бэкенде был занят дважды — наш переименован в
`_reply_space_name` (иначе затенял хелпер апстрима);
3. `entity_create_text`: ключ `"style"` в `dxfattribs` стоял дважды — оставлен наш
(разрешённый `resolved_style`).
Итого pyflakes: 8 предупреждений — столько же, сколько в чистом 1.6.0, новых нет.
## Проверка
Образ `autocad-mcp:1.6.0-ours`, контейнер `autocad-mcp-160ours`, порт **30041**
(`:30015` — прод, `:30040` — чистый апстрим 1.6.0; оба не тронуты).
- `tools_inventory.py 30041` → **254** инструмента (апстрим даёт 242), все наши
доработки на месте, `layout` у 36, `inline_font` у 5;
- `mcp_acceptance_test.py --base-url http://10.26.5.108:30041/mcp` → **15/15 PASS**;
- живой вызов 1.6.0-новинки `drawing_understand` → ok (entities, units, extents,
clusters, rooms, blocks, layouts, title_block);
- прод `:30015` → 161 инструмент, не тронут.