测试 Review 修复清单

document
2026年7月18日阅读约 3 分钟460 字

更新于 2026年7月18日

测试 Review 修复清单

执行约束

  • 按 P0、P1、P2 顺序修复;同一时刻只处理一项。
  • 不使用子智能体,不执行数据库写操作,不用 mock 或默认业务值替代真实计算。
  • 每项完成后记录修改范围、最小回归和遗留风险;最终执行后端全量测试与前端构建。

问题列表

ID 级别 问题 状态 修复证据 验证结果
RV-01 P0 五个核心下游任务没有真实执行器 已修复 五类任务接入 PipelineTaskService,固化输入血缘并在校验后发布;无模型参数时仅发布不可用状态 ImportJobExecutorTest,PipelineTaskServiceTest,MapperXmlConfigurationTest:9/9 通过
RV-02 P0 结构失败 CSV 可能残留已分块写入的有效事实 已修复 外部导入入口建立事务,整文件结构预检先于任何分块写入 ImportServiceTest,ImportJobExecutorTest:10/10 通过
RV-03 P1 调度依赖会过早执行或过早永久跳过 已修复 短事务固化具体上游输入,READY 仅领取已满足实例,终态失败才 BLOCKED 调度/Mapper 定向测试:22/22 通过
RV-04 P1 性能异常态势缺少小区 x 多 KPI 矩阵及两类越界小时数 已修复 性能专用多 KPI 查询返回两类越界小时数与告警优先级,前端按 CGI 展开 KPI 列 后端定向测试 9/9;前端构建通过
RV-05 P2 三状态轴未统一展示且权威降级状态可能被吞掉 已修复 PageFeedback 统一展示三状态轴,明确业务降级先于通用 NO_DATA 前端构建通过
RV-06 P2 性能/干扰及预测/告警下钻参数未在目标页恢复 已修复 性能和告警页从 URL 恢复筛选、分页、排序、选中项及返回地址,并在交互后回写 URL AlarmControllerTest 2/2;前端构建通过
RV-07 P2 同小时底噪/性能联动缺少双方单位和展示倍率 已修复 联动 DTO/SQL 分别返回底噪与性能的存储单位、展示单位和倍率;图表按倍率转换,表格按展示单位格式化并保留存储单位 PublishedDataServiceInterferenceTest,MapperXmlConfigurationTest:7/7;前端构建通过

RV-01 五个核心下游任务执行器

  • 需求依据:docs/需求建设详细方案V2.0.md 6.1;docs/plan/09-调度监控.md 3、5。
  • 原始证据:ImportJobExecutor 仅执行性能/干扰导入,其余任务统一写入 JOB_EXECUTOR_NOT_CONFIGURED/SKIPPED
  • 验收条件:五个任务消费固化上游输入,产生真实发布或明确的数据不足/验证失败运行结果;不得伪造发布数据。
  • 修复范围:新增五类任务统一执行服务和 Mapper XML;指标、基线、预测可用状态、回测、规则/告警均先暂存后原子发布;发布边界检查协作式停止;调度实例成功时标记 publish_status=PUBLISHED
  • 验证结果:mvn '-Dtest=ImportJobExecutorTest,PipelineTaskServiceTest,MapperXmlConfigurationTest' test,共 9 个测试,0 失败、0 错误;Mapper XML 可加载,新增 SQL 已按迁移表结构静态核对。
  • 遗留风险:遵守只读数据库约束,未在 MySQL 执行新增写 SQL;模型超参数和发布门槛未确认时按需求发布 NO_PUBLISHED_MODEL 等不可用状态,不生成伪预测点。

RV-02 失败 CSV 原子性

  • 需求依据:docs/需求建设详细方案V2.0.md 2.2、7。
  • 原始证据:解析每 500 行写入事实,后续结构异常被捕获并正常返回 FAILED
  • 验收条件:跨分块结构失败时,事实表不保留该文件的任何有效事实;失败批次仍可追溯。
  • 修复范围:importConfigured 建立生产调用事务;非重复文件在任何原始行或事实写入前完成表头、字段数和引号完整性预检;结构失败仅提交批次/文件失败元数据。
  • 验证结果:新增 501 行合法数据后跟未闭合引号用例,断言返回 FAILED/IMPORT_STRUCTURE_INVALID,且 insertPerfRawRowsinsertPerfFacts 均未调用;相关测试共 10 个,0 失败、0 错误。

RV-03 调度依赖判定

  • 需求依据:docs/plan/09-调度监控.md 5。
  • 原始证据:依赖 SQL 按上游 MAX(id) 推断,领取 PENDING 时不校验 READY。
  • 验收条件:明确区分 WAITING、READY、BLOCKED;仅 READY 可领取,BLOCKED 仅针对已终态失败依赖。
  • 修复范围:新增短事务领取服务;先绑定具体导入批次或发布运行,再按 ALL/ANY 检查固化输入;无上游或上游仍运行时保持 PENDING,失败/停止/跳过或成功未发布才跳过;告警任务沿固化发布血缘取得上游指标,不再临时读取最新发布结果。
  • 验证结果:新增 WAITING 不领取测试和 Mapper SQL 契约断言;ImportJobExecutorTest,PipelineTaskServiceTest,MapperXmlConfigurationTest,SchedulingServiceTest,SchedulingServiceReadTest 共 22 个测试通过。
  • 遗留风险:遵守只读数据库约束,绑定与递归血缘 SQL 未对 MySQL 执行写入验证,仅完成 XML 加载和表结构静态核对。

RV-04 性能异常矩阵

  • 需求依据:docs/需求建设详细方案V2.0.md 4.2、7。
  • 原始证据:矩阵请求默认携带单一 metricCode,响应和页面均无静态/动态越界小时数。
  • 验收条件:矩阵一次返回同一筛选范围内的多个 KPI,并由后端返回两类越界小时数和稳定排序。
  • 修复范围:性能矩阵与趋势指标解耦;后端按 (cgi, metricCode) 返回筛选窗口内最新已发布单元及静态/动态越界小时数,按最高关联告警级别和两类小时数稳定排序;前端按 CGI 行和九类 KPI 列展示,点击单元格再更新趋势选择。
  • 验证结果:Controller、Service、Mapper XML 定向测试共 9 个通过;npm run build 成功。
  • 遗留风险:遵守只读数据库约束,窗口函数 SQL 未在客户 MySQL 上执行 EXPLAIN;最终联调阶段需核对实际索引计划和宽表横向滚动。

RV-05 三状态轴与降级语义

  • 需求依据:docs/需求建设详细方案V2.0.md 2.3、4.4。
  • 原始证据:除总览外未统一展示三个状态轴;NO_DATA 判断早于 NOT_CONFIGURED 等明确状态。
  • 验收条件:使用统一组件展示 availability、timeliness、evidenceCompleteness;明确业务状态优先于通用空数据。
  • 修复范围:新增共享 DataStateAxes 并由 PageFeedback 在正常和降级态统一展示;总览、性能、干扰、预测驾驶舱、趋势、基线追溯、模型与回测接入权威 DataState;状态映射先判断基线不足、未配置、模型不可用和不支持,再处理 NO_DATA
  • 验证结果:npm run build 成功;静态核对目标页面均传入后端状态对象,不在前端合并三个状态轴。

RV-06 URL 下钻恢复

  • 需求依据:docs/需求建设详细方案V2.0.md 7;docs/plan/020305 前端适配。
  • 原始证据:性能页和告警页未从 URL 初始化筛选及稳定选择。
  • 验收条件:目标页恢复共享筛选、选中指标/时间及返回地址,筛选和分页同步 URL。
  • 修复范围:性能页从 URL 恢复共享范围、CGI、指标、选中业务时间、分页排序及返回地址,矩阵/明细选择和查询操作同步 URL;告警页恢复 CGI、指标、类型、时间、告警号、分页排序及返回地址,显式 alarmNo 直接打开详情;预测驾驶舱改为携带精确告警号和返回地址;告警 Controller 传递 metricCode 并接受 alarmNo 作为关键词别名。
  • 验证结果:mvn '-Dtest=AlarmControllerTest' test 共 2 个测试通过;npm run build 成功。

RV-07 联动单位元数据

  • 需求依据:docs/需求建设详细方案V2.0.md 4.4、7。
  • 原始证据:LinkageEvidence、Mapper SQL 和页面均缺少双方单位及展示倍率。
  • 验收条件:后端分别返回底噪和性能指标的 storage/display unit、displayMultiplier,前端只按这些元数据展示。
  • 修复范围:LinkageEvidence 增加两侧 storage/display unit 与 displayMultiplier;PublishedDataMapper.xml 从各自指标定义和发布结果读取元数据;干扰图表使用后端倍率生成展示坐标,联动表格使用后端展示单位格式化并显示存储单位;性能下钻保留 returnTo
  • 验证结果:mvn '-Dtest=PublishedDataServiceInterferenceTest,MapperXmlConfigurationTest' test 共 7 个测试通过;npm run build 成功。

最终验证

  • 后端相关测试:RV-06 AlarmControllerTest 2/2;RV-07 PublishedDataServiceInterferenceTest,MapperXmlConfigurationTest 7/7,均通过。
  • 后端全量测试:清理 4 个旧包路径的 target/test-classes 残留生成文件后,mvn test 共 123 个测试,0 失败、0 错误、0 跳过。首次直接执行曾因这些旧字节码出现 4 个 NoClassDefFoundErrormvn clean test 又被现有 8084 后端占用的日志文件阻断,均非源码测试断言失败。
  • 前端构建:最终 npm run build 成功;仅保留 Vite 已有的大 chunk 警告。
  • SQL 门禁:注解 SQL、JDBC/EntityManager 和 Java SQL 字符串扫描均为 NO_MATCHES
  • 只读 HTTP/浏览器验证:Playwright 访问带 CGI、指标、选中时间、分页排序和 returnTo 的性能 URL,被认证守卫重定向到 /login;无安全测试账号,未验证登录后的 URL 表单恢复、告警抽屉和联动单位渲染。
  • 数据库验证:未执行数据库写操作;未对新增发布 SQL 和性能矩阵 SQL 执行 MySQL EXPLAIN 或集成运行。
  • Review 建议:7 个已记录缺陷在代码和自动测试层均已修复;在安全环境完成新增 SQL 集成验证和登录后浏览器验收前,建议有条件通过,不建议直接生产放行。