# 功能测试报告_货运月报持续在规企业分市州累计运距_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 条 | 通过 | ## 四、发现的问题与处置 1. **生成脚本行号错位(已修)**:首次生成时汇总页表头被数据覆盖、末行「神农架林区」被合计行覆盖,根因是 `rr` 自增次数与写行位置不匹配。修正后重跑,`分市州汇总` 为表头 + 17 市州 + 合计共 18 行,逐行核对无误。 2. **桌面副本一度为修正前版本(已修)**:重新同步并校验工作区与桌面文件 SHA256 一致(94869 字节)。 3. **口径待业务确认(2 项)**: - 「持续在规企业」按「2026 年 1-8 月连续 8 个月上报」定义为 636 家,**用户 2026-09-18 已确认此口径**(原列出「连续两年在规」「连续 12 个月在规」两种备选,均不采用)。 - 同比采用 545 家可比口径(剔除 91 家 2025 年无同期连续上报的企业),仙桃市因无可比企业同比留空。 ## 五、结论 14 条用例(8 正向 / 3 边界 / 3 负向)全部通过;全省当月、累计、分市州三个层级与已发布口径**零差异**,明细与汇总逐项对账一致,交付件已生成到桌面。仅遗留 2 项口径确认事项,不影响本次交付数据本身的正确性。 ## 附录:复跑用 SQL ```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'; ```