wu-sheng opened a new pull request, #24:
URL: https://github.com/apache/skywalking-horizon-ui/pull/24

   ## Summary
   
   A standalone WebGL view at `/3d/map` that stacks every OAP layer's
   services as cubes onto configurable **tiers** (apps / service mesh /
   middleware / infra), with live traffic, alarm beacons, and call
   relationships drawn between them. Plus an admin config editor and an
   operator guide.
   
   This turns the earlier 3D map PoC into a complete, config-driven feature.
   
   ## What's included
   
   **View (`/3d/map`, standalone full-screen, verb `infra-3d:read`)**
   - Config-driven tiers + per-layer color (replaces the hard-coded 3-plane 
PoC).
   - Per-cube traffic chips from a staged, chunked MQE fetch; chips share the 
cube's depth, hide when zoomed out or occluded by an upper tier.
   - Past-20m alarm beacon — a pulsing red marker on the cube corner; the cube 
keeps its layer color.
   - Three edge classes: in-layer calls (cyan + animated packets), cross-layer 
same-tier calls (orange, arrowed), and selection-gated hierarchy links (gray) 
showing a selected cube's cross-tier identity.
   - Per-zone project logo stamped into the tier surface as a baked texture 
(Istio + Kubernetes use their project marks).
   - Bottom loading-timeline strip (services → templates → topologies → layout 
→ metrics) with per-stage detail drawers.
   - Side panel simplified to tiers only (focus + show/hide per tier).
   
   **Admin (`/admin/3d-map`, verb `infra-3d:write`)**
   - Structured config editor over the live OAP layer catalog: global + 
per-tier layer filters, tier ordering, per-layer color, traffic MQE (topology 
server/client or single load), edge styling, plus an advanced raw-JSON view.
   
   **BFF**
   - Bundled 3D-map config (4 tiers, 52 layers; traffic MQEs seeded from layer 
dashboard templates) with a file-backed override store.
   - `GET`/`POST /api/infra-3d/config` (+ bundled baseline) with strict zod 
validation; `POST /api/infra-3d/metrics` for batched per-service MQE.
   - Verbs `infra-3d:read` (all roles) and `infra-3d:write` (operator/admin).
   
   **Incidental fix**
   - Setup-store `ensure()` ran its reconciliation (incl. an unconditional 
`headerColumns` reassignment) on every call; reading it from a computed 
produced "Maximum recursive updates exceeded" and froze layer pages. 
Reconciliation is now once-per-snapshot and `useLandingOrder` reads priority 
side-effect-free.
   - `RuleCard.vue` `statusLabel` switched to a keyed record (removes a 
non-returning computed lint error on the default branch).
   
   **Docs**
   - Operator guide: `docs/operate/infra-3d-map.md` (feature overview + what 
tiers are + the four bundled tiers), linked in `docs/menu.yml`.
   
   ## Test plan
   
   - [x] `tsc --noEmit` clean (BFF + UI)
   - [x] UI unit tests (69) + BFF unit tests (80) pass
   - [x] `eslint` 0 errors (UI + BFF)
   - [x] `vite build` succeeds
   - [x] `license-eye header check` clean (0 invalid)
   - [x] Validated against the live Apache demo OAP: config GET/POST 
round-trip, per-service `/api/infra-3d/metrics` returns real RPM values, alarm 
beacons reflect the 20m alarm feed
   - [ ] Reviewer: open `/3d/map` and `/admin/3d-map`, confirm tier layout, 
traffic chips, alarm beacons, and edge rendering


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to