NODEDC_DESIGN_GUIDELINE/docs/MODULE_STUDIO.md

70 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# NDC Module Studio
Текущий living catalog эволюционирует в Module Studio без создания второго визуального приложения. Существующие разделы остаются `Visual Library`; рядом живут `Page Library` и `Applications`. Первый вертикальный срез не подключает Engine, Cesium, Authentik, Hub или Deploy.
## Page Template contract v0.1
Канонические TypeScript-контракты и manifests находятся в `@nodedc/page-patterns`, машинно-читаемый реестр — в `registry/pages.json`.
Первый шаблон `Map Page 0.1.0` формально фиксирует:
- template identity и pinned version;
- стартовую страницу и navigation defaults;
- разрешённые feature flags `Inspector`, `Toolbar`, `Assistant`;
- runtime-neutral slots `points`, `traces`, `routes`, `zones`, `selection`, `commands`, `assistant`;
- template-owned actions.
Шаблон не содержит Cesium token, Engine workflow, React component tree или свободные координаты элементов. Renderer/Cesium adapter и Capability Bindings являются отдельными следующими слоями.
## Application Manifest v0.1
Каноническая JSON Schema: `registry/schemas/application-manifest-v0.1.schema.json`.
Manifest фиксирует:
- identity, slug, draft status и версию;
- ссылку на Design Profile и Dark/Light;
- хотя бы одну страницу и pinned page-template version;
- navigation visibility;
- только заранее разрешённые feature flags;
- favicon source;
- server-controlled timestamps.
Manifest не хранит runtime credentials, capability bindings, arbitrary component tree, свободные координаты элементов или deployment secrets.
## Draft lifecycle
Catalog server предоставляет минимальный временный API:
- `GET /api/applications` — список drafts;
- `GET /api/page-templates` — получить канонический page registry;
- `POST /api/applications` — создать draft из явно выбранных `templateId` и `templateVersion`;
- `GET /api/applications/:id` — открыть draft;
- `PUT /api/applications/:id` — атомарно сохранить draft.
Файлы находятся в `runtime-data/applications` и исключены из Git. Этот store доказывает lifecycle `create → save → reload → open`; целевой production store позже принадлежит Platform `application-core`.
## Согласованный UX Application Projects
- круглая кнопка `+` в заголовке Applications открывает модалку создания модуля;
- текущий модуль выбирается через Hub-style searchable selector, а не через плоский список проектов;
- root модуля содержит metadata, ссылку на один pinned Design Profile и Application Composition;
- Dark/Light, favicon, Glass и прочие визуальные параметры не настраиваются внутри модуля;
- две равные колонки `Доступные страницы / Конфигурация приложения` работают только с готовыми Page Templates;
- drag-and-drop меняет состав и порядок ссылок на шаблоны, но не создаёт свободный canvas;
- после сохранения страницы появляются в левой навигации и открывают визуальный preview;
- режимы `Настройка / Предпросмотр` разделяют Studio controls и поведение будущего приложения;
- удаление draft выполняется только через destructive confirmation modal.
## Design Profile lifecycle
Visual Library использует отдельный Hub-style selector профилей. Общая кнопка Save открывает каноническую модалку `Сохранить / Сохранить как новый`. Приложение хранит только pinned `profile id + version + theme`; media, favicon и material settings принадлежат Design Profile.
Временный catalog server предоставляет:
- `GET /api/design-profiles`;
- `GET /api/design-profiles/:id`;
- `POST /api/design-profiles`;
- `PUT /api/design-profiles/:id`;
- `DELETE /api/applications/:id` с переносом draft в локальное deleted-storage.