mikhail
679171c5a7
Merge feat/drawing-text-annotations: текстовые обозначения чертежа (инкремент 6)
...
Шероховатость, свободный текст, технические требования. 81 инструмент, 267 тестов зелёных.
2026-05-27 21:22:43 +03:00
mikhail
d8edb18f06
docs: текстовые обозначения чертежа — README, ARCHITECTURE, OPEN_QUESTIONS, presentation, CLAUDE.md
...
81 инструментов, 267 тестов. 2D-чертёж: добавлены шероховатость, свободный текст,
технические требования (инкремент 6).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 21:22:35 +03:00
mikhail
5272066bef
feat(drawing): текстовые обозначения — шероховатость, текст, тех. требования
...
drawing_add_rough (знак шероховатости: ISymbols2DContainer.Roughs + IRoughParams,
SignType ksRoughSignEnum, значение Ra/Rz через RoughParamText.Str),
drawing_add_text (свободная надпись: IDrawingContainer.DrawingTexts + IText.Str),
drawing_set_technical_requirements (блок тех. требований уровня документа:
IDrawingDocument.TechnicalDemand.Text).
- DrawingService: AddRoughAsync/AddTextAsync/SetTechnicalRequirementsAsync +
ReadTechnicalRequirementsAsync + счётчики; RequireDrawingContainer/RequireTechnicalDemand
- RoughSignType (enum + Parse/ToKompas), DrawingAnnotationResult (Value read-back из COM)
- RequireNonEmptyText в DrawingValidation
- 13 unit + 13 интеграционных тестов (всего 267 зелёных), сборка Release чистая
Спайк подтвердил: значение шероховатости через IRoughParams.RoughParamText.Str (round-trip);
текст НЕ в IView.ObjectCount (счёт по DrawingTexts.Count); тех. требования IsCreated False→True
при первом Text.Str+Update, многострочно через \n. Ревью Codex спека учтено (height убран —
это высота блока, не шрифт; guards; read-back возврат). Спек — docs/superpowers/specs/.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 21:13:11 +03:00
mikhail
1f153e43ab
chore: усилить description делегатов — проактивные триггеры
...
kompas-sdk-research и docs-maintainer почти не вызывались (по транскриптам:
2 и 1 раз против 40 у general-purpose). Причина — описания ждали явной
реплики пользователя, а в автономном цикле NEXT-SESSION её нет.
- Триггеры переписаны на проактивные, от лица Opus, с привязкой к шагу цикла
(SDK-лукап — перед кодом; доки — перед коммитом, после реализации).
- kompas-sdk-research: «(Sonnet)» → «(Haiku, read-only)» (соответствие model:),
снят барьер делегирования (ответ дёшев, перепроверяется рефлексией по interop),
добавлены негативные границы (не геометрия, не KsAPI).
- docs-maintainer: в охват явно добавлены CLAUDE.md и OPEN_QUESTIONS.md.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 20:42:29 +03:00
mikhail
328e89a6e7
docs: handoff — инкремент 5 (радиальный/угловой) завершён; далее — привязка/формат/обозначения
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 20:05:10 +03:00
mikhail
7fa434afae
Merge feat/drawing-radial-angular-dimension: радиальный и угловой размеры (инкремент 5)
...
Завершено базовое семейство размеров 2D-чертежа. 78 инструментов, 241 тест зелёный.
2026-05-27 20:03:41 +03:00
mikhail
db9d76a7bd
docs: радиальный и угловой размеры — README, ARCHITECTURE, OPEN_QUESTIONS, presentation, CLAUDE.md
...
78 инструментов, 241 тест. Базовое семейство размеров 2D-чертежа завершено
(линейный, диаметральный, радиальный, угловой).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 20:03:35 +03:00
mikhail
86a5a52347
review(drawing): правки по ревью реализации Codex (угловой размер)
...
- описание (x3,y3) и сообщение об ошибке: угол выбирает angleType, не точка дуги
- тест angleType=Max (лучи 0°/45° → 135° тупой супплемент): min=45/max=135/more=315
- спек дополнен находкой о трёх типах угла
241 тест зелёный, сборка Release чистая.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 19:58:15 +03:00
mikhail
246233727c
feat(drawing): радиальный (R) и угловой размеры на виде чертежа
...
drawing_add_radial_dimension (R окружности/дуги; NominalValue = радиус) и
drawing_add_angular_dimension (угол между двумя сторонами; angleType min/max/more
выбирает измеряемый сектор) через API7 ISymbols2DContainer. Завершают базовое
семейство размеров чертежа (после линейного и диаметрального).
- DrawingService: AddRadialDimensionAsync/AddAngularDimensionAsync + счётчики
- AngleDimensionType (enum + Parse/ToKompas, по образцу DimensionOrientations)
- DrawingDimensionResult.Value — единице-нейтральный (мм / градусы)
- 9 unit + 13 интеграционных тестов (всего 240 зелёных)
Спайк подтвердил: радиальный NominalValue = РАДИУС (не диаметр, вопреки справке);
у углового измеряемый угол выбирает angleType (min=90°/more=270°), а (x3,y3) лишь
позиционирует дугу. Спек и ревью Codex — docs/superpowers/specs/.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 19:51:10 +03:00
mikhail
93a67d318e
docs: CLAUDE.md — описать субагентов-делегатов (kompas-sdk-research, docs-maintainer)
...
Раздел «Delegation subagents» рядом с принципом проекта: модели (Haiku/Sonnet),
наборы инструментов, когда диспетчить, обоснование сплита моделей.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 19:15:17 +03:00
mikhail
35e06e8786
docs: NEXT-SESSION — снизить якорение, оптимизировать хэндофф-промт
...
Сокращён со 117 до ~40 строк. Убраны пред-решённый следующий инкремент,
пред-разведанные точки входа API (RadialDimensions/AngleDimensions, сниппет
рефлексии), развёрнутый процесс/ловушки/паттерн теста — заменены указателями
на CLAUDE.md / навык kompas-3d / авто-память. Текущее состояние свёрнуто до
инвентаря по классам. Модель сама разведывает API и выбирает инкремент —
эффект свежего взгляда.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 19:08:53 +03:00
mikhail
4e017fc1cf
docs: README — убрать избыточную конкретику из секции «Архитектура (кратко)»
...
Свёрнуты method-level цепочки вызовов и имена внутренних сервисов до уровня
обзора; детали реализации — по ссылке в ARCHITECTURE.md/CLAUDE.md.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 19:01:12 +03:00
mikhail
92e869006f
chore: kompas-sdk-research → Haiku (поиск-извлечение, ошибка ловится сверкой interop)
...
docs-maintainer остаётся на Sonnet (правит канонические доки, нужно суждение).
Обновлены подписи моделей в README.md и NEXT-SESSION.md.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 18:59:21 +03:00
mikhail
454a90100a
refactor: навыки-делегаторы → нативные субагенты
...
docs-delegate и kompas-sdk-research были навыками-обёртками: их тело —
шаблон системного промпта, который Opus вручную копировал в вызов
general-purpose агента на Sonnet. Переоформлены в нативных субагентов
(.claude/agents/), где промпт живёт в теле определения, модель и набор
инструментов фиксируются во frontmatter.
- docs-delegate → docs-maintainer (имя по роли, а не по механизму);
tools: Read/Edit/Write/Glob/Grep.
- kompas-sdk-research: read-only (tools: Glob/Grep/Read) — запрет правок
теперь структурный, а не правило в промпте.
- Делегация теперь один вызов Agent(subagent_type, prompt) без копирования
шаблона → экономия контекста Opus.
- Переписаны живые ссылки: CLAUDE.md, kompas-3d/SKILL.md, README.md,
ARCHITECTURE.md, NEXT-SESSION.md. Старые каталоги навыков удалены.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 18:55:13 +03:00
mikhail
ced95b742b
docs: переписан handoff набело под продолжение (веха 2D-чертёж, инкремент 5)
...
Убраны наслоения старой сессии (фокус «начни со сборок», дубли состояния, стартовая
инструкция про IParts7). Актуально: 76 инструментов / 218 тестов; сборки завершены,
чертёж 4 инкремента; следующий — радиальный/угловой размер (A) или рамка/формат (B).
Процесс, ловушки, паттерн теста, отрицательный результат сохранены и сжаты.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 18:49:05 +03:00
mikhail
ecf7b15e7a
docs: handoff — диаметральный размер готов (инкремент 4 чертежа); далее — радиус/угол
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 18:45:54 +03:00
mikhail
17efc79ffb
Merge feat/drawing-diametral-dimension: диаметральный размер на виде (инкремент 4)
...
drawing_add_diametral_dimension — Ø окружности на виде через API7
(ISymbols2DContainer.DiametralDimensions; значение=диаметр 2R, авто). Извлечён
общий RequireSymbols2DContainer. 76 инструментов, 218 тестов (141 unit + 77
integration). Спек + ревью Codex (спека и реализации) учтены.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 18:44:42 +03:00
mikhail
7359337a95
docs: drawing_add_diametral_dimension — диаметральные размеры (76 инструментов, 218 тестов)
...
README/CLAUDE/ARCHITECTURE/OPEN_QUESTIONS/presentation.html: счётчики 75→76,
203→218; drawing_add_diametral_dimension в группе Drawing; факты (ISymbols2DContainer.
DiametralDimensions, Xc/Yc/Radius/Angle радианы, NominalValue=2R, RequireSymbols2DContainer).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 18:44:42 +03:00
mikhail
b6ca2f7b21
feat: drawing_add_diametral_dimension — упрочнение по ревью Codex реализации
...
#2 : инвариант диаметра value>0 (value<=0||!IsFinite, не Abs<1e-6). #3 : сообщение
create_standard_views обобщено (номера видов для инструментов размеров). #4a:
ToRadians проверяет конечность результата (переполнение). #5d: тест viewNumber:999
(вид не найден). #6 : комментарий DimensionType переформулирован (COM-дефолт).
Тесты: DrawingDiametralTests 4→5. Итого 141 unit + 77 integration = 218.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 18:38:33 +03:00
mikhail
910d120c8a
feat: drawing_add_diametral_dimension — диаметральный размер на виде (API7)
...
Веха 2D-ЧЕРТЁЖ, инкремент 4. DrawingService.AddDiametralDimensionAsync:
(ISymbols2DContainer)view.DiametralDimensions.Add → Xc/Yc/Radius/Angle(рад) +
AutoNominalValue → Update → Valid → NominalValue (= диаметр 2R). angle в градусах
(DimensionAngles.ToRadians). Новый инструмент drawing_add_diametral_dimension.
Рефактор по ревью Codex: извлечён RequireSymbols2DContainer(viewNumber) (общий для
линейных/диаметральных размеров); AutoNominalValue выставляется явно (как у линейного);
DimensionType — COM-дефолт; ToRadians — чистый helper с unit-тестом.
Валидаторы: RequirePositiveRadius (новый). Тесты: +10 unit (ToRadians,
RequirePositiveRadius), +4 integration (DrawingDiametralTests: диаметр=2R, адресация
вида, radius<=0, нет видов). Итого 141 unit + 76 integration = 217.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 18:30:04 +03:00
mikhail
b6cd92b95c
docs: спек drawing_add_diametral_dimension — диаметральный размер (API7)
...
Веха 2D-ЧЕРТЁЖ, инкремент 4. Спайк: (ISymbols2DContainer)view.DiametralDimensions.
Add → Xc/Yc/Radius/Angle(рад) → Update; NominalValue == диаметр (2R, проверено 30).
Angle экспонируется в градусах. Та же модель, что линейный размер.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 18:17:15 +03:00
mikhail
cd76abd652
docs: handoff — линейные размеры готовы (инкремент 3 чертежа); далее — диаметр/радиус
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 18:14:40 +03:00
mikhail
2c594bc890
Merge feat/drawing-linear-dimension: линейный размер на виде (инкремент 3)
...
drawing_add_linear_dimension — линейный размер (horizontal/vertical/parallel) на
ассоциативном виде через API7 (ISymbols2DContainer.LineDimensions, авто-значение).
drawing_create_standard_views теперь возвращает ViewNumbers (адресация видов).
75 инструментов, 203 теста (131 unit + 72 integration). Спек + ревью Codex
(спека и реализации) учтены.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 18:13:46 +03:00
mikhail
eda3242f62
docs: drawing_add_linear_dimension — линейные размеры (75 инструментов, 203 теста)
...
README/CLAUDE/ARCHITECTURE/OPEN_QUESTIONS/presentation.html: счётчики 74→75,
188→203; drawing_add_linear_dimension в группе Drawing; факты (ISymbols2DContainer
QI от вида, локальная СК вида, AutoNominalValue, размеры НЕ в IView.ObjectCount,
ViewNumbers в результате видов).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 18:13:46 +03:00
mikhail
71cafb2270
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 >
2026-05-27 18:07:01 +03:00
mikhail
8e0ab374af
feat: drawing_add_linear_dimension — линейный размер на виде (API7)
...
Веха 2D-ЧЕРТЁЖ, инкремент 3. DrawingService.AddLinearDimensionAsync: (ISymbols2D
Container)view (QI) → LineDimensions.Add → X1..Y3 (локальная СК вида) + Orientation
+ AutoNominalValue → Update → проверка Valid → ((IDimensionText)dim).NominalValue.
Свой enum DimensionOrientation (horizontal/vertical/parallel). Новый инструмент
drawing_add_linear_dimension. DrawingViewsResult += ViewNumbers (адресация видов).
Находка: размеры НЕ в IView.ObjectCount (он про геометрию IDrawingContainer) —
проверка попадания в вид через ISymbols2DContainer.LineDimensions.Count.
Ревью Codex спека учтено: RequireDistinctPoints (нулевая длина) + Valid после
Update; контракт «первый несистемный вид»; null-check Add; AutoNominalValue явно;
ViewNumbers required + текст ответа create_standard_views; тесты адресации/негатив.
Тесты: +8 unit (DimensionOrientations, DrawingValidation), +5 integration
(DrawingDimensionTests). Итого 131 unit + 70 integration = 201.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 18:01:02 +03:00
mikhail
ca3d91ae68
docs: спек drawing_add_linear_dimension — линейный размер на виде (API7)
...
Веха 2D-ЧЕРТЁЖ, инкремент 3. Спайк подтвердил: (ISymbols2DContainer)view QI →
LineDimensions.Add → X1..Y3 (локальная СК вида) + Orientation + Update; авто-значение
((IDimensionText)dim).NominalValue == расстояние (проверено 40). Плюс: DrawingViewsResult
+= ViewNumbers (адресация видов, закрывает замечание Codex из ревью видов).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 17:49:18 +03:00
mikhail
d6a129b0d1
docs: handoff — основная надпись готова (инкремент 2 чертежа); следующее — размеры на видах
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 17:32:22 +03:00
mikhail
56f6e0b45a
Merge feat/drawing-title-block: основная надпись чертежа (оформление, инкремент 2)
...
drawing_fill_title_block — заполнение граф штампа (обозначение/наименование/
материал) активного чертежа через API7 (IStamp.Text[id].Str + Update).
74 инструмента, 188 тестов (123 unit + 65 integration). Спек + ревью Codex
(спека и реализации) учтены.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 17:31:31 +03:00
mikhail
034e9aee24
docs: drawing_fill_title_block — оформление чертежа (74 инструмента, 188 тестов)
...
README/CLAUDE/ARCHITECTURE/OPEN_QUESTIONS/presentation.html: счётчики 73→74,
177→188; drawing_fill_title_block в группе Drawing; факты основной надписи
(LayoutSheets.ItemByNumber[1].Stamp, Text[id].Str индексировано, StampField→графы).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 17:31:31 +03:00
mikhail
eaa4a56708
feat: drawing_fill_title_block — упрочнение по ревью Codex реализации
...
#3/#6: доступ к графе через RequireStampCell(stamp,columnId) — null-check ячейки
+ единое место валидации (запись и чтение). #4 : проверка columnId>0 в helper
(защищает и ReadStampCellAsync). #2/#5: нетранзакционность записи зафиксирована
комментарием (откат при Update()==FALSE спекулятивен, не делаем). RCW — долг v2-2.
Тесты без изменений в числе: 123 unit + 65 integration = 188 зелёных.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 17:25:41 +03:00
mikhail
742a97177b
feat: drawing_fill_title_block — основная надпись чертежа (API7)
...
Веха 2D-ЧЕРТЁЖ, инкремент 2 (оформление). DrawingService.FillTitleBlockAsync:
LayoutSheets.ItemByNumber[1].Stamp.Text[id].Str = text → Update(). Enum StampField
→ номер графы ГОСТ (designation=2, name=1, material=3). Заполнение нескольких
граф за вызов; перезапись (Str замещает, Clear не нужен — подтверждено спайком).
Новый инструмент drawing_fill_title_block; ReadStampCellAsync для проверки.
Ревью Codex спека учтено: Update() результат проверяется; null-checks
(LayoutSheets/sheet/Stamp); RequireActiveDrawing выделен (сохраняет cast-проверку);
ColumnId switch с дефолтным throw; счётчик = непустые поля; name=графа 1 однозначно.
Валидация — чистый StampFields (ColumnId + Collect). Тесты: +7 unit (StampFields),
+4 integration (DrawingStampTests: заполнение+reread 3 граф, перезапись, пустой
ввод, не-чертёж). Итого 123 unit + 65 integration = 188.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 17:20:16 +03:00
mikhail
db23a1a748
docs: спек drawing_fill_title_block — основная надпись чертежа (API7)
...
Веха 2D-ЧЕРТЁЖ, инкремент 2. Спайк подтвердил round-trip графы: LayoutSheets.
ItemByNumber[1].Stamp.Text[id].Str + Update(). Enum StampField→номер графы ГОСТ
(designation=2, name=1, material=3). Заполнение нескольких граф за вызов.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 17:07:35 +03:00
mikhail
23d245fd78
docs: handoff — веха 2D-чертёж начата (drawing_create_standard_views готов)
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 14:45:48 +03:00
mikhail
ddbb46196e
Merge feat/drawing-standard-views: стандартные виды чертежа (веха 2D-чертёж)
...
drawing_create_standard_views (инкремент 1 вехи 2D-ЧЕРТЁЖ): стандартные
ассоциативные виды детали/сборки на чертеже (API7 IViews.AddStandartViews).
73 инструмента, 177 тестов (116 unit + 61 integration). Спек + ревью Codex
(спека и реализации) учтены.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 14:44:28 +03:00
mikhail
6c6add72e2
docs: drawing_create_standard_views — веха 2D-чертёж начата (73 инструмента, 177 тестов)
...
README/CLAUDE/ARCHITECTURE/OPEN_QUESTIONS/presentation.html: счётчики 72→73,
156→177; новая группа инструментов Drawing; факты DrawingService (AddStandartViews,
ProjectionsTypes=object[]{1,3,5} SAFEARRAY VT_I4, created==3, непустота по новым
видам, откат IView.Delete).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 14:44:28 +03:00
mikhail
5aa4221a37
feat: drawing_create_standard_views — упрочнение по ревью Codex реализации
...
#1 : непустота проверяется у ВНОВЬ созданных видов (разница IView.Number), не по
всей коллекции — прежняя геометрия чертежа не маскирует пустые новые виды.
#3 : откат созданных видов (IView.Delete) при created!=3 или пустых видах.
#7 : unit-тест нормализации кириллического пути. #4 : повторный вызов (дубликаты)
отражён в описании инструмента. #5/#6/#2 — по обоснованию (release RCW отклонён v2-2).
Тесты: 116 unit + 61 integration = 177 зелёных.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 14:37:35 +03:00
mikhail
de063290f4
feat: drawing_create_standard_views — стандартные виды чертежа (API7)
...
Веха 2 (2D-ЧЕРТЁЖ), инкремент 1. Новый DrawingService (API7, namespace
Kompas.Mcp.Core.Drawings): doc2d.ViewsAndLayersManager.Views.AddStandartViews(
path, "#Спереди", {1,3,5}=front/top/left, x, y, scale, 20, 20). Новый DrawingTools
(инструмент drawing_create_standard_views), регистрация в DI.
Подтверждено спайком: object[]→SAFEARRAY VT_I4 ОК, 3 вида создаются (Count 1→4).
Ревью Codex спека учтено: File.Exists+Length>0; created==3 строго; гарантия
непустоты (сумма ObjectCount>0); опц. x,y (повторный вызов не стопкой); record
DrawingViewsResult{Created,Total}. Точечный release RCW отклонён (v2-2).
Валидация — чистый DrawingValidation (расширение .m3d/.a3d, scale>0).
Тесты: +16 unit (DrawingValidation), +3 integration (DrawingTests: создание 3 видов,
отклонение не-чертежа, несуществующий файл). Итого 114 unit + 61 integration = 175.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 14:30:25 +03:00
mikhail
46648f7635
docs: спек drawing_create_standard_views — стандартные виды чертежа (API7)
...
Веха 2 (2D-ЧЕРТЁЖ), инкремент 1. Механизм подтверждён спайком: doc2d.
ViewsAndLayersManager.Views.AddStandartViews(path, "#Спереди", {1,3,5}, ...);
object[]→SAFEARRAY VT_I4 ОК, 3 вида создаются (Count 1→4). Новый DrawingService.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 14:09:43 +03:00
mikhail
cb1984f227
docs: handoff — инкремент 2 (assembly_add_mate) готов; далее — компоненты/чертёж
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 13:53:56 +03:00
mikhail
7a4370907a
Merge feat/assembly-add-mate: сопряжения компонентов сборки + IntegrationTestBase
...
assembly_add_mate (инкремент 2 вехи СБОРКИ): сопряжения coincidence/distance
между гранями компонентов (API7 IMateConstraints3D). + рефакторинг тестов на
IntegrationTestBase (per-test очистка документов). 72 инструмента, 156 тестов
(98 unit + 58 integration). Спек + ревью Codex (спека и реализации) учтены.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 13:52:45 +03:00
mikhail
1493eaa776
docs: assembly_add_mate — сопряжения сделаны (72 инструмента, 156 тестов)
...
README/CLAUDE/ARCHITECTURE/OPEN_QUESTIONS/presentation.html: счётчики 71→72,
138→156; группа Assembly +assembly_add_mate; факты AddMateAsync (IMateConstraints3D,
FindObjectsByPoint FirstLevel=false, MateType, Valid-проверка); упомянут
IntegrationTestBase (per-test очистка).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 13:52:35 +03:00
mikhail
3fe06f61dc
feat: assembly_add_mate — упрочнение по ревью Codex реализации
...
#1 : Valid==false → ошибка (откат), а не «успех с valid=false»; косвенно отсекает
грани одного компонента (вырожденный мат). #6/#7: distance value строго > 0
(нулевой зазор = coincidence) + unit-кейс value=0 бросает. #8 : негативный
интеграционный тест — точка в пустоте → грань не найдена → ошибка.
#2/#3/#4 оставлены по обоснованию (best-effort откол, Add??throw, первый IFace —
консистентно с HoleService). #9 точечный release RCW отклонён (конвенция v2-2).
Тесты: 98 unit + 58 integration = 156 зелёных.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 13:45:35 +03:00
mikhail
8282716773
feat: assembly_add_mate — сопряжения компонентов сборки (API7)
...
Веха СБОРКИ, инкремент 2. AssemblyService.AddMateAsync (API7): top.MateConstraints
→ Add(MateConstraintType) → BaseObject1/2 (грани через FindObjectsByPoint
FirstLevel=false) → ParamValue → Update → RebuildModel. Свой enum MateType
(Coincidence/Distance) → MateConstraintType. MCP-инструмент assembly_add_mate.
Подтверждено спайком и тестами: coincidence сводит грани заподлицо (ширина 120→40),
distance(30) держит зазор 30 (→70); Update=True Valid=True. Решатель может двигать
любой компонент → проверка по ширине габарита.
Ревью Codex учтено: scope урезан до coincidence/distance (только геометрически
проверенные); валидация value по типу (RequireMateValue); полный откат при любой
ошибке после Add (mate.Owner.Delete); возврат AddedMate{Type,Valid}; усиленные
ассерты (Valid, размеры компонентов неизменны). Точечный release RCW отклонён
(конвенция v2-2). Прочие типы (parallel/concentric/angle/…) — будущие инкременты.
Тесты: +14 unit (Mates.Parse/RequiresValue, RequireMateValue), +2 integration
(AssemblyMateTests). Итого 97 unit + 57 integration = 154 зелёных.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 13:39:04 +03:00
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
5e6d3ec8ae
docs: спек assembly_add_mate — сопряжения компонентов (API7), спайк зелёный
...
Веха СБОРКИ, инкремент 2. Механизм подтверждён спайком: mates.Add(type) +
BaseObject1/2 (грани через FindObjectsByPoint FirstLevel=false) + Update +
RebuildModel. Coincidence (ширина 120→40), Distance(30) (→70). Свой enum MateType.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 13:24:58 +03:00
mikhail
20518efe52
docs: handoff — инкремент 1 (assembly_add_component) готов; следующее — сопряжения
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 13:18:22 +03:00
mikhail
2763c3fd88
Merge feat/assembly-add-component: вставка детали в сборку (класс СБОРКИ начат)
...
assembly_add_component — первый инструмент построения сборок (API7,
AssemblyService): IParts7.AddFromFile → Placement.SetOrigin → RebuildModel.
71 инструмент, 138 тестов (83 unit + 55 integration). Спек + ревью Codex
(спека и реализации) учтены.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 13:16:44 +03:00
mikhail
5b9a0c6e32
docs: assembly_add_component — класс СБОРКИ начат (71 инструмент, 138 тестов)
...
README/CLAUDE/ARCHITECTURE/OPEN_QUESTIONS/presentation.html: счётчики 70→71,
119→138; новая группа инструментов Assembly; ключевые факты AssemblyService
(workflow API7, эмпирика UpdatePlacement, RequireActiveAssembly, откат).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 13:16:37 +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