04-预测风险驾驶舱
article
2026年7月17日阅读约 2 分钟237 字
更新于 2026年7月17日
04 预测风险驾驶舱端到端实现任务
执行要求:直接完成“预测风险驾驶舱”发布结果读取和页面适配。风险、排行和计数必须由后端权威结果提供,前端不得通过数组计算。
共同门禁:不执行数据库草案,不修改 V1,不 DROP/清库或插入客户测试数据;g5b2-mysql 仅用于 SHOW、SELECT 和 EXPLAIN。接口统一使用 X-Trace-Id,缺失时后端生成并写响应头;同一动作的前端日志、后端日志和错误响应必须同值。
1. 目标与完成判定
- 菜单:智能研判 / 预测风险驾驶舱。
- 路由:/forecast。
- 展示未来 48 小时风险小区数、按指标风险数、最早预计劣化时间、未闭环预测告警数、稳定风险排行和不可用原因。
- 支持区域、场景、CGI、metricCode、riskLevel 等已有事实可支撑的白名单筛选。
- 排行可下钻到 48 小时趋势、告警和逐点证据,但不在本页面重新计算预测。
2. 开工前必读与现状核对
- 设置 PowerShell UTF-8,阅读仓库门禁、需求 V2.0 第 5.2 节、数据库设计第 9.4/10/11/12 节和草案风险表。
- 阅读 ForecastCockpitPage、ForecastTrendPage、types/index.ts、api/http、PageFeedback 和路由。
- 阅读现有 forecastCockpit Controller/Service/Mapper/XML、ForecastSummary/ForecastRisk DTO。
- 用 rg 查找 forecastRisks、forecastSummary、riskRank、severitySort 的全部调用方。
- 当前已有 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. 后端实施
- 请求参数加入白名单筛选、page、size、sort、direction;校验时间/枚举和页大小。
- 响应包含 DataState、风险汇总字段、按指标计数、最早时间、pendingAlarmCount、发布运行号/时间和带 total 的排行列表。
- 查询只读 tb_forecast_risk_result 的 PUBLISHED 当前行,并绑定同一预测发布运行;需要告警状态时只读 PUBLISHED 告警。
- 分页列表和 count 复用相同筛选,稳定排序。不得读取 STAGED 或在请求中扫描预测明细重算风险级别。
- 中文日志写清筛选范围、预测发布号、状态、总数和降级原因。
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. 最小验证门禁
- 后端测试覆盖:无预测、不可用不是 0 风险、筛选、真实 total、稳定排序、同发布运行隔离和告警状态。
- 只读 EXPLAIN 风险筛选/分页/count 和告警关联;不得写客户数据。
- 真实 HTTP 验证成功、NO_DATA、非法枚举、分页和 403/认证场景,核对响应 traceId。
- 运行相关 Maven 测试、Mapper XML 检查和注解 SQL 禁止扫描。
- 运行 cd frontend; npm run build,浏览器确认网络参数、按指标计数和下钻。
9. 交付报告
列出修改范围、最终契约、追溯、验证结果和仍不可用的模型/配置原因。不得把空风险表描述为“全部正常”。