Skip to content

报警模块设计概览

快速理解

报警模块是一个基于 DDD 的事件驱动系统,负责监控设备状态并在异常时触发报警和通知。

核心概念

1. 报警实例 (Alarm)

设备或属性触发的具体报警记录,包含:

  • 报警级别:Info, Warning, Error, Critical
  • 报警状态:Active, Acknowledged, Resolved, Suppressed
  • 确认和解决信息

2. 报警规则 (AlarmRule)

定义何时触发报警的业务规则,支持:

  • 阈值规则:温度 > 80°C
  • 范围规则:湿度在 30%-70% 之外
  • 变化规则:温度 1 小时内上升 > 10°C
  • 持续时间规则:温度持续 5 分钟 > 80°C
  • 组合规则:温度 > 80°C AND 湿度 > 90%

3. 规则引擎 (RuleEngine)

评估事件是否满足报警条件的核心组件

工作流程

设备事件 → EventBus → AlarmEventHandler → RuleEngine → AlarmService

                                                    创建报警记录

                                                    NotificationService

模块结构

src/domain/alarm/
├── entities/          # 实体(Alarm, AlarmRule)
├── value_objects/     # 值对象(AlarmLevel, AlarmType, AlarmCondition)
├── aggregates/        # 聚合根(AlarmAggregate)
├── services/          # 领域服务(AlarmService, RuleEngine)
├── repositories/      # 仓储接口
├── specifications/    # 规约
└── handlers/          # 事件处理器

API 端点

报警管理

  • GET /api/v1/alarms - 查询报警列表
  • GET /api/v1/alarms/:id - 获取报警详情
  • POST /api/v1/alarms/:id/acknowledge - 确认报警
  • POST /api/v1/alarms/:id/resolve - 解决报警
  • POST /api/v1/alarms/batch-acknowledge - 批量确认
  • GET /api/v1/alarms/statistics - 报警统计

规则管理

  • GET /api/v1/alarm-rules - 查询规则列表
  • POST /api/v1/alarm-rules - 创建规则
  • PUT /api/v1/alarm-rules/:id - 更新规则
  • DELETE /api/v1/alarm-rules/:id - 删除规则
  • POST /api/v1/alarm-rules/:id/toggle - 启用/禁用规则

数据库表

device_alarms (报警实例)

  • 存储所有报警记录
  • 支持确认和解决状态
  • 关联设备、属性和规则

device_alarm_rules (报警规则)

  • 存储报警规则配置
  • 支持多种规则类型
  • 包含通知配置

关键特性

  1. 实时报警: 通过事件总线实时处理设备事件
  2. 灵活规则: 支持多种条件类型和组合
  3. 报警抑制: 避免短时间内重复报警
  4. 自动解决: 当条件恢复正常时自动解决报警
  5. 多渠道通知: 集成通知服务,支持 Email, SMS, SSE, Webhook
  6. 批量操作: 支持批量确认和解决
  7. 统计分析: 提供报警趋势和统计数据

实现优先级

P0 (核心功能)

  1. 基本的阈值规则
  2. 报警创建和查询
  3. 报警确认和解决
  4. 与事件系统集成

P1 (重要功能)

  1. 多种规则类型(范围、变化、持续时间)
  2. 报警抑制
  3. 通知集成
  4. 批量操作

P2 (增强功能)

  1. 组合规则
  2. 自动解决
  3. 统计分析
  4. 前端界面

技术栈

  • 后端: Rust + Axum + SQLx + Tokio
  • 数据库: SQLite
  • 前端: TypeScript + Lit 3 + Vite + nanostore
  • 架构: DDD + Event-Driven + Clean Architecture

参考文档

  • 详细设计:docs/alarm-module-design.md
  • 事件架构:docs/event-handler-architecture.md
  • API 规范:.kiro/steering/api-standards.md