10-阈值与告警策略

article
2026年7月17日阅读约 2 分钟246 字

更新于 2026年7月17日

10 阈值与告警策略端到端实现任务

执行要求:直接完成阈值版本、规则列表、草稿、校验、发布和停用,验证角色、版本冲突、幂等、审计和前端构建后交付。没有客户阈值时保持 NOT_CONFIGURED,不填 mock 默认值。

共同门禁:不执行数据库草案,不修改 V1,不 DROP/清库或插入客户测试数据;g5b2-mysql 仅用于 SHOW、SELECT 和 EXPLAIN。接口统一使用 X-Trace-Id,缺失时后端生成并写响应头;同一动作的前端日志、后端日志、错误响应、配置版本和审计必须同值。

1. 目标与完成判定

  • 菜单:运维管理 / 阈值与告警策略,仅 ROLE_ADMIN。
  • 路由:/settings/threshold。
  • 列表按版本状态、指标、范围分页和稳定排序,展示版本、生效期、指标、劣化方向、存储/展示单位、阈值、范围、告警级别、去重窗口、启用状态、更新时间和 traceId。
  • 支持创建 DRAFT、DRAFT→VALIDATED、VALIDATED→PUBLISHED、可用版本→DISABLED;发布时原子替代旧 PUBLISHED。

2. 开工前必读与现状核对

  1. 设置 PowerShell UTF-8,阅读仓库门禁、需求 V2.0 第 5.3 节、数据库设计第 9.6/10/11/12 节和阈值 DDL。
  2. 阅读 ThresholdConfigPage、types、api/http、PageFeedback、权限处理。
  3. 阅读 threshold Controller/Service/Mapper/XML、DTO、幂等/审计公共逻辑和测试。
  4. 用 rg 查找 ThresholdRule、createThreshold、updateThresholdStatus 和所有调用方。
  5. 当前 GET/POST/validate/publish/disable 接口已存在;补齐契约和校验,不建第二套配置 API。

3. 业务规则与降级

  • 只允许需求支持且数据字典已发布的稳定 metricCode。
  • 劣化方向只允许 LOW/HIGH,并与指标定义 static_direction 一致;RRC_SETUP_SUCCESS_RATE、PDCP 等未定义静态规则时不得擅自配置。
  • 比例阈值按 0~1 存储;前端展示转换由数据字典 displayMultiplier 决定。
  • scopeType 仅 GLOBAL/AREA/CGI;scopeValue 必须与类型匹配并由后端验证。
  • 小时数据下去重窗口至少 60 分钟且为 60 的整数倍;拒绝 5/15/30 分钟。
  • 生效期/版本有效期必须有序;阈值数值按已确认数据字典范围校验,范围仍 PENDING 时不得伪造业务上下界。
  • 只有一个当前 PUBLISHED 版本。发布只改变后续调度消费版本,不在同步请求重算告警。
  • 无发布阈值时业务页面返回 NOT_CONFIGURED,不按 0 或默认阈值判断。

4. 后端实施

  1. GET /api/v1/settings/thresholds 支持 status、metricCode、scopeType、page、size、白名单排序和真实 total。
  2. POST /api/v1/settings/thresholds 使用明确 ThresholdDraftRequest,不接收 unknown;校验每条规则、重复键和长度。
  3. validate 锁定 DRAFT,完成指标、方向、范围、单位、时间和去重窗口校验;失败保持 DRAFT 并返回中文原因。
  4. publish 锁定 VALIDATED,在单事务中将旧 PUBLISHED 置 SUPERSEDED、新版本置 PUBLISHED,保留 traceId/publishedAt;并发发布冲突返回 409。
  5. disable 校验允许状态,不删除版本/规则;停用当前发布版后业务接口正确变为 NOT_CONFIGURED,不能自动恢复旧版。
  6. 每个写操作按 traceId 幂等,业务变更和 tb_audit_log 同链路;成功/失败使用稳定事件名。
  7. Controller 仅做 HTTP/校验,业务状态在 Service,SQL 仅 Mapper XML。

5. 数据追溯

页面字段/动作 主要来源
版本生命周期 tb_threshold_version
规则、方向、阈值、范围、窗口 tb_threshold_rule
指标名、单位、支持状态、方向 tb_metric_definition、tb_metric_dictionary_version
发布影响 后续 tb_metric_evaluation_result/tb_alarm,不在本请求计算
审计 tb_audit_log,request_id=traceId

6. 前端适配

  • 根据后端请求 DTO 定义表单类型,不再用 unknown;指标和方向选项来自后端支持契约或既有稳定枚举。
  • 表单提交存储单位值,旁边明确展示单位;不能把百分数 95 直接当 0.95 提交。
  • 隐藏区间外、分钟级去重等不支持选项。
  • 列表分页/排序/筛选真实请求;操作按钮按状态显示并处理 403/409。
  • 写操作及刷新复用同一 traceId;错误提示展示服务端 traceId,不乐观切换状态。

7. 最小验证门禁

  1. 后端测试覆盖:角色、非法 metric/direction/range、比例单位、去重窗口、重复规则、状态迁移、并发发布、幂等、停用和审计。
  2. Mapper 测试核对锁、唯一当前版本和 interface/XML 一致。
  3. 只读 EXPLAIN 阈值列表/count;写测试使用隔离库或事务回滚,不改客户配置。
  4. 真实 HTTP 在安全测试环境验证成功、400、403、404、409 和同 traceId 审计。
  5. 运行相关 Maven 测试、注解 SQL 禁止扫描和 cd frontend; npm run build。

8. 交付报告

列出修改文件、最终 DTO/状态机、测试/HTTP/EXPLAIN/build 结果和未配置指标。不得把测试阈值或原型值发布到 g5b2。