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

功能测试报告_中口径排名周转量口径统一_2026-09-19

一、功能说明

问题来源:用户核对桌面《生成_道路运输量汇总表 (1).xlsx》时,在「中口径排名」页手工加了一列
「人工-周转量」(逐月各分项相加),发现与程序生成的「周转量」列有差异(全省 +0.31978 万人公里,
各市州 ±0.01~0.08),要求定位原因并修复。

根因:同一本汇总大表里两页走了两套取数口径。

  • 「中口径排名」页周转量来自后端 ReportExportService.loadMidClassMap() 公交维度:
    逐企业行判断——该行「城际城乡周转量」> 0 就取字段值,= 0 才回退「总量 − 城市内」。
  • 「中口径明细」「道路运输周转量」「中口径分析」等页走台账口径
    (smReadLedgerMetrics()):先按市州按月汇总,再 合计总量 − 合计城市内。

源报表里「总量/城市内/城际城乡」三个数各自保留两位小数,个别企业行上
城际城乡 ≠ 总量 − 城市内(差 ±0.01)。2026 年 1-8 月这类行共 72 行,
程序采信字段值、人工用差额法,累加后即出现该差异。

修改内容:traffic-audit-server/.../reportexport/service/ReportExportService.java
(公交维度,原 2458/2460 行附近)——城际城乡一律用「总量 − 城市内」现算,与台账页/明细页/四页合成口径一致。

二、测试环境

项 内容
后端 Spring Boot,localhost:8090,改后重新编译并重启(start-dev.ps1)
数据库 MySQL localhost:3308/traffic_audit(city_bus_monthly 等)
报表期 2026-08(1-8 月累计 + 8 月单月块)
对照件 D:\桌面\生成_道路运输量汇总表 (1).xlsx(改前生成 + 用户人工列)
生成件 接口 /api/report/export/summaryWorkbook?period=2026-08 → _after_busfix_2026-08.xlsx
辅助脚本 _qa_busfix.py、_qa_busfix2.py、_qa_busfix3.py、_qa_busfix_diff.py、_qa_busfix_err.py、_qa_busfix_hist.py

三、用例与结果

编号 类型 输入 预期 实际 结论
T1 正向 改后生成件「中口径排名」O 列 vs 「中口径明细」S 列,17 市州 逐格相等 17/17 全部相等(武汉 152330.8912、孝感 64429.9445、随州 59015.4820…) 通过
T2 正向 全省累计周转量(排名页 O3) = 明细/人工 1227147.48902 1227147.4888(差 −0.0002 万人公里 = 2 人公里) 通过(差异见「五、遗留」)
T3 正向 武汉累计周转量 = 人工列 152330.8912 152330.8912 通过
T4 正向 8 月单月块 17 市州合计 = 明细 8 月合计 均为 156017.6956 通过
T5 正向 独立接口 passengerMidAnalysis(城际城乡公交累计周转量) = 台账口径 227126.74 227126.74(改前 227127.06) 通过
T6 正向 独立接口 passengerMidRank 全省累计周转量 接近 1227147.489 1227147.4888 通过
T7 回归 改前/改后「中口径排名」客运量列(17 市州 + 全省) 不变 完全一致 通过
T8 回归 「中口径分析」页 累计周转量(台账口径) 不变 逐格一致(1227147.48902 / 904146.38902 / 227126.74…) 通过
T9 回归 同比列(全省 −2.35%、武汉 +4.15% 等) 不变 显示精度内完全一致 通过
T10 回归 整本工作簿逐格对比改前/改后 仅目标格变化 除目标列外只出现 1e-10 级浮点噪声 通过
T11 边界 2025 年基期(同比基数) 不受影响 city_bus_monthly 2025 年「存储城际城乡 ≠ 总量−城市内」行数 = 0 通过
T12 边界 原「存储值缺失(<=0)才回退」兜底是否仍需要 去掉后无副作用 2025/2026 均无「未存城际但 总量−内>0」的行(0 行),兜底从未触发 通过
T13 负向 源库 72 行「存储城际城乡 ≠ 总量−城市内」 统一按差额法 17 市州差值全部归零(改前:武汉 +0.04、孝感 +0.08、随州 −0.02…,全省 +0.3198) 通过
T14 负向 「班线包车」页 2020 年历史列 #VALUE! 非本次引入 改前历史生成件同为 236/456 格;Excel 打开会按 fullCalcOnLoad 重算 通过(既有现象)

四、发现的问题与处置

  1. 口径不一致(本次根因):公交维度逐企业行采信「城际城乡」字段,与台账页差额法冲突 → 已统一为差额法。
  2. 全省行残留 0.0002 万人公里:排名页全省行是母版公式 =SUM(O4:O20),各市州先四舍五入到 4 位再求和,
    与「明细全精度求和」天然差 2 人公里,属母版公式结构性问题,本次未动母版。
  3. 历史列 #VALUE!:POI 重算 2020 年同比列的既有现象,与本次改动无关,Excel 打开即自动重算。

五、结论

  • 修复后「中口径排名」周转量与人工/台账口径 17 个市州逐格一致,差异从 17 项归零;
  • 客运量、同比、分析页、四页合成页均无回归;
  • 2025 同比基期不受影响;
  • 残留 0.0002 万人公里(2 人公里)来自母版全省行 SUM 公式,建议后续单独拍板是否改为全精度写值。

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