feat(foundry): complete HGeoZone live layer

This commit is contained in:
Codex
2026-07-22 09:25:32 +03:00
parent de060c105b
commit 309cddef73
9 changed files with 391 additions and 83 deletions
+16
View File
@@ -144,6 +144,22 @@ Endpoint response содержит публичный URL, attribution, тип
Master token или asset credential в этом URL отсутствует. Map Gateway добавляет credential server-side только после cache lookup и только если действительно нужен upstream request.
### 4.3 Live domain layers
Map data-product binding разрешён только для live-data слотов шаблона:
`points` (`entity-stream`) и `zones` (`zone-stream`). Оба слота используют один
provider-neutral snapshot/patch transport, но разные renderer adapters.
`map.zone` не превращается в Cesium-specific сущность и не получает отдельный
ontology type `HGeoZone`. HGeoZone — имя проекционного adapter layer в Foundry:
Polygon/MultiPolygon facts пакетируются группами ограниченного размера в
`GroundPrimitive`, все кольца границ — в `GroundPolylinePrimitive`. Заливка,
граница и их прозрачности читаются из versioned Map presentation profile.
Per-entity `PolygonGraphics` для массового слоя геозон не является production
путём. Stable runtime entity id сохраняется для selection/focus, а изменение
цвета обновляет per-instance attributes без перестройки геометрии; изменение
толщины границы или cursor создаёт новое bounded batch generation.
## 5. Credential model
### 5.1 Cesium Ion master token
+12 -7
View File
@@ -27,7 +27,7 @@ Engine/NDC остаётся средой создания и исполнени
- ready/loading/empty/stale/error/offline states.
Размеры и внешний вид разновидностей сущностей задаются ссылками на
`styleProfiles`. Для live entity-stream Application page хранит отдельные
`styleProfiles`. Для live `entity-stream` и `zone-stream` Application page хранит отдельные
versioned `presentationProfiles`, а binding выбирает один из них через
`presentationProfileId`. Это позволяет одному доменному типу иметь разные
подтверждённые варианты, не создавая новый renderer-specific тип.
@@ -89,17 +89,17 @@ Runtime tile cache не является исходным кодом и не х
Дальше:
1. уточнить единый Label Style contract и варианты размеров уже на живой сцене;
2. спроектировать batching/instancing contract для больших потоков объектов и геозон;
2. расширить существующий HGeoZone batching contract явной spatial tiling-политикой для десятков тысяч геозон;
3. вынести development gateway в `platform/services/map-gateway` и подключить persistent cache;
4. добавить реальный Gaussian Splat 3D Tiles acceptance asset;
5. расширить entity-stream adapter с `points` на traces, routes и zones;
5. добавить специализированные adapters для traces и routes;
6. оформить renderer adapter capability matrix для Cesium и будущих providers.
## Live data-product runtime
`Map Page` хранит только provider-neutral binding: `dataProductId`, approved
semantic types, field projection, `presentationProfileId` и `slotId` (`points`
для live point entities).
semantic types, field projection, `presentationProfileId` и `slotId`: `points`
для live point entities или `zones` для polygon/multipolygon `map.zone`.
При открытии Application page browser делает same-origin запрос к Foundry:
```text
@@ -122,8 +122,13 @@ events с exact cursor и только после commit делает fan-out в
создают несколько upstream EDP subscriptions. Timeline использует provider-neutral
history route (`from/to/resolution/sourceIds/cursor`) через тот же BFF и не
занимает общую L2 execution queue. Renderer держит отдельный `CustomDataSource`
на binding и обновляет stable entity id без пересоздания viewer. Sampling и
retention остаются политикой Data Plane, а не Map Template.
на point binding и обновляет stable entity id без пересоздания viewer. `zones`
рендерятся отдельным HGeoZone ground-projection layer: Polygon/MultiPolygon
пакуются ограниченными batches в Cesium ground primitives, а границы — в
ground-polyline primitives. Это renderer adapter, не новый тип онтологии:
источником истины остаётся `map.zone`, а цвета и прозрачности остаются в
provider-neutral presentation profile. Sampling и retention остаются политикой
Data Plane, а не Map Template.
`fleet.positions.current.v2@2.0.0` является первым state-aware moving-object
контрактом. Пользовательский status contract ограничен