NODEDC_DESIGN_GUIDELINE/docs/MODULE_STUDIO.md

4.7 KiB
Raw Blame History

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.