04-预测风险驾驶舱

article
2026年7月17日2 min read237 words

Updated 2026年7月17日

04 预测风险驾驶舱端到端实现任务

执行要求:直接完成“预测风险驾驶舱”发布结果读取和页面适配。风险、排行和计数必须由后端权威结果提供,前端不得通过数组计算。

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

1. 目标与完成判定

  • 菜单:智能研判 / 预测风险驾驶舱。
  • 路由:/forecast。
  • 展示未来 48 小时风险小区数、按指标风险数、最早预计劣化时间、未闭环预测告警数、稳定风险排行和不可用原因。
  • 支持区域、场景、CGI、metricCode、riskLevel 等已有事实可支撑的白名单筛选。
  • 排行可下钻到 48 小时趋势、告警和逐点证据,但不在本页面重新计算预测。

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

  1. 设置 PowerShell UTF-8,阅读仓库门禁、需求 V2.0 第 5.2 节、数据库设计第 9.4/10/11/12 节和草案风险表。
  2. 阅读 ForecastCockpitPage、ForecastTrendPage、types/index.ts、api/http、PageFeedback 和路由。
  3. 阅读现有 forecastCockpit Controller/Service/Mapper/XML、ForecastSummary/ForecastRisk DTO。
  4. 用 rg 查找 forecastRisks、forecastSummary、riskRank、severitySort 的全部调用方。
  5. 当前已有 GET /api/v1/forecast/cockpit;优先演进该契约,不另建无消费者的汇总接口。

3. 当前缺口

  • 前端目前仅传 CGI,未携带需求中的区域、场景、指标、风险等级和分页/排序。
  • ForecastSummary 当前内嵌未分页 ranks;列表必须改为服务端分页或等价的真实 total 契约。
  • 页面尚未展示 riskCountsByMetric,也没有稳定的下钻参数。
  • 必须核对当前 SQL 是否只读取 publish_status=PUBLISHED,并按当前发布运行隔离结果。

4. 业务规则与降级

  • 风险数只统计 ATTENTION/HIGH 的已发布 CELL 或 CELL_METRIC 风险结果;不可用预测不是 0 风险。
  • 按指标风险数由后端结果或有界分组计数返回,前端不得 filter/length。
  • 最早预计劣化时间取已发布风险中的最小有效时间,N/A 排末;不得依赖数组位置。
  • 排序固定为严重度、预计劣化时间、连续越界点数、影响指标数,最后用 CGI、metricCode 或结果 ID 保证稳定。
  • 不展示未经计算的置信度百分比。
  • 基线不足、训练不足、无发布模型、验证失败分别返回稳定状态和中文原因;无可用预测时 summary 的风险数应为 N/A 语义,而不是默认 0。
  • 风险告警状态来自 tb_alarm 当前生命周期,不写回历史风险结果。

5. 后端实施

  1. 请求参数加入白名单筛选、page、size、sort、direction;校验时间/枚举和页大小。
  2. 响应包含 DataState、风险汇总字段、按指标计数、最早时间、pendingAlarmCount、发布运行号/时间和带 total 的排行列表。
  3. 查询只读 tb_forecast_risk_result 的 PUBLISHED 当前行,并绑定同一预测发布运行;需要告警状态时只读 PUBLISHED 告警。
  4. 分页列表和 count 复用相同筛选,稳定排序。不得读取 STAGED 或在请求中扫描预测明细重算风险级别。
  5. 中文日志写清筛选范围、预测发布号、状态、总数和降级原因。

6. 数据追溯

页面字段 主要来源
风险小区数、按指标数、最早时间 tb_forecast_risk_result
严重度、排行、连续点、影响指标数 tb_forecast_risk_result 已发布字段
构成预测点 tb_forecast_risk_evidence → tb_forecast_result
告警处理状态/未闭环数 tb_alarm
模型、配置、发布信息 tb_model_version、tb_analysis_config_item、tb_publish_run

7. 前端适配

  • 按后端 DTO 更新类型和 service;全部筛选、分页、排序进入请求。
  • riskCountsByMetric 直接展示后端键值,不按 ranks 二次计数。
  • 行点击携带 CGI、metricCode、publishRunNo 跳转 /forecast/trend;关联告警跳转 /alarms。
  • NO_DATA、BASELINE_INSUFFICIENT、TRAINING_INSUFFICIENT、NO_PUBLISHED_MODEL、VALIDATION_FAILED 分别展示。
  • 页面刷新和返回保留查询参数;不硬编码风险状态、日期或排序。

8. 最小验证门禁

  1. 后端测试覆盖:无预测、不可用不是 0 风险、筛选、真实 total、稳定排序、同发布运行隔离和告警状态。
  2. 只读 EXPLAIN 风险筛选/分页/count 和告警关联;不得写客户数据。
  3. 真实 HTTP 验证成功、NO_DATA、非法枚举、分页和 403/认证场景,核对响应 traceId。
  4. 运行相关 Maven 测试、Mapper XML 检查和注解 SQL 禁止扫描。
  5. 运行 cd frontend; npm run build,浏览器确认网络参数、按指标计数和下钻。

9. 交付报告

列出修改范围、最终契约、追溯、验证结果和仍不可用的模型/配置原因。不得把空风险表描述为“全部正常”。