功能测试报告:M1-班线包车(MidCalc 企业+个体取数)与 7 月回归(2026-09-08)
一、功能说明
汇总大表数据驱动改造 M1 第五块:把“班线包车页”的数据库取数固化为可复用 Java 计算服务
MidCalc(traffic-audit-server/.../reportexport/calc/MidCalc.java),输出
“月 → 市州/全省 → [客运量(含个体), 周转量(含个体), 个体客运量, 个体周转量](万人/万人公里)”。
它是中口径明细/排名/分析/道路运输周转量等派生页在数据库中唯一的公路班线数据源。
二、测试环境
- 库:
traffic_audit(127.0.0.1:3308),数据 = 2026-01~07 已导入现状;
- 母版基线:
docs/生成汇总大表/_备份_2026年7月道路运输量汇总表_清理前_20260904.xlsx(班线包车页,2026 月度数值列 C/E/G/I/K/M/O 均已缓存);
- 工具:mysql CLI 取数 + Python 逐格比对(
_m1_mid_regress.py,结果 _m1_mid_regress.txt);后端 mvn -q -DskipTests compile 通过(exit=0)。
三、取数口径(经母版逐格反推确认,2026-07 与 1-7 月全部命中)
| 母版行 |
口径 |
来源 |
| 客运量 / 旅客周转量(万人 / 万人公里) |
企业总计 + 个体并入 |
h2031_enterprise_monthly.passenger_total / turnover_total(人/人公里)÷10000,叠加 passenger_individual_monthly.passenger_count / turnover ÷10000 |
| 其中:个体客运量 / 个体旅客周转量 |
个体数 ÷10000 |
仅黄石/襄阳/荆门/孝感/黄冈/随州 6 市有数 |
| 湖北省(全省)行 |
17 市州之和 |
与母版“全省行=Σ城市行”公式一致 |
| 同比 |
不计算 |
Q1:以母版缓存 2025 参照组为基准,由写回层填表时计算 |
四、用例表
| # |
用例 |
输入 |
预期 |
实际 |
结论 |
| 1 |
企业客运量/周转量(含个体并入) |
库 2026-01~07 |
与母版班线包车城市行“客运量/周转量”列逐格一致 |
350 格 diff=0 |
通过 |
| 2 |
其中个体客运量/周转量 |
库 2026-01~07 |
与母版“其中个体”行逐格一致(6 市) |
含于上述 350 格,diff=0 |
通过 |
| 3 |
湖北省行 = Σ 17 市州 |
库汇总 |
与母版公式口径一致 |
一致 |
通过 |
| 4 |
中口径分析“公路班线”锚点 |
库 2026-07 / 1-7 累计 |
当月 1631.2013、累计 11204.5406(母版缓存值) |
1612.2015+18.9998=1631.2013;11062.7993+141.7413=11204.5406 |
通过 |
| 5 |
中口径分析页锚点(当月/累计) |
库 2026-01~07 重算 |
当月 4028.3213、累计 27524.4906 及四类细分 |
当月 1631.2013/1466.66/509/421.46、累计 11204.5406/10194.09/3640.95/2484.91,全部一致 |
通过 |
| 6 |
Java 编译 |
mvn -q -DskipTests compile |
无错误 |
exit=0 |
通过 |
五、发现的问题与处置
- 初版回归误把“客运量”行当作纯企业数,比对发现黄石等 6 市母版值 = 企业+个体(差量恰为该市个体值);
经逐格反推确认**班线包车“客运量/周转量”口径含个体**,“其中个体”行为其子集 → 已按含个体口径实现并复跑 0 差异。
- 比对脚本初期把母版**文本数字**当作空值跳过(公交台账页 2026-06 M 列以文本存储,如
'4970.63'),
导致“累计城际城乡公交”一度误算为 8676.57、与中口径分析页 10194.09 不符(差量恰为 6 月 1517.52)。
已改为“文本→数值”归一后复算:**中口径分析页当月/累计与库重算逐项 0 差异,并非旧残值**。
实现注意:读母版缓存一律兼容文本数字。
- 中口径排名页**左块**(A..H,无期次标题)数值经比对为陈旧错位:A 列客运量=2026-01 当月值、
E 列周转量=2026-02 当月值(17 市州逐格吻合);**右块(J..R,1-7 月累计)与库重算 0 差异**。
处置:M2 生成时左块应改为“当月 2026-07”重算修正,右块沿用现有口径即可。
六、结论与下一步
- 结论:班线包车页可从库完整复算(350 格 0 差异),口径锁定;
MidCalc 已入库并通过编译。
- 下一步:① M1 剩余派生页口径核对(排名/分析/道路运输周转量,建议随 M2 重算实现);② M2 SummaryFiller
写回台账+成品页并逐格 diff(含排名页左块“当月 2026-07”错位修正的验证);③ 8 月实弹。