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. 开工前必读与现状核对
- 设置 PowerShell UTF-8,阅读仓库门禁、需求 V2.0 第 5.3 节、数据库设计第 9.6/10/11/12 节和阈值 DDL。
- 阅读 ThresholdConfigPage、types、api/http、PageFeedback、权限处理。
- 阅读 threshold Controller/Service/Mapper/XML、DTO、幂等/审计公共逻辑和测试。
- 用 rg 查找 ThresholdRule、createThreshold、updateThresholdStatus 和所有调用方。
- 当前 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. 后端实施
- GET /api/v1/settings/thresholds 支持 status、metricCode、scopeType、page、size、白名单排序和真实 total。
- POST /api/v1/settings/thresholds 使用明确 ThresholdDraftRequest,不接收 unknown;校验每条规则、重复键和长度。
- validate 锁定 DRAFT,完成指标、方向、范围、单位、时间和去重窗口校验;失败保持 DRAFT 并返回中文原因。
- publish 锁定 VALIDATED,在单事务中将旧 PUBLISHED 置 SUPERSEDED、新版本置 PUBLISHED,保留 traceId/publishedAt;并发发布冲突返回 409。
- disable 校验允许状态,不删除版本/规则;停用当前发布版后业务接口正确变为 NOT_CONFIGURED,不能自动恢复旧版。
- 每个写操作按 traceId 幂等,业务变更和 tb_audit_log 同链路;成功/失败使用稳定事件名。
- 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. 最小验证门禁
- 后端测试覆盖:角色、非法 metric/direction/range、比例单位、去重窗口、重复规则、状态迁移、并发发布、幂等、停用和审计。
- Mapper 测试核对锁、唯一当前版本和 interface/XML 一致。
- 只读 EXPLAIN 阈值列表/count;写测试使用隔离库或事务回滚,不改客户配置。
- 真实 HTTP 在安全测试环境验证成功、400、403、404、409 和同 traceId 审计。
- 运行相关 Maven 测试、注解 SQL 禁止扫描和 cd frontend; npm run build。
8. 交付报告
列出修改文件、最终 DTO/状态机、测试/HTTP/EXPLAIN/build 结果和未配置指标。不得把测试阈值或原型值发布到 g5b2。