From 0b78bf415d7dd74e411b9558d78cd9917e250284 Mon Sep 17 00:00:00 2001 From: harsen Date: Thu, 30 Apr 2026 11:56:09 +0800 Subject: [PATCH] Fix(alarm): TAP-11387 harden alarm monitor display Handle source heartbeat idle alarm records that may not map to an existing DAG node or known frontend alarm dictionaries. Guard node alarm aggregation and fall back to raw alarm level and status values when labels are missing. Refs: TAP-11387 --- .../components/monitor/components/Alert.vue | 18 +++++++++++------- packages/types/src/daas-components.d.ts | 4 ---- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/dag/src/components/monitor/components/Alert.vue b/packages/dag/src/components/monitor/components/Alert.vue index 6c0ccfffc..04efca5be 100644 --- a/packages/dag/src/components/monitor/components/Alert.vue +++ b/packages/dag/src/components/monitor/components/Alert.vue @@ -122,7 +122,7 @@ export default { const alarmList = this.alarmData?.alarmList || [] const totals = alarmList.length alarmList.forEach((el) => { - if (el.nodeId) { + if (el.nodeId && nodeMap[el.nodeId]) { nodeMap[el.nodeId].num++ } }) @@ -161,9 +161,11 @@ export default { } return ( data.map((t) => { - t.levelLabel = ALARM_LEVEL_MAP[t.level].text - t.levelType = ALARM_LEVEL_MAP[t.level].type - t.statusLabel = ALARM_STATUS_MAP[t.status].text + const level = ALARM_LEVEL_MAP[t.level] || {} + const status = ALARM_STATUS_MAP[t.status] || {} + t.levelLabel = level.text || t.level + t.levelType = level.type + t.statusLabel = status.text || t.status return t }) || [] ) @@ -185,9 +187,11 @@ export default { } this.list = data.map((t) => { - t.levelLabel = ALARM_LEVEL_MAP[t.level].text - t.levelType = ALARM_LEVEL_MAP[t.level].type - t.statusLabel = ALARM_STATUS_MAP[t.status].text + const level = ALARM_LEVEL_MAP[t.level] || {} + const status = ALARM_STATUS_MAP[t.status] || {} + t.levelLabel = level.text || t.level + t.levelType = level.type + t.statusLabel = status.text || t.status return t }) || [] }, diff --git a/packages/types/src/daas-components.d.ts b/packages/types/src/daas-components.d.ts index c40d047f6..fb47880ad 100644 --- a/packages/types/src/daas-components.d.ts +++ b/packages/types/src/daas-components.d.ts @@ -109,7 +109,6 @@ declare module 'vue' { ILucideChevronsRight: typeof import('~icons/lucide/chevrons-right')['default'] ILucideCircleAlert: typeof import('~icons/lucide/circle-alert')['default'] ILucideCircleCheck: typeof import('~icons/lucide/circle-check')['default'] - ILucideCircleInfo: typeof import('~icons/lucide/circle-info')['default'] ILucideCircleX: typeof import('~icons/lucide/circle-x')['default'] ILucideClock: typeof import('~icons/lucide/clock')['default'] ILucideCloudUpload: typeof import('~icons/lucide/cloud-upload')['default'] @@ -143,7 +142,6 @@ declare module 'vue' { ILucideLink2: typeof import('~icons/lucide/link2')['default'] ILucideList: typeof import('~icons/lucide/list')['default'] ILucideLoader: typeof import('~icons/lucide/loader')['default'] - ILucideLoader2: typeof import('~icons/lucide/loader2')['default'] ILucideMemoryStick: typeof import('~icons/lucide/memory-stick')['default'] ILucideMinus: typeof import('~icons/lucide/minus')['default'] ILucideMonitor: typeof import('~icons/lucide/monitor')['default'] @@ -323,7 +321,6 @@ declare global { const ILucideChevronsRight: typeof import('~icons/lucide/chevrons-right')['default'] const ILucideCircleAlert: typeof import('~icons/lucide/circle-alert')['default'] const ILucideCircleCheck: typeof import('~icons/lucide/circle-check')['default'] - const ILucideCircleInfo: typeof import('~icons/lucide/circle-info')['default'] const ILucideCircleX: typeof import('~icons/lucide/circle-x')['default'] const ILucideClock: typeof import('~icons/lucide/clock')['default'] const ILucideCloudUpload: typeof import('~icons/lucide/cloud-upload')['default'] @@ -357,7 +354,6 @@ declare global { const ILucideLink2: typeof import('~icons/lucide/link2')['default'] const ILucideList: typeof import('~icons/lucide/list')['default'] const ILucideLoader: typeof import('~icons/lucide/loader')['default'] - const ILucideLoader2: typeof import('~icons/lucide/loader2')['default'] const ILucideMemoryStick: typeof import('~icons/lucide/memory-stick')['default'] const ILucideMinus: typeof import('~icons/lucide/minus')['default'] const ILucideMonitor: typeof import('~icons/lucide/monitor')['default']