From 75b71cec29e2d95fee34df778a0a7615773d944d Mon Sep 17 00:00:00 2001 From: hezhaohui Date: Fri, 17 Jul 2026 13:55:14 +0800 Subject: [PATCH 1/8] =?UTF-8?q?feat(subsystem):=20=E6=B7=BB=E5=8A=A0=20Sup?= =?UTF-8?q?erset=20=E6=97=A5=E5=BF=97=E6=95=B0=E6=8D=AE=E5=8F=AF=E8=A7=86?= =?UTF-8?q?=E5=8C=96=E5=AD=90=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 mockSubsystems 中添加 Superset 子系统配置(id: 7, 可观测性分类) - 在侧边栏子系统导航列表中添加 Superset 入口 - 添加青色系 CSS 变量(--tag-cyan-*、--logo-ss-bg)用于 Superset 主题 - 更新 SubsystemCard 和 SubsystemDetail 的颜色映射 - 添加 Superset 详情页描述文案 状态设置为 integrating,支持 SSO 单点登录 --- frontend/src/api/subsystem.ts | 12 ++++++++++++ frontend/src/components/Layout/AppSidebar.vue | 2 ++ frontend/src/components/SubsystemCard.vue | 2 ++ frontend/src/styles/variables.css | 12 ++++++++++++ frontend/src/views/subsystem/SubsystemDetail.vue | 3 +++ 5 files changed, 31 insertions(+) diff --git a/frontend/src/api/subsystem.ts b/frontend/src/api/subsystem.ts index 752b08c..7316944 100644 --- a/frontend/src/api/subsystem.ts +++ b/frontend/src/api/subsystem.ts @@ -93,6 +93,18 @@ const mockSubsystems: Subsystem[] = [ status: 'integrated', sso_enabled: true, }, + { + id: 7, + name: 'Superset', + label: '日志数据可视化', + description: '日志数据探索与可视化分析平台,支持多数据源接入和丰富的图表展示。', + icon: 'SS', + url: 'https://superset.xinfra.internal', + domain: 'superset.xinfra.internal', + category: '可观测性', + status: 'integrating', + sso_enabled: true, + }, ] export const subsystemApi = { diff --git a/frontend/src/components/Layout/AppSidebar.vue b/frontend/src/components/Layout/AppSidebar.vue index 5680ba2..c04e827 100644 --- a/frontend/src/components/Layout/AppSidebar.vue +++ b/frontend/src/components/Layout/AppSidebar.vue @@ -92,6 +92,7 @@ const subsystems = [ { name: 'Apollo', label: '配置中心', icon: 'AP' }, { name: 'qpass', label: '七牛统一运维平台', icon: 'QP' }, { name: 'Grafana', label: '指标可视化平台', icon: 'GF' }, + { name: 'Superset', label: '日志数据可视化', icon: 'SS' }, ] const isPortalActive = computed(() => { @@ -106,6 +107,7 @@ function dotColor(icon: string): string { AP: 'var(--tag-blue-text)', QP: 'var(--tag-amber-text)', GF: 'var(--warn)', + SS: 'var(--tag-cyan-text)', } return colors[icon] || 'var(--text-dim)' } diff --git a/frontend/src/components/SubsystemCard.vue b/frontend/src/components/SubsystemCard.vue index 19c7c87..8b4d1d9 100644 --- a/frontend/src/components/SubsystemCard.vue +++ b/frontend/src/components/SubsystemCard.vue @@ -33,6 +33,7 @@ const bgColor = computed(() => { AP: 'var(--logo-ap-bg)', QP: 'var(--logo-qp-bg)', GF: 'var(--logo-gf-bg)', + SS: 'var(--logo-ss-bg)', } return colors[props.system.icon] || 'var(--bg-panel-2)' }) @@ -45,6 +46,7 @@ const iconColor = computed(() => { AP: 'var(--tag-blue-text)', QP: 'var(--tag-amber-text)', GF: 'var(--warn)', + SS: 'var(--tag-cyan-text)', } return colors[props.system.icon] || 'var(--text-mid)' }) diff --git a/frontend/src/styles/variables.css b/frontend/src/styles/variables.css index 4eb814e..78d5f31 100644 --- a/frontend/src/styles/variables.css +++ b/frontend/src/styles/variables.css @@ -61,6 +61,11 @@ --tag-green-bg: #E8FFEA; --tag-green-border: #9FD9A8; + /* 标签/徽章颜色 - 青色系 */ + --tag-cyan-text: #0FC6C2; + --tag-cyan-bg: #E8FFFB; + --tag-cyan-border: #87E8DE; + /* 节点单元格颜色 */ --node-empty-bg: #F0F2F5; --node-a-bg: #E8FFEA; @@ -90,6 +95,7 @@ --logo-ap-bg: #E8F3FF; --logo-qp-bg: #FFF7E6; --logo-gf-bg: #F5F7FA; + --logo-ss-bg: #E8FFFB; /* 发光/阴影效果 */ --accent-glow: rgba(0, 180, 42, 0.3); @@ -158,6 +164,11 @@ --tag-green-bg: #0F261D; --tag-green-border: var(--accent-dim); + /* 标签/徽章颜色 - 青色系 */ + --tag-cyan-text: #5CFFFF; + --tag-cyan-bg: #0A2626; + --tag-cyan-border: #1A5C5C; + /* 节点单元格颜色 */ --node-empty-bg: #1E2532; --node-a-bg: #13261F; @@ -187,6 +198,7 @@ --logo-ap-bg: #1C2A3A; --logo-qp-bg: #241B0A; --logo-gf-bg: #1B202B; + --logo-ss-bg: #0A2626; /* 发光/阴影效果 */ --accent-glow: rgba(63, 224, 165, 0.3); diff --git a/frontend/src/views/subsystem/SubsystemDetail.vue b/frontend/src/views/subsystem/SubsystemDetail.vue index 38315da..ab651c6 100644 --- a/frontend/src/views/subsystem/SubsystemDetail.vue +++ b/frontend/src/views/subsystem/SubsystemDetail.vue @@ -88,6 +88,7 @@ const bgColor = computed(() => { AP: 'var(--logo-ap-bg)', QP: 'var(--logo-qp-bg)', GF: 'var(--logo-gf-bg)', + SS: 'var(--logo-ss-bg)', } return colors[system.value.icon] || 'var(--bg-panel-2)' }) @@ -101,6 +102,7 @@ const iconColor = computed(() => { AP: 'var(--tag-blue-text)', QP: 'var(--tag-amber-text)', GF: 'var(--warn)', + SS: 'var(--tag-cyan-text)', } return colors[system.value.icon] || 'var(--text-mid)' }) @@ -114,6 +116,7 @@ const detailDesc = computed(() => { Apollo: '统一管理多机房 Config Service Cluster 的配置发布、灰度、回滚与变更审计,所有机房配置项均可在此单一入口检索与编辑。', qpass: '七牛云内部系统。', Grafana: '对接 VictoriaMetrics 数据源,K8s / 容器 / 业务指标统一仪表盘展示。预置核心看板,支持自定义。', + Superset: '日志数据探索与可视化分析平台,支持多数据源接入和丰富的图表展示。用于日志数据分析和可视化报表。', } return descs[system.value.name] || system.value.description }) From 454978be7bae945c8868c2471b57ef4009141c79 Mon Sep 17 00:00:00 2001 From: hezhaohui Date: Fri, 17 Jul 2026 14:01:33 +0800 Subject: [PATCH 2/8] =?UTF-8?q?feat(subsystem):=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=AD=90=E7=B3=BB=E7=BB=9F=E6=8E=A5=E5=85=A5=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Wayne 和 CloudDM 状态设为 active(在线) - 其他子系统状态设为 integrating(接入改造中) - 状态文本统一调整为「在线」/「接入改造中」 - 非 active 状态的跳转按钮显示为灰色禁用状态 Co-authored-by: lx --- frontend/src/api/subsystem.ts | 10 +++--- frontend/src/components/SubsystemCard.vue | 4 +-- .../src/views/subsystem/SubsystemDetail.vue | 32 ++++++++++++++----- 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/frontend/src/api/subsystem.ts b/frontend/src/api/subsystem.ts index 7316944..c545f48 100644 --- a/frontend/src/api/subsystem.ts +++ b/frontend/src/api/subsystem.ts @@ -11,7 +11,7 @@ export interface Subsystem { url: string domain: string category: string - status: 'integrated' | 'integrating' + status: 'active' | 'integrated' | 'integrating' sso_enabled: boolean } @@ -30,7 +30,7 @@ const mockSubsystems: Subsystem[] = [ url: 'https://wayne.qiniu.com', domain: 'wayne.xinfra.internal', category: '容器管理', - status: 'integrated', + status: 'active', sso_enabled: true, }, { @@ -42,7 +42,7 @@ const mockSubsystems: Subsystem[] = [ url: 'https://clouddm.qiniu.com', domain: 'clouddm.xinfra.internal', category: '数据库', - status: 'integrated', + status: 'active', sso_enabled: true, }, { @@ -78,7 +78,7 @@ const mockSubsystems: Subsystem[] = [ url: 'https://qpass.xinfra.internal', domain: 'qpass.xinfra.internal', category: '内部系统', - status: 'integrated', + status: 'integrating', sso_enabled: true, }, { @@ -90,7 +90,7 @@ const mockSubsystems: Subsystem[] = [ url: 'https://grafana.xinfra.internal', domain: 'grafana.xinfra.internal', category: '可观测性', - status: 'integrated', + status: 'integrating', sso_enabled: true, }, { diff --git a/frontend/src/components/SubsystemCard.vue b/frontend/src/components/SubsystemCard.vue index 8b4d1d9..074d21b 100644 --- a/frontend/src/components/SubsystemCard.vue +++ b/frontend/src/components/SubsystemCard.vue @@ -11,8 +11,8 @@

{{ system.description }}

- - {{ system.status === 'integrated' ? 'LDAP 原生配置接入 · 零代码' : 'LDAP 接入改造中' }} + + {{ system.status === 'active' ? 'LDAP 原生配置接入 · 在线' : 'LDAP 接入改造中' }}
diff --git a/frontend/src/views/subsystem/SubsystemDetail.vue b/frontend/src/views/subsystem/SubsystemDetail.vue index ab651c6..ceea24f 100644 --- a/frontend/src/views/subsystem/SubsystemDetail.vue +++ b/frontend/src/views/subsystem/SubsystemDetail.vue @@ -5,16 +5,16 @@

{{ system.name }}

{{ system.description }} · {{ system.domain }}

- - {{ system.status === 'integrated' ? '● 已接入' : '● 接入中' }} + + {{ system.status === 'active' ? '● 在线' : '● 接入中' }}
接入状态
-
- {{ system.status === 'integrated' ? '已接入' : '接入中' }} +
+ {{ system.status === 'active' ? '在线' : '接入中' }}
{{ system.category }}
@@ -50,11 +50,17 @@

{{ detailDesc }}

- - {{ system.status === 'integrated' ? 'LDAP 原生配置接入 · 已上线' : 'LDAP 接入改造中' }} + + {{ system.status === 'active' ? 'LDAP 原生配置接入 · 在线' : 'LDAP 接入改造中' }}
-
@@ -172,4 +178,14 @@ const openPortal = async () => { .btn-primary:hover { opacity: 0.85; } + +.btn-disabled { + background: var(--text-dim); + cursor: not-allowed; + opacity: 0.6; +} + +.btn-disabled:hover { + opacity: 0.6; +} From 0c5628358fbe582473f4b0e3c5c5a4930169a529 Mon Sep 17 00:00:00 2001 From: hezhaohui Date: Fri, 17 Jul 2026 14:05:14 +0800 Subject: [PATCH 3/8] =?UTF-8?q?feat(subsystem):=20=E5=AD=90=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E5=8D=A1=E7=89=87=E7=82=B9=E5=87=BB=E8=B7=B3=E8=BD=AC?= =?UTF-8?q?=E5=88=B0=E8=AF=A6=E6=83=85=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除 SubsystemCard 直接打开外部链接的逻辑 - 点击卡片后路由跳转到 /subsystem/detail/:name - 用户需在详情页点击按钮后才会访问外部系统 --- frontend/src/components/SubsystemCard.vue | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/frontend/src/components/SubsystemCard.vue b/frontend/src/components/SubsystemCard.vue index 074d21b..25719b7 100644 --- a/frontend/src/components/SubsystemCard.vue +++ b/frontend/src/components/SubsystemCard.vue @@ -19,12 +19,15 @@ From b58e1d5c3ce68a4e1f8bdbb63a69d853598c72d3 Mon Sep 17 00:00:00 2001 From: hezhaohui Date: Fri, 17 Jul 2026 14:11:09 +0800 Subject: [PATCH 4/8] =?UTF-8?q?refactor(monitor):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=9B=91=E6=8E=A7=E5=91=8A=E8=AD=A6=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 监控页面标题改为监控看板 - 告警页面标题改为告警信息 - 告警页面删除告警通道面板 - 侧边栏导航文本同步更新 --- frontend/src/components/Layout/AppSidebar.vue | 4 +-- frontend/src/router/index.ts | 4 +-- frontend/src/views/monitor/Alert.vue | 27 ++----------------- frontend/src/views/monitor/Monitor.vue | 2 +- 4 files changed, 7 insertions(+), 30 deletions(-) diff --git a/frontend/src/components/Layout/AppSidebar.vue b/frontend/src/components/Layout/AppSidebar.vue index c04e827..69fb890 100644 --- a/frontend/src/components/Layout/AppSidebar.vue +++ b/frontend/src/components/Layout/AppSidebar.vue @@ -30,10 +30,10 @@