From 7602ec7af4584ccea000e3a4f5a2800d8f3f39fe Mon Sep 17 00:00:00 2001 From: xingchen <1098756313@qq.com> Date: Fri, 25 Sep 2026 11:57:05 +0800 Subject: [PATCH] feat: add src/correlate.mjs --- src/correlate.mjs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/correlate.mjs diff --git a/src/correlate.mjs b/src/correlate.mjs new file mode 100644 index 0000000..1dae328 --- /dev/null +++ b/src/correlate.mjs @@ -0,0 +1,19 @@ +import { normalizeEvent } from './model.mjs'; +import { advance } from './state.mjs'; + +export function correlate(rawEvents) { + const rejected = [], valid = []; + for (const [index, raw] of rawEvents.entries()) { + const item = normalizeEvent(raw, index); + if (item.error) rejected.push(item); + else valid.push(item); + } + valid.sort((a, b) => a.time - b.time || a.index - b.index); + const groups = new Map(); + for (const event of valid) { + const key = `${event.device}/${event.alarmId}`; + const initial = groups.get(key) ?? { open: false, firstAlarm: null, acknowledged: false, anomalies: [] }; + groups.set(key, advance(initial, event)); + } + return { groups, rejected }; +}