This is an automated email from the ASF dual-hosted git repository. wu-sheng pushed a commit to branch feat/infra-3d-live-pipeline in repository https://gitbox.apache.org/repos/asf/skywalking-horizon-ui.git
commit 0e54d1a3a8630999f77fbb7ed728c39e447054c1 Author: Wu Sheng <[email protected]> AuthorDate: Fri May 29 23:00:26 2026 +0800 docs(infra-3d): record live topology; drop stale 'not wired to live OAP' note --- CHANGELOG.md | 7 +++++++ apps/ui/src/features/infra-3d/CLAUDE.md | 15 +++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bf6bd9b..211d569 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -517,6 +517,13 @@ link into that layer's dashboard. the active scopes (`metrics 2h · alarms 20m · ↻ 1m`). An alarmed cube burns red with a radiating ripple, matched to its service by (layer, name) so only the firing service in the right tier is flagged. +- **Live topology.** The deployment structure is read live from OAP rather + than a bundled snapshot: each layer's service roster and service map are + fetched one at a time (low concurrency) and assembled into the scene, so + the map is correct on any deployment. It refreshes on the same one-minute + cycle — an unchanged structure updates metrics/alarms in place without + disturbing the camera, while a service appearing or disappearing rebuilds + the affected tier. The load progresses stage by stage in the status strip. - **Beacon mode.** A toolbar toggle dims every healthy cube to a wireframe ghost and lets only alarming cubes glow, so the services that are firing jump out instantly during an incident. diff --git a/apps/ui/src/features/infra-3d/CLAUDE.md b/apps/ui/src/features/infra-3d/CLAUDE.md index 2633b1f..d5d0bd0 100644 --- a/apps/ui/src/features/infra-3d/CLAUDE.md +++ b/apps/ui/src/features/infra-3d/CLAUDE.md @@ -474,10 +474,21 @@ raycaster's bounding box mid-pointer-event and made clicks miss / require a second tap). Same single `BoxGeometry` for every cube; every transition is a property change on the existing mesh. +## Live data vs. the snapshot + +The scene now reads its structure live from OAP by default: the pipeline's +`services` / `topologies` stages fetch each layer's roster + service map one +at a time (`useLiveTopology.ts`), assembling a `DemoTopology` that +`buildSceneGraph` consumes exactly like the snapshot. `data/demo-topology.json` +remains the **fallback** — rendered until the first sequential load lands, if +the load comes back empty, or when `?live=0` forces it for comparison. The +scene is re-keyed on a per-layer structure hash so an unchanged refresh keeps +the camera; only a roster/edge change rebuilds. The cross-layer hierarchy +(`hierarchy`) is still left empty in live mode — Smartscape peers are a later, +per-service fetch. + ## What this PoC is NOT -- **Not** wired to live OAP data yet. Demo data is a snapshot committed - in `data/demo-topology.json`. - **Not** showing cross-plane edges as static geometry — that's a future interaction. - **Not** persisting visibility / camera state across reloads.
