06-动态基线追溯

article
2026年7月17日2 min read234 words

Updated 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. 开工前必读与现状核对

  1. 设置 PowerShell UTF-8,阅读仓库门禁、需求 V2.0 第 5.1 节、数据库设计第 9.4/10/11/12 节和基线 DDL。
  2. 阅读 BaselineTracePage、types、api/http、PageFeedback。
  3. 阅读 baseline Controller/Service/Mapper/XML、Baseline/BaselineSample DTO 和相关测试。
  4. 用 rg 查找 baselines、baselineStatusCounts、baselineSamples 的全部调用方。
  5. 当前已有 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. 后端实施

  1. state 接口区分 NOT_CONFIGURED、NO_DATA、BASELINE_INSUFFICIENT 和 AVAILABLE,并返回 traceId/运行号/发布时间。
  2. 列表支持 CGI、metricCode、hourOfDay、page、size、白名单 sort/direction;hourOfDay 校验 0~23。
  3. 列表与 count 使用完全相同条件,排序增加 CGI、metricCode、hourOfDay、id 等稳定键。
  4. DTO 返回结果绑定的 analysisConfigVersion 和 publishRunNo,不能读取当前新版配置覆盖历史结果。
  5. samples 只能访问 PUBLISHED baselineId;不存在或已被替代且不允许查看时返回明确 404/NO_DATA,不泄露无关结果。
  6. 样本证据按 sampleDate、metricResultId 稳定排序,INCLUDED 无排除原因,EXCLUDED 必须有中文原因。
  7. 中文日志说明筛选范围、基线状态、结果/样本数量和不足原因。

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. 最小验证门禁

  1. 后端测试覆盖:NOT_CONFIGURED、NO_DATA、少于 14 日、可用基线、小时槽边界、分页稳定性、样本纳入/排除和非发布 baselineId。
  2. 只读 EXPLAIN 基线当前结果分页/count 和样本证据查询。
  3. 真实 HTTP 验证成功、空数据、非法小时槽、不存在 ID 和 traceId。
  4. 运行相关 Maven 测试、Mapper XML 检查和注解 SQL 禁止扫描。
  5. 运行 cd frontend; npm run build,确认筛选、分页、选择切换和不足状态。

8. 交付报告

列出修改文件、契约、追溯和实际验证结果。若业务库没有 PUBLISHED 基线,只能报告 NO_DATA/NOT_CONFIGURED 的真实验证,不得插入样本或声称 Median/MAD 已运行。