06-动态基线追溯
article
2026年7月17日阅读约 2 分钟234 字
更新于 2026年7月17日
06 动态基线追溯端到端实现任务
执行要求:直接完成“动态基线追溯”已发布结果与样本证据的接口、前端和验证。Median/MAD 计算属于 JOB_BASELINE,本页面请求不得现场计算。
共同门禁:不执行数据库草案,不修改 V1,不 DROP/清库或插入客户测试数据;g5b2-mysql 仅用于 SHOW、SELECT 和 EXPLAIN。接口统一使用 X-Trace-Id,缺失时后端生成并写响应头;同一动作的前端日志、后端日志和错误响应必须同值。
1. 目标与完成判定
- 菜单:智能研判 / 动态基线追溯。
- 路由:/forecast/baseline。
- 按 CGI、metricCode、小时槽、分页和排序查询当前已发布基线。
- 展示中心值、MAD、尺度、上下限、样本数、有效日数、要求日数、排除告警样本数、样本日期范围、配置版本、发布运行号、发布时间、状态和不足原因。
- 选择基线结果后展示纳入/排除样本证据及原因。
2. 开工前必读与现状核对
- 设置 PowerShell UTF-8,阅读仓库门禁、需求 V2.0 第 5.1 节、数据库设计第 9.4/10/11/12 节和基线 DDL。
- 阅读 BaselineTracePage、types、api/http、PageFeedback。
- 阅读 baseline Controller/Service/Mapper/XML、Baseline/BaselineSample DTO 和相关测试。
- 用 rg 查找 baselines、baselineStatusCounts、baselineSamples 的全部调用方。
- 当前已有 GET /api/v1/baselines/state、GET /api/v1/baselines、GET /api/v1/baselines/{baselineId}/samples;优先修复现有契约。
3. 业务规则与降级
- 基线粒度固定为 (cgi,metricCode,hourOfDay),只读 publish_status=PUBLISHED 当前结果。
- 公式 center=median(x),scale=max(1.4826*MAD(x),floor) 由调度任务完成;接口只返回留痕值。
- 至少 14 个健康有效日;具体 minValidDays、k、floor 来自结果绑定的已发布配置版本。
- LOW 指标只使用动态下限,HIGH 指标只使用动态上限;不适用一侧保持 N/A。
- 样本不足时基线值为空,返回 BASELINE_INSUFFICIENT/INSUFFICIENT_DAYS 和中文原因;不得复用旧基线冒充新结果。
- 没有已发布分析配置返回 NOT_CONFIGURED;首次发布失败且无历史成功结果返回 NO_DATA。
- 告警时间片和无效/N/A 样本不得作为 INCLUDED 健康样本。
4. 后端实施
- state 接口区分 NOT_CONFIGURED、NO_DATA、BASELINE_INSUFFICIENT 和 AVAILABLE,并返回 traceId/运行号/发布时间。
- 列表支持 CGI、metricCode、hourOfDay、page、size、白名单 sort/direction;hourOfDay 校验 0~23。
- 列表与 count 使用完全相同条件,排序增加 CGI、metricCode、hourOfDay、id 等稳定键。
- DTO 返回结果绑定的 analysisConfigVersion 和 publishRunNo,不能读取当前新版配置覆盖历史结果。
- samples 只能访问 PUBLISHED baselineId;不存在或已被替代且不允许查看时返回明确 404/NO_DATA,不泄露无关结果。
- 样本证据按 sampleDate、metricResultId 稳定排序,INCLUDED 无排除原因,EXCLUDED 必须有中文原因。
- 中文日志说明筛选范围、基线状态、结果/样本数量和不足原因。
5. 数据追溯
| 页面字段 | 主要来源 |
|---|---|
| 中心、MAD、尺度、上下限、样本计数/日期 | tb_baseline_result |
| 样本纳入/排除及来源点 | tb_baseline_sample_evidence、tb_metric_publish_result |
| k、floor、窗口、最小有效日 | tb_analysis_config_item/version 快照 |
| 指标名、单位和方向 | tb_metric_definition |
| 运行号、发布时间、traceId | tb_publish_run、tb_baseline_result |
6. 前端适配
- CGI、指标、小时槽、分页和排序真实进入请求;选择结果 ID 后才请求样本。
- 值和单位按后端 DTO 展示,不使用固定 scale、固定日期、数组索引或默认状态。
- 基线不足行可以展示状态和原因,但不把空上下限画成 0。
- 切换筛选时清空旧选择,不能把旧样本显示在新查询条件下。
- 页面显示配置版本、发布运行号、发布时间和 traceId(请求号)。
7. 最小验证门禁
- 后端测试覆盖:NOT_CONFIGURED、NO_DATA、少于 14 日、可用基线、小时槽边界、分页稳定性、样本纳入/排除和非发布 baselineId。
- 只读 EXPLAIN 基线当前结果分页/count 和样本证据查询。
- 真实 HTTP 验证成功、空数据、非法小时槽、不存在 ID 和 traceId。
- 运行相关 Maven 测试、Mapper XML 检查和注解 SQL 禁止扫描。
- 运行 cd frontend; npm run build,确认筛选、分页、选择切换和不足状态。
8. 交付报告
列出修改文件、契约、追溯和实际验证结果。若业务库没有 PUBLISHED 基线,只能报告 NO_DATA/NOT_CONFIGURED 的真实验证,不得插入样本或声称 Median/MAD 已运行。