01-无线运行总览

article
2026年8月4日2 min read364 words

Updated 2026年8月4日

01 无线运行总览端到端实现任务

执行要求:这是代码交付任务,不是只产出方案。直接在当前仓库核实现状、补齐后端与前端、运行验证并报告真实结果。只处理“无线运行总览”菜单及其直接复用的公共能力,不重写已正确工作的链路。

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

1. 目标与完成判定

  • 菜单:工作台 / 无线运行总览。
  • 路由:/dashboard。
  • 页面只展示当前 PUBLISHED 结果、导入批次状态和明确的空状态。
  • 完成后能按区域、CGI、开始时间、结束时间查询三个数据时间、监测小区数、性能/干扰接收数、缺失/无效数、无法关联数、各 KPI N/A 原因计数、静态/动态状态计数、基线状态、未闭环告警数及两类最近批次。
  • 前端不得计算 SLA、完整率、阈值状态、基线状态或“默认正常”。

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

  1. 先设置 PowerShell 输入、输出和文本读取为 UTF-8。
  2. 完整阅读 AGENTS.md、前后端规范、需求 V2.0、数据库设计和数据库草案;不得执行数据库草案,不得修改 V1。
  3. 阅读 frontend/src/pages/dashboard/DashboardPage.tsx、AppRoutes.tsx、AppShell.tsx、types/index.ts、services/api.ts、services/http.ts、PageFeedback.tsx。
  4. 阅读 PublishedDataController、PublishedDataService、PublishedDataMapper 接口及 XML、ApiDtos、PublishedQuery、TraceIdFilter 和异常处理。
  5. 用 rg 查找 dashboard、DashboardSummary、dashboardCounts 的全部调用方。仓库当前没有 mockApi.ts,不要为删除不存在的文件制造改动。

3. 当前基线

层级 当前事实 本任务要求
前端 DashboardPage 已调用 dashboard.summaryPath 保留现有风格,修正缺失字段、查询参数和状态展示
接口 GET /api/v1/dashboard/summary 已存在 先验证契约和 SQL,再最小补缺;不要另建同义总览接口
后端 PublishedDataController/Service/Mapper 已有总览链路 保持 Controller → Service → Mapper interface → Mapper XML
数据 指标、评估、基线、告警、导入批次表已建 只读当前发布结果;无业务事实时正确返回 NO_DATA

4. 业务规则与降级

  • 性能最新时间和干扰最新时间分别取当前查询范围内的 PUBLISHED 指标最大 business_time。
  • 最新共同证据时间只能来自已发布的 COMPLETE 证据,不用两个最大时间中的较小值替代。
  • 已监测小区仅统计查询窗口内至少一个 VALID 发布指标的 CGI。
  • N/A 按 metricCode 和稳定原因分组,值为空不计为数值 0。
  • 静态阈值状态和动态基线状态分别计数;未发布阈值返回 NOT_CONFIGURED,基线不足返回明确原因。
  • 小时应收计划未确认,timeliness 固定 UNKNOWN;不得显示及时率、完整率或 SLA 结论。
  • 两类最近批次分别返回;冲突、拒绝、接受计数来自 tb_import_batch,不由前端相减。
  • 首次发布失败且没有历史成功结果时返回 NO_DATA;不能回查事实表、原始表或 mock 形成页面结果。

5. 后端实施

  1. 以 GET /api/v1/dashboard/summary 为唯一页面接口,校验参数时间范围、白名单筛选和中文错误。
  2. DTO 至少保留 DataState、三个数据时间、monitoredCellCount、两类 receivedCount、missingFieldCount、unlinkedCount、metricNaCounts、静态/动态状态计数、baselines、openAlarmCount、latestImportBatches、publishRunNo、publishedAt 和 traceId。
  3. 主查询从 PUBLISHED 发布结果出发。允许按设计关联维度快照,但无发布行时不得回退读取原始或暂存结果。
  4. 所有计数必须有明确 SQL 口径;列表和原因分组稳定排序。不得在 Controller 或前端拼计数。
  5. 每个查询写中文业务日志,包含目的、筛选范围、状态和返回数量,不记录 SQL、完整响应或敏感信息。

6. 数据追溯

页面字段 主要来源
三个数据时间、有效/N/A 数 tb_metric_publish_result、tb_metric_evaluation_result
静态/动态状态计数 tb_metric_evaluation_result
基线可用性 tb_baseline_result
未闭环告警 tb_alarm,record_status=PUBLISHED 且 status 非 CLOSED
最近导入批次及计数 tb_import_batch
版本、运行号、发布时间 tb_publish_run 及结果表快照

7. 前端适配

  • 所有筛选值真实进入请求;查询和重置复用一次用户动作的 traceId。
  • 用后端 DTO 更新类型,不在页面兼容旧 mock 字段。
  • 分开展示 availability、timeliness、evidenceCompleteness;NO_DATA、NOT_CONFIGURED、基线不足和请求失败使用 PageFeedback。
  • 比例只按后端 displayMultiplier/displayUnit 展示;N/A 原因可读,不补零。
  • 页面只显示“traceId(请求号)”,错误态展示响应头或错误体返回的服务端 traceId。

8. 最小验证门禁

  1. 后端测试覆盖:空库 NO_DATA、三时间语义、N/A 原因分组、静态/动态分离、时间参数错误。
  2. 用 g5b2-mysql MCP 只读核对相关表和索引,对代表查询执行 EXPLAIN;不得写入数据。
  3. 启动后端,真实 HTTP 验证成功、空数据、非法时间和同一 X-Trace-Id 的请求头、响应头、错误体与日志。
  4. 运行相关 Maven 测试和注解 SQL 禁止扫描。
  5. 运行 cd frontend; npm run build,并在浏览器确认筛选参数真实发出且空状态无假数据。

9. 交付报告

列出修改文件、最终接口契约、字段到表的追溯、Maven/HTTP/EXPLAIN/build 实际结果、仍按 UNKNOWN/N/A 降级的项目和已知风险。没有执行或没有通过的验证必须如实说明。

10. 本次优化实施 Plan(2026-08-04)

10.1 目标

  • 解决无线运行总览菜单被 /api/v1/dashboard/summary 慢查询拖住的问题。
  • 首屏以图表回答“当前是否异常、影响多少小区、哪些小区持续异常、是否有未来风险/未闭环告警”。
  • 保留现有业务口径:前端只展示后端已发布结果,不计算 SLA、跨小区平均、综合健康分、预测或诊断结论。

10.2 实施步骤

  1. 文档契约:补充图表首屏布局、核心指标、禁止项、独立请求/状态和性能验收标准;同步到 5g2b_new 知识库。
  2. 快照接口:保留 GET /api/v1/dashboard/summary 路径,改为最新业务小时的轻量快照;查询先确定最新时间,再用有界窗口读取状态、告警和发布版本,移除首屏重列表扫描。
  3. 图表数据:复用已存在的 GET /api/v1/performance/overview?historyHours=24|168 提供异常趋势和持续异常 TOP10;不新增同义接口,后端不把历史异常误报为当前异常。
  4. 前端并发:总览页面骨架先挂载;快照、趋势、预测风险、告警/数据状态各自使用独立 useJsonPageFeedback,禁止 Promise.all 统一门控和整页 loading。
  5. 视觉与响应式:复用 ECharts PublishedChart,采用折线、横向条形、环形分布和热力图;桌面双列、手机单列,关键值和数据更新时间不依赖 hover。
  6. 验证:执行后端相关 Maven 测试、Mapper XML/注解 SQL 门禁、npm run build;用 Playwright 延迟/失败单个接口,验证其余面板先渲染、失败可重试且 traceId 一致。

10.3 交付判定

  • 快照默认请求不再无边界扫描全量发布历史;SQL 有最新业务时间或明确时间窗口条件。
  • 页面在任一图表接口延迟 3 秒时,筛选区、页面结构和已返回面板仍可用;该接口恢复后只更新自己的面板。
  • 首屏主结论不使用 Table;表格仅作为按需数据可信度/明细入口。
  • 空数据、部分数据、403、错误和重试均有面板级反馈;响应头、错误体、前端日志、后端日志使用同一 X-Trace-Id
  • 快照接口 P95 目标 ≤ 800ms,首屏可用目标 ≤ 2s;若 EXPLAIN/实测仍不达标,再评审物化快照,不在本次预先新增缓存表。