Commit Graph

3 Commits

Author SHA1 Message Date
mikhail 8afad88241 test: per-test очистка документов через IntegrationTestBase (CloseAllAsync)
Базовый класс IntegrationTestBase (IAsyncLifetime) закрывает все открытые
документы КОМПАС после КАЖДОГО теста (DocumentService.CloseAllAsync) — чтобы не
копились вкладки-пустышки и упавший Assert не оставлял открытый документ. Все
интеграционные тест-классы переведены на него (: base(fx)); индивидуальные
finally CloseAsync сохранены как первичная очистка.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 13:38:48 +03:00
mikhail 7e99790378 feat: assembly_add_component — упрочнение по ревью Codex реализации
#1: RebuildModel результат проверяется (FALSE → ошибка).
#2/#3: верифицируемый откат RollbackInsertion (по beforeCount, удаляет всё сверх
исходного через IFeature7.Delete, не полагается на null-возврат AddFromFile).
#5: тест вставки во вторую (непустую) сборку — инкремент count + корректность Index.
#7: тест несуществующего файла — FileNotFoundException + сборка остаётся пустой.
#4 (точечный release RCW) отклонён: противоречит конвенции проекта (OPEN_QUESTIONS
v2-2, образец HoleService) — транзитные RCW не освобождаем точечно.

Тесты: AssemblyTests 3→5, итого 83 unit + 55 integration = 138 зелёных.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 13:09:51 +03:00
mikhail 5eee7ad1af feat: assembly_add_component — вставка детали из .m3d в сборку (API7)
Веха СБОРКИ, инкремент 1. Новый AssemblyService (API7, паттерн HoleService):
IParts7.AddFromFile → Placement.SetOrigin → RebuildModel. Новый AssemblyTools
(MCP-инструмент assembly_add_component), регистрация в DI.

Ключевая находка: UpdatePlacement возвращает FALSE для вручную позиционируемого
компонента (не ошибка), позицию применяет SetOrigin + RebuildModel(true).

Валидация — чистый AssemblyValidation (расширение .m3d/.a3d, нормализация пути,
конечность координат). RequireActiveAssembly — раздельные ошибки по типу документа.

Тесты: +14 unit (AssemblyValidation), +3 integration (AssemblyTests: вставка в
origin, позиционирование со сдвигом, отклонение не-сборки). Итого 83 unit + 53
integration = 136 зелёных.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 13:04:19 +03:00