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

功能测试报告_市州统一填报模板与县(市、区)解析_2026-09-20

一、功能说明

功能 说明
市州填报模板 新增两份市州月报模板:docs/投资/模板/模板_市州月报_客运站场.xlsx、docs/投资/模板/模板_市州月报_物流园区.xlsx;单页签「月报」17 列单行表头 + 「填报说明」页
县(市、区)列解析 市州单表导入新增对「县(市、区)」列的识别,写入项目主档 county(原先仅投资系统导出会写)
表头行判定收紧 findInvestHeader 增加统一的关键词判定 investHeaderKey,并要求表头行同时满足「含项目名称」+「至少 2 个短表头字段(≤20 字)」,避免把「填报说明」页的长句当作数据表

改动文件:traffic-audit-server/src/main/java/com/trafficaudit/dataimport/service/DataImportService.java

二、测试环境

  • 后端 Spring Boot 8090(重启后启动时间 2026-09-20 16:06:48),前端 8080,MySQL 3308 / 库 traffic_audit
  • 测试数据:以「模板_市州月报_客运站场.xlsx」为底稿生成 武汉市_2026-09_客运站场月报.xlsx(2 条测试项目)
  • 调用方式:POST /api/import/investCityBatch?period=2026-09&category=客运站场(本地自签 JWT)
  • 入库抽查:investment_project / investment_monthly 逐字段与源文件比对

三、用例表

# 用例 输入 预期 实际 结论
T01 模板结构(客运站场) 打开模板 「月报」页第 4 行 17 列表头;E 列建设性质下拉;第二个页签为填报说明且含 11 条要求 与预期一致 通过
T02 模板结构(物流园区) 打开模板 同 T01,标题为「交通物流(物流园区)」 与预期一致 通过
T03 正向导入(2 条项目) 按模板填报 2 条项目(含县区、批文号) total=2、success=2、city=武汉市 total=2、success=2、fail=0、city=武汉市 通过
T04 入库抽查-主档 同上 8 个主档字段逐项等于源值 江岸区/测试建设单位A/新建/2026/2027/12345.67/测试工可A/测试初设A;洪山区/测试建设单位B/续建/2024/2026/20000/测试工可B/初设为空 通过
T05 入库抽查-月度数 同上 6 个月度字段逐项等于源值、报表期正确 报告期 2026-09;1000/5000/1200/300/在建/测试形象进度A;15000/8000/6000/1500/完工/测试形象进度B 通过
T06 负向:说明页被当数据表(修复前) 模板文件(含填报说明页) 只解析「月报」页 失败:误解析 8 条说明页长句为项目(id 233~240),city 被文件名兜底为「武汉市」 已修复(见 T07)
T07 负向:说明页被当数据表(修复后) 同 T06 说明页不再被识别为数据表 同一文件由 8 条降为 2 条正确记录,说明页 0 条 通过
T08 负向:县区列写法变体 表头「县(市、区)」「县(市、区)」「县市区」 均识别为县区列 归一化匹配后三种写法均命中(修复前写成「县(市,区)」带逗号,均不命中) 通过
T09 回归:8 月真实市州文件重导 8 月客运 9 份、物流 16 份原始月报 解析条数与历史批次一致、无报错 客运 39 条、物流 128 条,均 fail=0(与 09-19 批次 531/532 一致) 通过
T10 回归:8 月月度数逐值比对 重导前 136 行 vs 重导后 136 行 逐值一致 去主键后逐行比对:**IDENTICAL** 通过

四、发现的问题与处置

# 问题 处置
P1 「填报说明」页里含「项目名称」的长句被当作表头行,整页 8 条被误建成项目 已修:表头行判定要求「含项目名称」+「至少 2 个短表头字段(≤20 字)」;测试数据已从库中清除
P2 县区列关键词写成 县(市,区)(逗号),实际表头是 县(市、区)(顿号),导致 county 取不到 已修:先归一化(全/半角括号、顿号、逗号全部去掉)再匹配「县(市区)」「县市区」「区县」
P3 回归重导 8 月物流时,《湖北省十堰交通物流基础设施投资统计汇总表(月报)》再次带出非十堰的武汉 27 + 黄石 4 = 31 个项目 已再次清除(investment_project 152 / investment_monthly 284 恢复原状);根治需清理 8 月源文件,**待用户确认是否由我代做**
P4 真实市州月报表头里**没有**「县(市、区)」列(抽查 8 月 25 份文件,0 份含该列) 属正常:历史数据 county 为空是数据源限制;9 月起按统一模板填报后该列才有值
P5 测试用的临时文件与临时数据 测试文件 docs/投资/输入/客运(客运站)/9月/武汉市_2026-09_客运站场月报.xlsx、测试项目 A/B、2026-09 导入批次已全部删除

五、结论

  • 两份市州填报模板可用,正向链路(模板 → 解析 → 主档 + 月度数)逐字段对齐;
  • 表头判定收紧后,模板自带的「填报说明」页不再被误当数据表(负向用例 T06/T07);
  • 8 月真实市州数据重导回归无反例:条数与历史一致,月度数逐值一致;
  • 遗留:8 月十堰汇总表源文件的非十堰段未清理(P3),需用户确认清理方式。