feat: drawing_add_linear_dimension — упрочнение по ревью Codex реализации

#4: отклонение нулевого NominalValue после Update (ориентация несовместима с
точками, напр. horizontal на вертикали |X2-X1|=0) — откат dim.Delete + ошибка.
#3: Parallel протестирован — работает БЕЗ явного Angle (КОМПАС авто-вычисляет угол
по точкам; (0,0)-(30,40)→50). #7: rollback-ветка покрыта тестом нулевой проекции.
#8: контракт «первый несистемный вид» — осознанный (задокументирован).

Тесты: DrawingDimensionTests 5→7 (+parallel, +нулевая проекция/откат). Итого
131 unit + 72 integration = 203.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-27 18:07:01 +03:00
parent 8e0ab374af
commit 71cafb2270
3 changed files with 56 additions and 1 deletions
@@ -1,7 +1,19 @@
# Дизайн: линейный размер на виде чертежа (drawing_add_linear_dimension) через API7
**Дата:** 2026-05-27
**Статус:** реализовано и проверено (5 интеграционных + unit, всего 201); ревью Codex спека учтено
**Статус:** реализовано и проверено (7 интеграционных + unit, всего 203); ревью Codex спека и реализации учтено
## Правки по ревью реализации Codex
- **#4 нулевое значение** (важно): после `Update`+`Valid` проверяем `|NominalValue| > 1e-6` — ловит
несовместимость ориентации с точками (horizontal для точек на одной вертикали: `|X2-X1|=0`), которую
`RequireDistinctPoints` не видит. При нуле — откат (`dim.Delete`) + ошибка. Тест добавлен.
- **#3 Parallel** (важно): добавлен интеграционный тест — параллельный (0,0)-(30,40) → 50 (3-4-5).
**Работает БЕЗ явного `Angle`** (КОМПАС авто-вычисляет угол по точкам) — Parallel оставлен.
- **#7 rollback** (важно): тест нулевой проекции проходит через ветку `dim.Delete()` (откат) —
проверяет, что число размеров вида не изменилось. (Update==false/Valid==false без fault injection.)
- **#8 ассоциативность вида** (минор): осознанный контракт «первый НЕсистемный вид» (задокументирован
в описании инструмента и ошибке FindView).
## Находка реализации: размеры НЕ в IView.ObjectCount