From 0b1d64bc058adfd8cb4d577c58ac487a1a0c8794 Mon Sep 17 00:00:00 2001 From: zch Date: Thu, 23 Apr 2026 17:34:25 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=80=A7=E8=83=BD=E4=BC=98=E5=8C=96):=20?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=9B=BE=E8=A1=A8=E6=B8=B2=E6=9F=93=E6=8C=89?= =?UTF-8?q?=E5=B8=A7=E6=8B=86=E5=88=86=E4=BB=A5=E6=8F=90=E5=8D=87=E4=B8=BB?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B=E5=93=8D=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refactor(位移看板): 移除多指标切换逻辑并收敛为位移专属 docs(告警规则): 增加回差和持续秒数的详细说明与提示 perf(图表渲染): 引入renderInFrames工具实现渐进式渲染 fix(阈值配置): 移除告警级别字段避免与规则页重复维护 style(代码结构): 清理位移看板中残留的多指标相关代码 chore(类型定义): 更新DisplacementBoardQuery类型定义 test(组件测试): 移除平行坐标图相关测试用例 --- src/api/ems/types.ts | 50 +++- .../ems/base/monitorMetricThreshold/index.vue | 91 ++++++- .../ems/record/recordAlarmRule/index.vue | 223 +++++++----------- .../ems/report/tempBoard/advanced/index.vue | 8 +- .../ems/report/tempBoard/comparison/index.vue | 80 ++++--- .../tempBoard/components/renderInFrames.ts | 63 +++++ .../tempBoard/components/useChartResize.ts | 41 ++-- .../report/tempBoard/distribution/index.vue | 13 +- .../ems/report/tempBoard/overview/index.vue | 125 +++++----- .../tempBoard/performance-optimization.md | 1 + .../ems/report/tempBoard/trend/index.vue | 21 +- .../report/vibrationBoard/advanced/index.vue | 78 +----- .../report/vibrationBoard/anomaly/index.vue | 18 +- .../vibrationBoard/comparison/index.vue | 13 +- .../components/VibrationBoardFilter.vue | 9 +- .../components/useVibrationBoardQueryState.ts | 60 ++--- .../vibrationBoard/distribution/index.vue | 13 +- .../report/vibrationBoard/overview/index.vue | 16 +- .../ems/report/vibrationBoard/trend/index.vue | 17 +- 19 files changed, 510 insertions(+), 430 deletions(-) create mode 100644 src/views/ems/report/tempBoard/components/renderInFrames.ts diff --git a/src/api/ems/types.ts b/src/api/ems/types.ts index 6a8c169..7e5323b 100644 --- a/src/api/ems/types.ts +++ b/src/api/ems/types.ts @@ -133,9 +133,23 @@ export interface VibrationBoardQuery extends EmsQuery { /** * 位移专属看板查询参数。 - * 当前仍兼容 vibrationParam 字段,但业务上只允许 vibrationDisplacement。 + * + *

不再继承 VibrationBoardQuery,也不再携带 vibrationParam 字段: + * 位移看板是单指标专属链路,后端 DisplacementBoardQueryBo 不接受指标切换, + * 前端再继续传 vibrationParam 只会让“位移专属”语义出现歧义。

*/ -export interface DisplacementBoardQuery extends VibrationBoardQuery {} +export interface DisplacementBoardQuery extends EmsQuery { + monitorId?: EmsId | string; + monitorIds?: Array | string; + samplingInterval?: number | string; + highThreshold?: EmsDecimalValue; + warningThreshold?: EmsDecimalValue; + minContinuousSamples?: EmsId | string; + rapidRiseThreshold?: EmsDecimalValue; + stddevThreshold?: EmsDecimalValue; + beginRecordTime?: EmsDateValue; + endRecordTime?: EmsDateValue; +} /** * 实时数据查询页只关心“最新一条”口径,所以把树节点范围、关键字和时效阈值单独收口。 @@ -302,7 +316,19 @@ export interface EmsEntity extends BaseEntity { alarmLower?: EmsDecimalValue; recoverUpper?: EmsDecimalValue; recoverLower?: EmsDecimalValue; + /** + * 回差值(Hysteresis / 死区):在告警阈值附近设置的缓冲区间,用于防止测量值在阈值线上抖动导致告警反复触发/恢复。 + * 判定规则:越界后只有回落到 (alarmUpper - hysteresis) 以下或 (alarmLower + hysteresis) 以上才判定为恢复。 + * 示例:alarmUpper = 100,hysteresis = 5 → 值 ≥ 100 触发告警,只有值 ≤ 95 才视为恢复。 + * 单位:与被测量同单位;为 null 或 0 表示不启用回差保护。 + */ hysteresis?: EmsDecimalValue; + /** + * 持续触发秒数(Duration Seconds):测量值必须连续越界达到该秒数才会正式触发告警,用于过滤瞬时尖峰造成的误报。 + * 判定规则:越界计时累计 ≥ durationSec 才落库并推送;中途一旦恢复则计时清零。 + * 示例:durationSec = 30 → 连续 28 秒越界后恢复不告警;连续 30 秒越界在第 30 秒触发告警。 + * 单位:秒;为 null 或 0 表示不延迟,单采样越界即触发。 + */ durationSec?: EmsId; notifyGroupId?: EmsId; remark?: string; @@ -676,7 +702,17 @@ export interface EmsRecordAlarmRuleVO extends EmsEntity { alarmLower?: EmsDecimalValue; recoverUpper?: EmsDecimalValue; recoverLower?: EmsDecimalValue; + /** + * 回差值(Hysteresis / 死区):在 alarmUpper / alarmLower 附近设置的缓冲区间,防止测量值在阈值线上抖动导致告警反复触发/恢复。 + * 示例:alarmUpper = 100,hysteresis = 5 → 值 ≥ 100 触发告警,只有值 ≤ 95 才视为恢复。 + * 单位:与被测量同单位;为 null 或 0 表示不启用回差保护。 + */ hysteresis?: EmsDecimalValue; + /** + * 持续触发秒数(Duration Seconds):测量值必须连续越界达到该秒数才会触发告警,用于过滤瞬时尖峰造成的误报。 + * 示例:durationSec = 30 → 连续 30 秒越界才触发告警;中途恢复则计时清零。 + * 单位:秒;为 null 或 0 表示不延迟,单采样越界即触发。 + */ durationSec?: EmsId; alarmLevel?: string; notifyGroupId?: EmsId; @@ -730,7 +766,17 @@ export interface MonitorMetricThresholdVO extends EmsEntity { warnLower?: EmsDecimalValue; alarmUpper?: EmsDecimalValue; alarmLower?: EmsDecimalValue; + /** + * 回差值(Hysteresis / 死区):在告警阈值附近设置缓冲区间,防止测量值在阈值线上抖动导致告警反复触发/恢复。 + * 示例:alarmUpper = 100,hysteresis = 5 → 值 ≥ 100 触发告警,只有值 ≤ 95 才视为恢复。 + * 单位:与被测量同单位;为 null 或 0 表示不启用回差保护。 + */ hysteresis?: EmsDecimalValue; + /** + * 持续触发秒数(Duration Seconds):测量值必须连续越界达到该秒数才会触发告警,用于过滤瞬时尖峰造成的误报。 + * 示例:durationSec = 30 → 连续 30 秒越界才触发告警;中途恢复则计时清零。 + * 单位:秒;为 null 或 0 表示不延迟,单采样越界即触发。 + */ durationSec?: EmsId; alarmLevel?: string; notifyGroupId?: EmsId; diff --git a/src/views/ems/base/monitorMetricThreshold/index.vue b/src/views/ems/base/monitorMetricThreshold/index.vue index a102663..09e3fd4 100644 --- a/src/views/ems/base/monitorMetricThreshold/index.vue +++ b/src/views/ems/base/monitorMetricThreshold/index.vue @@ -112,7 +112,8 @@ - + +