罗展丰
Published on 2026-07-09 / 30 Visits
0
0

预警模块对接文档

1. 概述

预警模块使用 SPI 机制管理种子数据。新增业务预警需要实现 WarnSeedInitial<T> 接口并注册为 Spring Bean,调用初始化接口后自动同步入库。

2. 种子数据接口

// 位于 sys-api 层
public interface WarnSeedInitial<T> {
    List<T> getSeedData();
}

所有实现此接口的 Spring Bean 会被 WarnInitService 自动收集。

3. 支持的种子数据类型

类型 说明 示例实现
WarnChannel 消息渠道 DemoWarnChannelSeedInitial
WarnCategory 业务分类 DemoWarnCategorySeedInitial
WarnNodeSeedDTO 预警节点 + 策略配置 DemoWarnNodeSeedInitial
WarnTemplateSeedDTO 预警模板 DemoWarnTemplateSeedInitial

4. 新增业务预警步骤

第一步:创建渠道种子数据(如已有则跳过)

@Component
public class MyWarnChannelSeedInitial implements WarnSeedInitial<WarnChannel> {
    @Override
    public List<WarnChannel> getSeedData() {
        return List.of(
            new WarnChannel()
                .setCode("sms")
                .setName("短信")
                .setIsEnabled("1")
        );
    }
}

第二步:创建业务分类种子数据

@Component
public class MyWarnCategorySeedInitial implements WarnSeedInitial<WarnCategory> {
    @Override
    public List<WarnCategory> getSeedData() {
        return List.of(
            new WarnCategory()
                .setCode("myBusinessCategory")
                .setName("我的业务分类")
        );
    }
}

第三步:创建预警节点种子数据

WarnNodeSeedDTO 同时定义了节点和对应的策略配置:

@Component
public class MyWarnNodeSeedInitial implements WarnSeedInitial<WarnNodeSeedDTO> {
    @Override
    public List<WarnNodeSeedDTO> getSeedData() {
        return List.of(
            new WarnNodeSeedDTO() {{
                setCategory("myBusinessCategory");          // 关联业务分类 code
                setCode("myWarnNode");                       // 节点编码(唯一)
                setName("我的预警节点");                      // 节点名称
                setClassName("com.xxx.MyWarnProcessor");     // 处理器全类名(用于定时调度)
                setIntervalMinutes(5);                       // 检测间隔(分钟)
                setRepeatedWarningType("TIME_PERIOD");       // 防重复类型
                setProhibitRepeatedCycle(30);                // 禁重复周期(分钟)
            }}
        );
    }
}

第四步:创建预警模板种子数据

@Component
public class MyWarnTemplateSeedInitial implements WarnSeedInitial<WarnTemplateSeedDTO> {
    @Override
    public List<WarnTemplateSeedDTO> getSeedData() {
        return List.of(
            new WarnTemplateSeedDTO() {{
                setCode("myWarnTemplate");                   // 模板编码(唯一)
                setName("我的预警模板");                      // 模板名称
                setNode("myWarnNode");                       // 关联节点 code
                setChannel("sms");                           // 渠道编码
                setTitle("预警通知");                         // 消息标题
                setContent("您有一条新的预警:{content}");     // 消息内容(支持占位符)
            }}
        );
    }
}

第五步:调用初始化接口

POST /sys/v1/warn/init

系统自动完成:

  1. 按 code 去重同步所有种子数据
  2. 创建策略(默认禁用状态)
  3. 为每个策略自动创建 high/middle/low 三级等级
  4. 创建 PowerJob 定时调度任务

5. 初始化后的配置工作

初始化完成后,需要在管理界面完成:

  1. 启用策略:策略默认禁用,需手动启用
  2. 配置推送方式:为每个策略等级选择推送渠道
  3. 配置接收人:为每个策略等级添加接收人
  4. 调整定时:根据需要修改检测间隔

6. 种子数据同步规则

规则 说明
按 code 去重 已存在的 code 不会重复创建
策略默认禁用 新策略 isEnabled = 0
策略等级自动创建 每个新策略自动创建 3 个等级
调度任务自动注册 有 className 的节点自动创建 PowerJob 任务
幂等调用 多次调用 init 不会产生重复数据

7. 枚举值参考

枚举 Code 名称
消息渠道 sms 短信
消息渠道 email 邮箱
消息渠道 wecom 企业微信
消息渠道 dingtalk 钉钉
消息渠道 innerMessage 站内信
消息渠道 app APP
预警等级 high 高
预警等级 middle 中
预警等级 low 低

Comment