import assert from 'node:assert/strict' import { test } from 'node:test' import { createThresholdAlarmNoticeTracker } from '../src/utils/thresholdAlarmNoticeTracker.ts' test('关闭当前活动告警提示后,本轮持续超限不再重复告警', () => { const tracker = createThresholdAlarmNoticeTracker() tracker.record('oil-speed', 'notice-1', 'min-1|max-1') assert.equal(tracker.shouldCreate('oil-speed', 'min-1|max-1'), false) assert.equal(tracker.close('oil-speed', 'notice-1'), true) assert.equal(tracker.isAcknowledged('oil-speed', 'min-1|max-1'), true) assert.equal(tracker.shouldCreate('oil-speed', 'min-1|max-1'), false) assert.equal(tracker.shouldCreate('oil-speed', 'min-2|max-2'), true) }) test('关闭历史提示不会让当前活动告警重复提示', () => { const tracker = createThresholdAlarmNoticeTracker() tracker.record('oil-speed', 'notice-current', 'min-1|max-1') assert.equal(tracker.close('oil-speed', 'notice-history'), false) assert.equal(tracker.isAcknowledged('oil-speed', 'min-1|max-1'), false) assert.equal(tracker.shouldCreate('oil-speed', 'min-1|max-1'), false) }) test('检查通过后允许下一轮告警创建新提示', () => { const tracker = createThresholdAlarmNoticeTracker() tracker.record('oil-speed', 'notice-1', 'min-1|max-1') tracker.close('oil-speed', 'notice-1') assert.equal(tracker.shouldCreate('oil-speed', 'min-1|max-1'), false) tracker.pass('oil-speed') assert.equal(tracker.isAcknowledged('oil-speed', 'min-1|max-1'), false) assert.equal(tracker.shouldCreate('oil-speed', 'min-1|max-1'), true) }) test('不同指标的当前提示状态互不影响', () => { const tracker = createThresholdAlarmNoticeTracker() tracker.record('oil-speed', 'oil-notice', 'oil-1') tracker.record('well-pressure', 'pressure-notice', 'pressure-1') tracker.close('oil-speed', 'oil-notice') assert.equal(tracker.isAcknowledged('oil-speed', 'oil-1'), true) assert.equal(tracker.shouldCreate('oil-speed', 'oil-1'), false) assert.equal(tracker.shouldCreate('well-pressure', 'pressure-1'), false) }) test('同一指标记录新提示时返回旧提示键并替换当前状态', () => { const tracker = createThresholdAlarmNoticeTracker() assert.equal(tracker.record('oil-speed', 'notice-1', 'oil-1'), undefined) assert.equal(tracker.record('oil-speed', 'notice-2', 'oil-2'), 'notice-1') assert.equal(tracker.close('oil-speed', 'notice-1'), false) assert.equal(tracker.close('oil-speed', 'notice-2'), true) })