feat(foundry): close the operational map data loop
This commit is contained in:
+36
-6
@@ -5,7 +5,7 @@
|
||||
## Границы ответственности
|
||||
|
||||
- Page Template владеет компоновкой страницы, Inspector, Toolbar, Assistant entry point, слотами данных и системными действиями.
|
||||
- Map Scene Fixture задаёт минимальный проверочный набор пространственных сущностей и состояний.
|
||||
- Empty Map Scene Fixture проверяет shell без каких-либо shipped domain-объектов.
|
||||
- Application Manifest фиксирует экземпляр страницы, выбранный Design Profile и feature visibility.
|
||||
- Platform capability binding связывает слоты шаблона с scoped data products через Foundry runtime BFF.
|
||||
- Renderer adapter преобразует provider-neutral scene в Cesium или другой поддерживаемый renderer.
|
||||
@@ -26,14 +26,30 @@ Engine/NDC остаётся средой создания и исполнени
|
||||
- selection;
|
||||
- ready/loading/empty/stale/error/offline states.
|
||||
|
||||
Размеры и внешний вид разновидностей сущностей задаются ссылками на `styleProfiles`. Это позволяет одному доменному типу иметь разные подтверждённые варианты, не создавая новый renderer-specific тип.
|
||||
Размеры и внешний вид разновидностей сущностей задаются ссылками на
|
||||
`styleProfiles`. Для live entity-stream Application page хранит отдельные
|
||||
versioned `presentationProfiles`, а binding выбирает один из них через
|
||||
`presentationProfileId`. Это позволяет одному доменному типу иметь разные
|
||||
подтверждённые варианты, не создавая новый renderer-specific тип.
|
||||
|
||||
Канонический moving-object профиль находится в
|
||||
`registry/map-presentation-profiles.json`. Он задаёт универсальную геометрию
|
||||
таргета, плашку подписи, LOD и два пользовательских status facets: связь и
|
||||
движение. Для текущего Gelios binding значения и подписи повторяют официальный
|
||||
статусный набор: `Онлайн`, `Офлайн`, `В движении`, `Стоят`. Position
|
||||
quality и freshness остаются внутренними фактами качества и не дублируют
|
||||
пользовательские фильтры. Классы, фильтры, счётчики и sort order читают один
|
||||
profile; renderer не содержит provider-specific условий.
|
||||
|
||||
Кнопка `Объекты` открывает вверх текстовый dropdown из Application bindings. Выбор строки открывает или фокусирует отдельное canonical `WorkspaceWindow`, а его универсальное содержимое строится из presentation profile/facets. Несколько binding-окон могут быть открыты одновременно; stable identity всегда `bindingId`, поэтому пользовательское переименование не ломает сохранённый layout.
|
||||
|
||||
Facet-фильтры поддерживают мультивыбор: OR внутри одного facet и AND между facets. Missing facet означает отсутствие ограничения, а явно пустой список — ноль совпадений. Отжатие последнего chip не включает `Все`; `Все` включается и выключается только явным кликом. Переключение фильтра не двигает камеру, обзор выполняется отдельным действием.
|
||||
|
||||
## Acceptance fixtures
|
||||
|
||||
- `registry/fixtures/map/map-operational-v0.1.json` — минимальная рабочая сцена с сеткой, транспортом, станциями, маршрутом, железнодорожным путём, зоной и selection.
|
||||
- `registry/fixtures/map/map-empty-offline-v0.1.json` — отсутствие provider/live data без разрушения shell и управляющих действий.
|
||||
|
||||
Fixtures малы и детерминированы. Большие геоданные, tile cache, credentials и реальные streaming snapshots в репозиторий гайдлайнов не входят.
|
||||
Page/Visual/Application previews не содержат shipped domain fixtures. Объекты появляются только из declared Application bindings. Большие геоданные, tile cache, credentials и реальные streaming snapshots в репозиторий гайдлайнов не входят.
|
||||
|
||||
## Sandbox credit overlay
|
||||
|
||||
@@ -41,7 +57,7 @@ Fixtures малы и детерминированы. Большие геодан
|
||||
|
||||
## Cesium adapter 1.143
|
||||
|
||||
Текущий reference adapter использует CesiumJS `1.143.0`. Он загружается отдельным lazy chunk только при открытии Map Page и преобразует fixture в реальные Cesium entities: points, labels, routes, tracks, zones и selection. Без настроенного ion gateway используется development fallback `WGS84 globe + OpenStreetMap imagery`.
|
||||
Текущий reference adapter использует CesiumJS `1.143.0`. Он загружается отдельным lazy chunk только при открытии Map Page и преобразует только declared Application bindings в реальные Cesium entities. Пустая Map Page не содержит domain entities.
|
||||
|
||||
Server-side runtime contract:
|
||||
|
||||
@@ -82,7 +98,8 @@ Runtime tile cache не является исходным кодом и не х
|
||||
## Live data-product runtime
|
||||
|
||||
`Map Page` хранит только provider-neutral binding: `dataProductId`, approved
|
||||
semantic types, field projection и `slotId` (`points` для live point entities).
|
||||
semantic types, field projection, `presentationProfileId` и `slotId` (`points`
|
||||
для live point entities).
|
||||
При открытии Application page browser делает same-origin запрос к Foundry:
|
||||
|
||||
```text
|
||||
@@ -94,6 +111,9 @@ runtime. При первом exact consumer apply Foundry генерирует t
|
||||
передаёт EDP только его digest в запросе с отдельной service-подписью; EDP сам
|
||||
разрешает unique active writer scope и fail-closed отклоняет ambiguity. Legacy
|
||||
root-owned deployment directory используется только как совместимый fallback.
|
||||
При смене versioned Data Product Foundry создаёт successor reader generation,
|
||||
bootstrap-ит новый snapshot и только затем отзывает predecessor; существующий
|
||||
grant никогда не переписывается другим request hash внутри одного поколения.
|
||||
Browser, manifest и Cesium adapter не получают provider
|
||||
endpoint, tenant/connection scope, reader token или raw provider payload.
|
||||
Сначала server-owned Foundry consumer коммитит snapshot, затем применяет patch
|
||||
@@ -104,3 +124,13 @@ history route (`from/to/resolution/sourceIds/cursor`) через тот же BFF
|
||||
занимает общую L2 execution queue. Renderer держит отдельный `CustomDataSource`
|
||||
на binding и обновляет stable entity id без пересоздания viewer. Sampling и
|
||||
retention остаются политикой Data Plane, а не Map Template.
|
||||
|
||||
`fleet.positions.current.v2@2.0.0` является первым state-aware moving-object
|
||||
контрактом. Пользовательский status contract ограничен
|
||||
`availability_state=online|offline` и `motion_state=moving|stationary`;
|
||||
границы берутся из настроек объекта Gelios (`lostConnectionTimeValue` и
|
||||
`minimumMovementSpeed`), а не из придуманных Foundry thresholds. Технические
|
||||
`position_state`, `freshness_state` и `state_policy_version` могут оставаться в
|
||||
факте для quality/diagnostics, но не образуют дополнительные UI-фильтры. Цвет,
|
||||
геометрия таргета, label и порядок фильтров остаются в Foundry presentation
|
||||
profile.
|
||||
|
||||
Reference in New Issue
Block a user