4.1 ConstructorManifest
CAD-конструктор — чистая функция (params, work_area_size_mm) → ConstructorManifest: он не знает,
где деталь лежит в рабочей зоне, работает только вычитанием, группирует шаги по инструменту и не держит
магических чисел. Всё, что платформе нужно от конструктора, — в манифесте ниже: 10 полей и
3 вложенных схем.
Поля манифеста
| поле | тип | обязательно | умолчание |
|---|---|---|---|
template_id | string | да | — |
params_hash | string | да | — |
name | string | да | — |
description | string? | — | — |
stock_size_mm | any[] | да | — |
stock_kind | string | — | box |
steps | ManifestStep[] | да | — |
tools_required | ToolRequirement[] | да | — |
target_stl_url | string? | — | — |
placement | Placement | — | — |
Вложенные схемы
| схема | поля |
|---|---|
ManifestStep | idx · name · op_params · op_type · required_tool · state_stl_url · summary |
Placement | rotation_deg · translation_mm |
ToolRequirement | diameter_mm · flutes · label · material_compat · min_flute_len_mm · size_kind · type · used_in_steps |
ManifestStep — один шаг = один инструмент: одинаковые операции одной фрезой не дробятся на шаги.
ToolRequirement называет, какой инструмент нужен шагу, но не выбирает его: слот назначает человек
в стволе станка. Placement — размещение относительно заготовки, не относительно стола.
Золотой образец конструктора в репозитории платформы — plate_with_holes.py.
Порождено из кода. Источник:
backend/src/aicnc/models/constructor_manifest.py :: ConstructorManifest.model_json_schema()Пересборка:
bash /opt/synctwin/site/scripts/refresh-integrator.sh · снято 2026-09-11T20:07:30+00:00Руками на этой странице написано: вводный абзац и пояснение к трём схемам