首页 / 业务知识 / 规则引擎与告警模型

规则模型与边界

规则不是一个“阈值字段”,而是条件树 + 作用对象 + 动作编排 + 版本审计 + 命中证据。它统一承载超速、离线、围栏进出、信号弱、设备故障、行程异常和媒体/AI 事件等场景;规则命中后才可能创建告警,再由通知渠道尝试送达。

规则配置的事实与执行结果必须分开:规则版本是配置事实,hit_snapshot 是当时遥测/上下文证据,告警记录是业务事实,通知回执是投递事实。任何一层失败都不得伪装为另一层成功。

推荐数据结构

实体核心字段/职责约束
gps_rule名称、类型、状态、优先级、触发方式、version_no、创建/变更说明启停和修改产生新版本;执行端只能消费已发布版本。
gps_rule_condition_group父子分组、AND/OR、排序构成可嵌套表达式树;保存前校验无环、深度和节点数上限。
gps_rule_conditionfield_key、操作符、值类型、值、单位字段、单位、操作符白名单化;禁止把可执行脚本放入条件文本。
gps_rule_action告警、Push、SMS、Email、Webhook、设备命令和重试/冷却配置动作配置按类型校验;外部回调需要签名、超时和幂等键。
gps_rule_target设备、设备组、用户组等生效范围目标变化与规则发布同样需审计,防止规则无意扩大到全量设备。
gps_rule_execution_log设备、规则版本、事件时间、命中快照、动作结果、状态保留触发证据;日志时间与设备事件时间分字段存储。
gps_rule_template / gps_rule_audit_log模板复用、变更前后差异和操作者模板不是已发布规则;审计日志不可被普通编辑操作覆盖。

编译、执行与告警闭环

  1. 管理端保存草稿,做字段、单位、范围、权限、目标规模和冲突检查。
  2. 发布时冻结 rule_id + version_no,生成面向执行端的标准表达式/索引;发布事件可靠投递到规则执行端。
  3. 设备遥测或业务事件进入执行端;按设备/事件键保持局部有序,读取对应发布版本进行求值。
  4. 满足条件时先做去重和冷却判断,再写命中快照和告警候选;同一事件重放不应创建重复告警。
  5. 告警服务创建告警记录,动作调度器异步执行 Push/SMS/Webhook/设备命令;每个动作独立记录结果和重试。
  6. 看板按“命中、告警已创建、动作已受理、已送达/失败”展示,支持从告警反查规则版本与输入快照。

围栏与时间语义

  • 空间:围栏支持圆形、多边形和路线等类型;围栏版本、坐标系、边界包含规则(边界算入/算出)必须固定,避免端云判断不一致。
  • 时间:以设备事件时间判断进出和持续时长,同时记录平台接收时间;弱网补传可补齐历史事实,但不应在当前时刻重复打扰用户。
  • 抖动:围栏边缘、GPS 漂移和基站定位误差需要停留时间、连续点数或迟滞带;不得用单点命中直接产生高等级告警。
  • 优先级:安全命令、合规禁用、用户规则和运营规则应有明确优先级及冲突策略;设备离线时不应执行要求实时确认的高风险动作。

验收与来源

  • 表达式树的 AND/OR 嵌套、类型/单位校验、发布版本冻结和回滚均有自动化测试。
  • 同一事件重复投递、乱序补传、跨冷却窗口、动作部分失败、Webhook 超时和设备离线均有可复现实例。
  • 告警详情可定位到规则版本、目标范围、命中快照、动作回执和关联 trace_id
  • 来源:规则设置.mddesign/app_flowchart_design.mdspecs/车载安防平台-业务逻辑文档.mdspecs/需求分析.md;现有平台实现见alarm 告警告警全流程