You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2026/05/12 02:41:33 UTC
(skywalking-horizon-ui) 16/18: ui: operate section is vantage parity, drop audit log viewer
This is an automated email from the ASF dual-hosted git repository.
wu-sheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-horizon-ui.git
commit 34a776bc990fefdbd290901a7a98d15b05f53bc4
Author: Wu Sheng <wu...@foxmail.com>
AuthorDate: Tue May 12 10:33:33 2026 +0800
ui: operate section is vantage parity, drop audit log viewer
---
apps/ui/src/components/shell/AppSidebar.vue | 12 ++++++++----
apps/ui/src/router/index.ts | 17 ++++++++++-------
2 files changed, 18 insertions(+), 11 deletions(-)
diff --git a/apps/ui/src/components/shell/AppSidebar.vue b/apps/ui/src/components/shell/AppSidebar.vue
index 948e983..982db3e 100644
--- a/apps/ui/src/components/shell/AppSidebar.vue
+++ b/apps/ui/src/components/shell/AppSidebar.vue
@@ -43,16 +43,20 @@ interface NavRow {
badge?: { text: string; kind?: 'ok' | 'warn' | 'err' | 'info' };
}
-// Cross-layer operations stay global.
+// Operate = OAP runtime operations (vantage-parity) + alarms.
+// Trace search is per-layer (lives under /layer/:key/traces) so it's NOT here.
const operate: NavRow[] = [
{ icon: 'alert', label: 'Alarms', to: '/operate/alarms', badge: { text: '7', kind: 'err' } },
- { icon: 'trace', label: 'Trace search', to: '/operate/traces' },
+ { icon: 'svc', label: 'Cluster status', to: '/operate/cluster' },
+ { icon: 'set', label: 'DSL catalog', to: '/operate/dsl' },
+ { icon: 'metric', label: 'Inspect', to: '/operate/inspect' },
+ { icon: 'flame', label: 'Live debug', to: '/operate/live-debug' },
+ { icon: 'trace', label: 'OAL viewer', to: '/operate/oal' },
+ { icon: 'download', label: 'Dump', to: '/operate/dump' },
];
const admin: NavRow[] = [
- { icon: 'svc', label: 'Cluster status', to: '/cluster' },
{ icon: 'user', label: 'Users', to: '/admin/users' },
{ icon: 'set', label: 'Roles', to: '/admin/roles' },
- { icon: 'log', label: 'Audit log', to: '/admin/audit' },
];
</script>
diff --git a/apps/ui/src/router/index.ts b/apps/ui/src/router/index.ts
index 41c949a..d297819 100644
--- a/apps/ui/src/router/index.ts
+++ b/apps/ui/src/router/index.ts
@@ -85,15 +85,18 @@ function layerSubRoutes(): RouteRecordRaw[] {
const shellRoutes: RouteRecordRaw[] = [
{ path: '', name: 'home', component: () => import('@/views/landing/LandingView.vue') },
...layerSubRoutes(),
- // Cross-layer operate
- { path: 'operate/alarms', component: placeholder, props: { title: 'Alarms', phase: 'Phase 5', note: 'Read-only; recovery is backend-auto.' } },
- { path: 'operate/traces', component: placeholder, props: { title: 'Trace search', phase: 'Phase 5', note: 'Cross-layer trace search. Per-layer trace explorers live under /layer/:key/traces.' } },
- { path: 'operate/traces/:traceId', component: placeholder, props: (r) => ({ title: `Trace · ${r.params.traceId}`, phase: 'Phase 5' }) },
- // Admin
- { path: 'cluster', component: placeholder, props: { title: 'Cluster status', phase: 'Phase 6 / 7', note: 'Module activity matrix · storage health · receiver activity · effective config tree · TTL grid.' } },
+ // Operate (vantage-parity) — OAP runtime operations
+ { path: 'operate/alarms', component: placeholder, props: { title: 'Alarms', phase: 'Phase 5', note: 'Read-only; recovery is backend-auto. Live debug card via admin REST.' } },
+ { path: 'operate/cluster', component: placeholder, props: { title: 'Cluster status', phase: 'Phase 6 / 7', note: 'Module activity matrix · storage health · receiver activity · effective config tree · TTL grid.' } },
+ { path: 'operate/dsl', component: placeholder, props: { title: 'DSL catalog', phase: 'Phase 6', note: 'MAL / LAL rule catalog + Monaco editor with diff and revert-to-bundled.' } },
+ { path: 'operate/dsl/:catalog/:name', component: placeholder, props: (r) => ({ title: `Edit · ${r.params.name}`, phase: 'Phase 6' }) },
+ { path: 'operate/inspect', component: placeholder, props: { title: 'Inspect', phase: 'Phase 6', note: 'OAP metric catalog browse + MQE ad-hoc charts with rule attribution.' } },
+ { path: 'operate/live-debug/:tab(mal|lal|oal)?', component: placeholder, props: (r) => ({ title: `Live debug · ${r.params.tab ?? 'mal'}`, phase: 'Phase 6' }) },
+ { path: 'operate/oal', component: placeholder, props: { title: 'OAL viewer', phase: 'Phase 6', note: 'Read-only OAL files with line-numbered syntax highlighting.' } },
+ { path: 'operate/dump', component: placeholder, props: { title: 'Dump', phase: 'Phase 6', note: 'Stream OAP runtime-rule dump as tar.gz.' } },
+ // Admin (users + roles only; no audit log UI — BFF JSONL is server-side forensic only)
{ path: 'admin/users', component: placeholder, props: { title: 'Users', phase: 'Phase 7' } },
{ path: 'admin/roles', component: placeholder, props: { title: 'Roles & permissions', phase: 'Phase 7' } },
- { path: 'admin/audit', component: placeholder, props: { title: 'Audit log', phase: 'Phase 7' } },
];
const router = createRouter({