# 功能测试报告_导入校验增强_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/` 直接调用,测试报表期 `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 真实数据。