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

功能测试报告_投资系统新模板按表头解析与审核基准缺失保护_2026-09-21

一、功能说明

# 功能 说明
1 投资系统导出**按表头定位**解析 用户 2026-09-21 把「与投资系统比对的明细表」换成了新模板《2026年8月投资系统项目明细》(多一列「项目所处阶段」、少一列「自年初累计」,整体右移)。原实现写死 8 列列位,遇新模板必然报「表头与系统模板不一致」。本次改为按表头关键字实时定位列,兼容新旧两种模板
2 审核比对「基准缺失」保护 新模板没有「自年初累计」列 → investment_system.year_cum 为 NULL。原实现用 nvl() 把 NULL 当 0,会把 100+ 个项目全部误判为「差异」。改为:基准为 NULL 时跳过该字段比对并记 WARN 日志
3 十堰物流汇总表源文件清理(数据处置,非代码) 按用户 2026-09-21「清除掉」的要求,删除该文件里的武汉段(27 个项目)与黄石段(4 个项目),只保留十堰段

改动文件:
- traffic-audit-server/src/main/java/com/trafficaudit/dataimport/service/DataImportService.java(importInvestmentSystem 重写 + 新增 findColByKeywords / headerText)
- traffic-audit-server/src/main/java/com/trafficaudit/auditengine/service/AuditEngineService.java(checkInvestCrossDiff 基准缺失保护)

二、测试环境

  • 后端 Spring Boot 8090,重启加载新代码:backend.log 2026-09-21 10:20:30 Started TrafficAuditApplication;前端 8080
  • 数据库 MySQL 3308 / traffic_audit
  • 新旧模板列结构对照(xlrd 读取):
列 老模板《模板_查询结果(投资系统-客运+物流 2026.7).xls》 新模板《2026年8月投资系统项目明细.xls》
1 行号 行号
2 单位 投资项目
3 时期 时期
4 计划总投资 项目所处阶段(新增)
5 自开始累计 计划总投资
6 本年计划投资 本年计划投资
7 自年初累计 自开始建设至本年(月)底-累计完成投资
8 当月完成投资 当月完成投资
— — 无「自年初累计」列

三、用例表

# 用例 输入 预期 实际 结论
T01 十堰源文件清理-结构 原《湖北省十堰…汇总表(月报)(2026年8月).xls》 只保留十堰段,武汉/黄石段消失 行数 86 → 33;十堰段第 10 行起、7 个项目、合计行保留;武汉/黄石段 0 行 通过
T02 十堰源文件清理-备份 同上 原件先备份到输出目录 docs/投资/输出/源文件备份/…_原始含武汉黄石_20260921.xls(108544 字节) 通过
T03 8 月物流重导(正向) POST /api/import/investCityBatch?period=2026-08&category=物流园区 十堰只出 7 条,不再产生武汉/黄石项目 total=97、success=97、fail=0;十堰文件 ok=7(改前 38);武汉/黄石 0 条 通过
T04 重导后库核对 同上 项目/月度数不增不减 investment_project = 152、2026-08 月度数 = 136、十堰物流 = 7(与清理前一致) 通过
T05 新模板导入(正向) 新模板 129 行数据 全部入库 返回「投资系统导出导入成功, 共 129 条记录」;investment_system 2026-08 = 129、2026-07 = 148 不受影响 通过
T06 字段映射抽查 同上 逐列等于源文件 湖北省综合运输服务站及候车亭:12721.5 / 10306.2 / 10316.1 / 93.5;汉口客运中心:315700 / 30000 / 178235.4 / 550 通过
T07 缺列处理(负向) 同上(无「自年初累计」列) year_cum 留空,**不得**把「自开始建设…」列误当自年初累计 129 行 year_cum 全为 NULL(未错填) 通过
T08 老模板兼容(回归) 老格式表头 仍能导入 老文件已不在输入目录;改为按表头定位后,老模板 8 列关键字(单位/计划总投资/自开始建设/本年计划投资/自年初/当月完成投资)全部可命中(代码审查);存量 2026-07 = 148 行未受影响 通过(静态)
T09 审核基准缺失保护 POST /api/audit/execute?period=2026-08&reportType=INVEST 自年初累计规则不再产生误报 RULE_I002 结果 0 条;日志出现「投资比对跳过(投资系统基准缺失):rule=RULE_I002 … field=自年初累计」 通过
T10 审核其它规则未受影响 同上 正常出结果 RULE_I001(自开始建设累计)2 条、RULE_I003(本月完成)1 条、RULE_I004(存在性)25 条,合计 28 条 通过
T11 审核幂等 同上重复执行 只清 INVEST 旧结果、不重复堆积 两次执行结果条数一致(28 条) 通过

四、发现的问题与处置

# 问题 处置
P1 新模板多出「项目所处阶段」列,但库表 investment_system 没有对应字段 本次不落库。若业务要比对「建设阶段」,需加列并同步 docs/init.sql、docs/database.md(按项目规矩三处同步)
P2 新模板**没有「自年初累计」列** → 该维度无法比对 已改为「基准缺失即跳过 + WARN 日志」,不产生误报。若业务仍要比对自年初累计,需新模板补回该列(或确认改用「自开始建设累计」口径)
P3 老模板文件 模板_查询结果(投资系统-客运+物流 2026.7).xls 已不在 docs/投资/输入/(被用户替换) 2026-07 的 148 行为老口径存量数据,保留不动;后续月份统一用新模板
P4 审核新增 25 条「投资系统导出中不存在」 多为乡镇综合运输服务站与部分物流项目(如 桂花镇/马桥镇/高桥镇综合运输服务站、郑万高铁巴东综合客运枢纽、潜江传化公路港项目…),属投资系统未收录的客观差异,供业务判断,非本次改动引入
P5 源文件为 .xls 且含合并单元格 用 Excel 16.0 COM 整行删除(第 11~63 行),保存后 xlrd 复核行数 86 → 33;脚本结束清理了本次新建的孤儿 EXCEL 进程

五、结论

  • 新模板《2026年8月投资系统项目明细》已可正常导入(129 条),字段逐列对齐,缺列不误填;
  • 审核不再因「基准缺失」成片误报(RULE_I002 由 100+ 条降为 0 条),其余三条 INVEST 规则结果正常(28 条);
  • 十堰物流汇总表源文件已清除武汉/黄石段(备份留档),重导验证:十堰只出 7 条,库内项目/月度数不增不减,**该残留问题闭环**。

测试人:Codex(AI) 测试日期:2026-09-21