编辑 | blame | 历史 | 原始文档

功能测试报告_导入校验增强_2026-09-02

1. 功能说明

对数据导入服务(DataImportService)做“导入前置校验 + 解析健壮性”增强,避免像能耗事故那样“列错位静默导入”:
- 运政车辆、轨迹里程:由“固定列位”改为**表头名称映射**(与 H2032 货运月报一致)——列顺序变化也能导入,缺列/列名不符明确报错。
- 城市公交 U203、巡游出租 U402、投资系统导出:新增**表头列位校验**(requireHeaderLayout),列位错位直接拒绝并提示“第 X 列应为…”。
- 货运量周转量:新增表头校验(首行须为「货运量(万吨)/1月…」布局)。
- 规上规下拆分:新增 sheet 布局校验(第 2 行「市州/规上企业运输量」+ 第 3 行「周转量/货运量」子表头)。

2. 测试环境

  • 后端:Spring Boot(8090),本地启动,2026-09-02 重启后生效。
  • 数据库:traffic_audit(localhost:3308)。
  • 方式:curl /api/import/<type> 直接调用,测试报表期 2026-HT / 2026-06(测后已清理)。
  • 文件:官方模板(docs/货运、docs/城市客运、docs/投资)+ 构造用例(列序打乱/错位列/缺列)。

3. 用例与结果

# 类型 用例 预期 实际 结论
1 运政车辆 模板文件导入 成功导入 成功 2 条 ✅
2 运政车辆 列顺序打乱(列名不变) 仍能导入且字段对齐 成功 2 条,入库与模板逐项一致 ✅
3 运政车辆 缺「挂车总吨位(吨)」列 明确报错 表头缺少必需列【挂车总吨位(吨)】 ✅
4 轨迹里程 模板文件导入 成功导入 成功 2 条 ✅
5 轨迹里程 列顺序打乱 仍能导入且字段对齐 成功 2 条 ✅
6 轨迹里程 列名改「月度里程(公里)」 明确报错 表头缺少必需列【月度总里程(公里)】 ✅
7 城市公交 表头第 6 列插「错位列」 拒绝并提示列位 “第 6 列应为「公共汽电车_运营车数」” ✅
8 巡游出租 表头第 5 列插「错位列」 拒绝并提示列位 “第 5 列应为「载客车次总数」” ✅
9 投资系统导出 第 1 列「行号」改「序号」 拒绝并提示列位 “第 1 列应为「行号」” ✅
10 投资系统导出 正确表头 成功 成功 0 条 ✅
11 货运量周转量 模板文件导入 成功导入 成功 18 条 ✅
12 货运量周转量 错类型文件(运政车辆) 拒绝 “表头应为「货运量(万吨)/1月…」布局” ✅
13 规上规下 模板文件导入 成功导入 成功 36 条 ✅
14 规上规下 sheet 名含“当月”但布局错误 拒绝 “sheet「测试当月」未找到「市州/规上…」表头” ✅
15 公路旅客运政车辆数 模板导入(上午体检) 成功 767 条 0 失败 ✅
16 个体客运量 表头识别(模板仅表头) 0 条无报错 成功 0 条 ✅
17 出租车运政 表头识别(模板仅表头) 0 条无报错 成功 0 条 ✅

4. 入库抽查(与源文件逐项对齐)

  • 运政车辆(列序打乱后):安吉汽车物流 牵引 0/挂 96/其它 96/挂车吨位 1057.708/其它吨位 871.56 ✅
  • 轨迹里程:湖北中升运输 月度里程 150427.03/有里程车辆 29 ✅
  • 货运量周转量:武汉 1 月=5367.97597、6 月=5041.04224、去年 1 月=4656.86022 ✅
  • 规上规下:武汉当月 规上=241659.5295/规下=445444.355/合计=687103.884(累计 sheet 一致)✅

5. 发现的问题与处置

  • 未发现新缺陷。遗留:出租车运政模板无数据行,仅验证表头识别;2026-08 已真实导入 42636 条成功,建议后续用真实大文件回归一次。

6. 结论

  • 所有导入类型现在都有类型识别/校验兜底;运政车辆/轨迹里程兼容列顺序变化。功能可用,可交付。

7. 数据说明

  • 测试数据(2026-HT、2026-06 测试期)已全部清理;未触碰 2026-07/08 真实数据。