测试 Review 修复清单
测试 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.md6.1;docs/plan/09-调度监控.md3、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.md2.2、7。 - 原始证据:解析每 500 行写入事实,后续结构异常被捕获并正常返回
FAILED。 - 验收条件:跨分块结构失败时,事实表不保留该文件的任何有效事实;失败批次仍可追溯。
- 修复范围:
importConfigured建立生产调用事务;非重复文件在任何原始行或事实写入前完成表头、字段数和引号完整性预检;结构失败仅提交批次/文件失败元数据。 - 验证结果:新增 501 行合法数据后跟未闭合引号用例,断言返回
FAILED/IMPORT_STRUCTURE_INVALID,且insertPerfRawRows、insertPerfFacts均未调用;相关测试共 10 个,0 失败、0 错误。
RV-03 调度依赖判定
- 需求依据:
docs/plan/09-调度监控.md5。 - 原始证据:依赖 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.md4.2、7。 - 原始证据:矩阵请求默认携带单一
metricCode,响应和页面均无静态/动态越界小时数。 - 验收条件:矩阵一次返回同一筛选范围内的多个 KPI,并由后端返回两类越界小时数和稳定排序。
- 修复范围:性能矩阵与趋势指标解耦;后端按
(cgi, metricCode)返回筛选窗口内最新已发布单元及静态/动态越界小时数,按最高关联告警级别和两类小时数稳定排序;前端按 CGI 行和九类 KPI 列展示,点击单元格再更新趋势选择。 - 验证结果:Controller、Service、Mapper XML 定向测试共 9 个通过;
npm run build成功。 - 遗留风险:遵守只读数据库约束,窗口函数 SQL 未在客户 MySQL 上执行 EXPLAIN;最终联调阶段需核对实际索引计划和宽表横向滚动。
RV-05 三状态轴与降级语义
- 需求依据:
docs/需求建设详细方案V2.0.md2.3、4.4。 - 原始证据:除总览外未统一展示三个状态轴;
NO_DATA判断早于NOT_CONFIGURED等明确状态。 - 验收条件:使用统一组件展示 availability、timeliness、evidenceCompleteness;明确业务状态优先于通用空数据。
- 修复范围:新增共享
DataStateAxes并由PageFeedback在正常和降级态统一展示;总览、性能、干扰、预测驾驶舱、趋势、基线追溯、模型与回测接入权威DataState;状态映射先判断基线不足、未配置、模型不可用和不支持,再处理NO_DATA。 - 验证结果:
npm run build成功;静态核对目标页面均传入后端状态对象,不在前端合并三个状态轴。
RV-06 URL 下钻恢复
- 需求依据:
docs/需求建设详细方案V2.0.md7;docs/plan/02、03、05前端适配。 - 原始证据:性能页和告警页未从 URL 初始化筛选及稳定选择。
- 验收条件:目标页恢复共享筛选、选中指标/时间及返回地址,筛选和分页同步 URL。
- 修复范围:性能页从 URL 恢复共享范围、CGI、指标、选中业务时间、分页排序及返回地址,矩阵/明细选择和查询操作同步 URL;告警页恢复 CGI、指标、类型、时间、告警号、分页排序及返回地址,显式
alarmNo直接打开详情;预测驾驶舱改为携带精确告警号和返回地址;告警 Controller 传递metricCode并接受alarmNo作为关键词别名。 - 验证结果:
mvn '-Dtest=AlarmControllerTest' test共 2 个测试通过;npm run build成功。
RV-07 联动单位元数据
- 需求依据:
docs/需求建设详细方案V2.0.md4.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
AlarmControllerTest2/2;RV-07PublishedDataServiceInterferenceTest,MapperXmlConfigurationTest7/7,均通过。 - 后端全量测试:清理 4 个旧包路径的
target/test-classes残留生成文件后,mvn test共 123 个测试,0 失败、0 错误、0 跳过。首次直接执行曾因这些旧字节码出现 4 个NoClassDefFoundError;mvn 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 集成验证和登录后浏览器验收前,建议有条件通过,不建议直接生产放行。