功能测试报告_货运月报持续在规企业分市州累计运距_2026-09-18
一、功能说明
- 需求:将货运月报「持续在规企业」分市州 1-8 月累计运距及同比情况整理成 Excel 表格,生成到桌面。
- 口径:
- 持续在规企业 = 2026 年 1-8 月连续 8 个月均上报《道路货物运输月度生产情况》(H203-2)月报的企业,共 636 家;
- 累计平均运距(公里)= 1-8 月累计货物周转量 ÷ 1-8 月累计货运量(加权平均);
- 同比 = 2026 年 1-8 月累计运距 ÷ 2025 年 1-8 月累计运距 − 1,为保证可比,只在**两年均持续在规的 545 家企业**上计算。
- 数据来源:
traffic_audit.h2032_enterprise_monthly(2025-01 ~ 2026-08 企业级月报)。
- 产出:
C:\Users\郑玉洁\Desktop\货运月报_持续在规企业_分市州1-8月累计运距及同比_2026-09-18.xlsx,含 5 个页签:
说明与口径、分市州汇总、分市州分月、企业明细(636 行)、口径校验。
- 生成脚本:
docs\工具\持续在规企业累计运距生成.py(复跑需先生成两份 TSV 导出件,SQL 见附录)。
二、测试环境
| 项 |
内容 |
| 数据库 |
MySQL 127.0.0.1:3308 / traffic_audit,表 h2032_enterprise_monthly |
| 运行环境 |
Python 3.14.2 + openpyxl 3.1.5 |
| 对照物 1 |
《2026年8月规上货物周转量与平均运距分析报告(草稿)》全省当月/累计口径 |
| 对照物 2 |
docs\生成汇总大表\2026年8月道路运输量汇总表.xlsx「 货运」页「其中规上货运量/规上货物周转量」 |
| 输出目录 |
工作区 outputs\(生成)+ 桌面(交付),两份 SHA256 一致 |
三、用例表
| 编号 |
类型 |
输入 |
预期 |
实际 |
结论 |
| TC01 |
正向 |
2026-08 全省规上货运量 |
3665.36 万吨 |
3665.36 万吨 |
通过 |
| TC02 |
正向 |
2026-08 全省规上货物周转量 |
570004.44 万吨公里 |
570004.44 万吨公里 |
通过 |
| TC03 |
正向 |
2026 年 1-8 月累计货运量/周转量 |
31399.82 / 4927161.77 |
31399.82 / 4927161.77 |
通过 |
| TC04 |
正向 |
2026-01~07 逐月规上货运量、周转量与汇总表「 货运」页比对(14 项) |
全部一致 |
14/14 一致(4 位小数) |
通过 |
| TC05 |
正向 |
17 市州覆盖面 |
全覆盖、无未识别地区码 |
17/17,未识别 0 条 |
通过 |
| TC06 |
正向 |
企业明细 636 行求和 |
= 分市州汇总合计 |
31399.8248 / 4927161.7743,差异 0 |
通过 |
| TC07 |
正向 |
分市州分月页 |
8 月全省 = 发布口径 155.51 公里;各市州累计列 = 汇总页累计列 |
155.51;17 个市州逐项 0 差异 |
通过 |
| TC08 |
正向 |
全省 1-8 月累计平均运距 |
= 累计周转量 ÷ 累计货运量 |
156.92 = 4927161.77 ÷ 31399.82 |
通过 |
| TC09 |
边界 |
2026 各月上报企业数 |
各月一致,支撑「持续在规」判定 |
各月均为 636 家,全期一致 |
通过 |
| TC10 |
边界 |
5 家 1-8 月货运量、周转量全为 0 的企业 |
计入企业数,不影响市州运距 |
运距汇总未受影响 |
通过 |
| TC11 |
边界 |
武汉石化交通运输有限公司、湖北捷龙交通运业有限公司 1 月地区码 420100、其后 420107/420103 |
同属武汉市,归集不变 |
均归入武汉市 |
通过 |
| TC12 |
负向 |
仙桃市「两年均持续在规」企业数 = 0 |
同比留空 + 明确备注,不除零报错 |
同比列空,备注「同比不适用:2025 年 1-8 月无连续上报记录」 |
通过 |
| TC13 |
负向 |
累计货运量为 0 的企业 |
累计运距留空,不除零报错 |
逻辑已防除零(本表 636 家无此类企业) |
通过 |
| TC14 |
负向 |
地区码不在 17 市州映射内 |
归入「未识别」并在校验页暴露 |
实际 0 条 |
通过 |
四、发现的问题与处置
- 生成脚本行号错位(已修):首次生成时汇总页表头被数据覆盖、末行「神农架林区」被合计行覆盖,根因是
rr 自增次数与写行位置不匹配。修正后重跑,分市州汇总 为表头 + 17 市州 + 合计共 18 行,逐行核对无误。
- 桌面副本一度为修正前版本(已修):重新同步并校验工作区与桌面文件 SHA256 一致(94869 字节)。
- 口径待业务确认(2 项):
- 「持续在规企业」目前按「2026 年 1-8 月连续 8 个月上报」定义为 636 家;若业务口径是「连续两年在规」或「连续 12 个月在规」,需重新取数。
- 同比采用 545 家可比口径(剔除 91 家 2025 年无同期连续上报的企业),仙桃市因无可比企业同比留空。
五、结论
14 条用例(8 正向 / 3 边界 / 3 负向)全部通过;全省当月、累计、分市州三个层级与已发布口径**零差异**,明细与汇总逐项对账一致,交付件已生成到桌面。仅遗留 2 项口径确认事项,不影响本次交付数据本身的正确性。
附录:复跑用 SQL
-- 企业级累计(导出为 _tmp_persist_scope.tsv)
SELECT MAX(region_code) rc, enterprise_name en, IFNULL(MAX(enterprise_code),'') ec,
IFNULL(MAX(unified_credit_code),'') ucc,
SUM(CASE WHEN report_period BETWEEN '2026-01' AND '2026-08' THEN IFNULL(freight_total,0) ELSE 0 END) f26,
SUM(CASE WHEN report_period BETWEEN '2026-01' AND '2026-08' THEN IFNULL(turnover_total,0) ELSE 0 END) t26,
COUNT(DISTINCT CASE WHEN report_period BETWEEN '2026-01' AND '2026-08' THEN report_period END) m26,
SUM(CASE WHEN report_period BETWEEN '2025-01' AND '2025-08' THEN IFNULL(freight_total,0) ELSE 0 END) f25,
SUM(CASE WHEN report_period BETWEEN '2025-01' AND '2025-08' THEN IFNULL(turnover_total,0) ELSE 0 END) t25,
COUNT(DISTINCT CASE WHEN report_period BETWEEN '2025-01' AND '2025-08' THEN report_period END) m25
FROM h2032_enterprise_monthly
WHERE report_period BETWEEN '2025-01' AND '2026-08'
GROUP BY enterprise_name HAVING m26 = 8;
-- 企业级分月(导出为 _tmp_persist_scope_monthly.tsv)
SELECT report_period, region_code, enterprise_name, IFNULL(freight_total,0), IFNULL(turnover_total,0)
FROM h2032_enterprise_monthly WHERE report_period BETWEEN '2025-01' AND '2026-08';