05-48小时趋势预测
article
2026年7月17日阅读约 2 分钟252 字
更新于 2026年7月17日
05 48 小时趋势预测端到端实现任务
执行要求:直接完成“48 小时趋势预测”真实接口和页面适配,运行验证后交付。接口只读已发布实际值、基线、预测和模型版本,不在同步请求训练或补算预测。
共同门禁:不执行数据库草案,不修改 V1,不 DROP/清库或插入客户测试数据;g5b2-mysql 仅用于 SHOW、SELECT 和 EXPLAIN。接口统一使用 X-Trace-Id,缺失时后端生成并写响应头;同一动作的前端日志、后端日志和错误响应必须同值。
1. 目标与完成判定
- 菜单:智能研判 / 48 小时趋势预测。
- 路由:/forecast/trend。
- 输入单个 CGI 和 metricCode,展示有界历史实际值、适用小时槽动态基线、未来 48 个已发布预测目标点、静态/动态越界证据、预计劣化时间以及模型/特征/发布版本。
- 无发布模型、基线不足、训练不足或验证失败时显示明确状态,不画伪预测线。
2. 开工前必读与现状核对
- 设置 PowerShell UTF-8,阅读仓库门禁、需求 V2.0 第 5.2 节、数据库设计第 9.4/10/11/12 节和预测相关 DDL。
- 阅读 ForecastTrendPage、ForecastCockpitPage、PublishedChart、types、api/http、PageFeedback。
- 阅读现有 forecastTrend Controller/Service/Mapper/XML、ForecastTrend/ForecastPoint DTO 和测试。
- 用 rg 查找 forecastPoints、forecastTrend、modelVersion、publishRunNo 的调用方和 SQL。
- 当前已有 GET /api/v1/forecast/trend;在该契约上补齐,不创建重复的图表接口。
3. 业务规则与降级
- 必须传 CGI 和稳定 metricCode;historyHours 限制在 1~336。
- 实际值只读 tb_metric_publish_result 的 VALID、PUBLISHED 当前点,不插值、不跨 CGI 聚合。
- 基线按每个历史/目标时间的 hour_of_day 关联当前 PUBLISHED 基线,不由前端复制一条线。
- 预测点只读 tb_forecast_result 的 PUBLISHED 当前结果。同一 CGI、指标、targetTime、publishRun 只能有一个模型结果。
- 预测窗口为未来 48 个小时;数据库不足 48 个已发布点时返回实际数量并给出数据不可用原因,不生成空值占位冒充发布。
- 本轮新训练的 CANDIDATE 不用于同轮生产预测;无上一 PUBLISHED 且 PASSED 模型时返回 NO_PUBLISHED_MODEL。
- 关注风险依据未来 12 小时连续两个动态越界点;高风险升级阈值未发布时不得自行升级。
- 不展示自造置信度,不用平滑线或 connectNulls 掩盖缺点。
4. 后端实施
- 校验 CGI、metricCode、historyHours,错误使用稳定错误码和中文消息。
- 响应 DataState 至少含 status、reason、publishRunNo、publishedAt、traceId;序列 DTO 明确存储单位、展示单位和 multiplier。
- actuals、baselines、forecasts 必须绑定各自真实运行号和时间;不得用预测发布时间冒充 targetTime。
- ForecastPoint 返回 predictedValue、baselineLower/Upper、staticThreshold、dynamicBreach、staticBreach、consecutiveBreachPoints、expectedDegradationTime、modelType、modelVersion、featureVersion、validationStatus、publishRunNo、publishedAt、traceId。
- 若逐点风险证据来自 tb_forecast_risk_evidence,按同一风险/预测发布运行关联;不能用请求时重新遍历 48 点得出新的业务结论。
- 中文日志记录 CGI、metricCode、历史点数、预测点数、发布号和不可用原因。
5. 数据追溯
| 页面字段 | 主要来源 |
|---|---|
| 历史实际值 | tb_metric_publish_result |
| 历史/目标小时基线 | tb_baseline_result |
| 未来预测、越界和连续点 | tb_forecast_result |
| 风险构成点 | tb_forecast_risk_evidence |
| 模型/特征/验证状态 | tb_model_version、tb_model_run、tb_forecast_evaluation_result |
| 发布运行和时间 | tb_publish_run |
所有业务结果必须带 PUBLISHED 条件;模型运行记录只用于说明来源,不能替代未发布预测值。
6. 前端适配
- CGI 必填,metricCode 使用后端支持的稳定枚举;查询参数真实进入请求和 URL。
- 图表按 businessTime/targetTime 合并坐标,仅做展示映射;N/A 保持 null,connectNulls=false。
- 预测目标表直接显示后端越界、连续点、预计时间和版本,不在前端比较阈值。
- 下钻告警时携带 CGI、metricCode、目标时间或关联 alarmNo;返回页面保留查询。
- 分开展示 NO_DATA、BASELINE_INSUFFICIENT、TRAINING_INSUFFICIENT、NO_PUBLISHED_MODEL、VALIDATION_FAILED 和请求失败。
7. 最小验证门禁
- 后端测试覆盖:缺参数、historyHours 边界、空库、无模型、基线不足、同目标唯一模型、N/A 不插值和 48 点窗口。
- 只读 EXPLAIN 实际值趋势、基线小时槽关联和预测当前键查询。
- 真实 HTTP 验证成功、参数错误、NO_DATA/模型不可用和 traceId 一致。
- 运行相关 Maven 测试、Mapper XML 检查和注解 SQL 禁止扫描。
- 运行 cd frontend; npm run build,浏览器确认网络参数、空点、版本字段和跨页返回状态。
8. 交付报告
列出修改文件、最终请求/响应、表追溯、实际验证结果,以及因无发布模型、误差阈值或基线而降级的字段。不得把 24 点、mock 标签或候选模型描述成已完成的 48 小时发布。