Skip to content

自动化数据采集与异常预警规则

适用于水利工程、环境监测、设备监控等传感器数据采集与告警场景。

规则文件内容

请复制以下内容,保存为 .cursor/rules/sensor-anomaly-monitoring.mdc

markdown
---
description: 传感器数据采集、阈值判断与异常预警业务规则
globs: src/modules/monitoring/**, src/modules/sensors/**, src/modules/alarms/**
---

# 自动化数据采集与异常预警业务规则

## 1. 核心原则
- **先采集后判定**:先确保采集完整性,再做异常判断。
- **阈值 + 趋势双判定**:同时考虑绝对值越界与历史偏差。
- **告警分级**:warning/critical 分层,降低误报成本。

## 2. 采集规则

### 2.1 采集频率
- 实时监测:每 `5` 分钟
- 常规监测:每 `60` 分钟
- 日汇总:每日 `00:10`

### 2.2 存储策略
- 原始明细:保留 `1`
- 统计数据:保留 `10`
- 异常样本:长期保留

## 3. 异常判定规则

### 3.1 阈值越界
- 值不在 `normal_range[min, max]` 内,判为异常候选。

### 3.2 历史偏差
- 与历史同期均值比较,若偏差超过 `2 * std`,判为异常趋势。

```ts
interface AlarmResult {
  isAbnormal: boolean;
  level: 'normal' | 'warning' | 'critical';
  reason: string;
}

function thresholdAlarm(value: number, min: number, max: number): AlarmResult {
  if (value >= min && value <= max) {
    return { isAbnormal: false, level: 'normal', reason: 'in_range' };
  }
  return { isAbnormal: true, level: 'warning', reason: 'out_of_range' };
}

4. 告警升级规则

  • 连续 3 次 warning 自动升级为 critical
  • 单次严重越界(超过边界 20%)直接 critical
  • critical 需触发实时通知与处置工单

5. 数据质量规则

  • null 值、负值(不合理参数)或重复时间戳视为脏数据
  • 脏数据不参与告警判断,但必须写入数据质量日志
  • 单设备连续缺失 > 3 个采样周期,触发设备离线告警

6. 数据模型约束

  • sensor_readings 必须包含:sensor_id, parameter_type, value, sampled_at, quality_flag
  • alarm_rules 必须包含:parameter_type, normal_min, normal_max, warning_threshold, critical_threshold
  • alarm_events 必须包含:sensor_id, level, reason, occurred_at, resolved_at

7. 实施注意事项

  • 采集与告警解耦,防止告警逻辑阻塞采集链路。
  • 时序查询建议按 sensor_id + sampled_at 建索引。
  • 告警抑制窗口建议 5~10 分钟,避免抖动告警。

## 适用场景

- 水利工程监测
- 环境与能耗监测
- 工业设备状态监控

基于 AI 辅助开发,快速、灵活、可靠