zhizhijie
2026-09-21 a5e320a0df816063f519bb653a2821ad46399a29
docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-21.md
@@ -58,17 +58,29 @@
     **导出「按月分目录 + è‡ªåЍ备份 + è¿è¡Œæ—¥å¿—/校验报错」未实现**(Q10 å·²ç­”同意);
  6. å¯¼å‡ºå‰åŸºæ•°ä½“检(B4)只做了一半:后端 `getLastMidIssues()` **无任何调用方**,前端未消费、无《数据缺失清单》页。
### 5. åå °ç‰©æµæºæ–‡ä»¶æ¸…理(用户「清除掉」)+ æŠ•资系统新模板支持
- **十堰源文件清理(数据处置)**:`docs/投资/输入/物流(物流园区)/8月/湖北省十堰交通物流基础设施投资统计汇总表(月报)(2026å¹´8月).xls`
  é‡Œçš„æ­¦æ±‰æ®µï¼ˆ27 ä¸ªé¡¹ç›®ï¼‰ä¸Žé»„石段(4 ä¸ªé¡¹ç›®ï¼‰ç”¨ Excel COM æ•´è¡Œåˆ é™¤ï¼ˆç¬¬ 11~63 è¡Œï¼‰ï¼Œåªç•™åå °æ®µï¼ˆ7 ä¸ªé¡¹ç›®ï¼‰ï¼›
  åŽŸä»¶å…ˆå¤‡ä»½åˆ° `docs/投资/输出/源文件备份/…_原始含武汉黄石_20260921.xls`。
  é‡å¯¼éªŒè¯ï¼šè¯¥æ–‡ä»¶ç”± **38 æ¡ â†’ 7 æ¡**,8 æœˆç‰©æµ total 128 â†’ 97,库内仍是 152 ä¸ªé¡¹ç›® / 136 æ¡ 2026-08 æœˆåº¦æ•°ï¼ˆä¸å¢žä¸å‡ï¼‰â†’ **残留问题闭环**。
- **投资系统导出新模板**:用户把比对明细表换成《2026å¹´8月投资系统项目明细》(多「项目所处阶段」、少「自年初累计」,列位整体右移)。
  åŽŸå®žçŽ°å†™æ­» 8 åˆ— â†’ æ”¹ä¸º**按表头关键字定位**(`findColByKeywords`),兼容新旧模板;缺列时 `year_cum` ç•™ç©ºè€Œä¸æ˜¯é”™å¡«ã€‚
  æ–°æ¨¡æ¿ 129 æ¡å·²å…¥åº“(`investment_system` 2026-08 = 129,2026-07 = 148 ä¸å—影响),字段逐列抽查一致。
- **审核「基准缺失」保护**:新模板没有「自年初累计」,原 `nvl()` ä¼šæŠŠ NULL å½“ 0 â†’ 100+ æ¡è¯¯æŠ¥ã€‚改为基准为 NULL æ—¶è·³è¿‡å¹¶è®° WARN æ—¥å¿—。
  å®žæµ‹ï¼šRULE_I002 ç”±ã€Œæ¯ä¸ªé¡¹ç›®ä¸€æ¡ã€é™ä¸º **0 æ¡**;RULE_I001 2 æ¡ã€RULE_I003 1 æ¡ã€RULE_I004(存在性)25 æ¡ï¼Œåˆè®¡ 28 æ¡å‡ä¸ºçœŸå®žå·®å¼‚。
## äºŒã€æµ‹è¯•结果摘要
- æœ¬æ¬¡**无代码改动**,无《功能测试报告》(仅有数据核查)。
- è§ã€ŠåŠŸèƒ½æµ‹è¯•æŠ¥å‘Š_投资系统新模板按表头解析与审核基准缺失保护_2026-09-21.md》:**11 æ¡ç”¨ä¾‹é€šè¿‡**(正向 6 / è´Ÿå‘ 1 / å›žå½’ 4)。
- ä¸ŠåŠæ—¥ï¼ˆæ±‡æ€»å¤§è¡¨åŒè½¨åˆ¶å®šä½ï¼‰ï¼šæœ¬æ¬¡**无代码改动**,无《功能测试报告》(仅有数据核查)。
- æ•°æ®æ ¸æŸ¥å£å¾„:全部结果与库内 `h2031_enterprise_monthly` / `passenger_individual_monthly` /
  `city_bus_monthly` / `city_taxi_monthly` / `wyc_order_monthly` çŽ°ç®—å€¼é€ä½æ¯”å¯¹ï¼Œ17 å¸‚å·ž Ã— 8 ä¸ªæœˆï¼Œ
  ä¸€è‡´æ€§è¾¾ 1e-9;复现脚本与中间输出已留档(见上)。
## ä¸‰ã€é—留问题与待办
1. **P0-1**:历史同比基数双轨制 â€”— æ–¹æ¡ˆ A(排名页改用母版 2025 é™æ€åˆ—,推荐)/ æ–¹æ¡ˆ B(明细页改现算)
   å¾…用户拍板,**未实施**。
1. **P0-1 å·²è§£å†³**:用户选择方案 A(排名页改用母版 2025 é™æ€åˆ—),已于 2026-09-21 å®žæ–½å¹¶å›žå½’通过,见本文件第六节。
2. **P0-2**:母版依赖 â€”— 9 æœˆå‡ºè¡¨éœ€å…ˆæœ‰æ–°æ¯ç‰ˆï¼›æ–¹æ¡ˆ A(程序自动扩列,2-3 å¤©ï¼‰/ æ–¹æ¡ˆ B(Excel å°å·¥å…·ï¼Œ1 å¤©ï¼‰å¾…拍板。
3. P2:B4 å¯¼å‡ºå‰åŸºæ•°ä½“检 + ã€Šæ•°æ®ç¼ºå¤±æ¸…单》页、D ç»„增速排名措辞、中口径明细 4 æ ¼ `#DIV/0!`、
   ç¼ºæ¯ç‰ˆæç¤ºå®žæµ‹ã€éƒ¨ç½²åŒ…旧母版(用户明确暂不处理)。
@@ -108,3 +120,51 @@
**本次无代码改动**,属数据类工作,故不另出《功能测试报告》。
**待用户确认**:① äº¤ä»˜åŒ…是否需要压缩 zip(50 MB â†’ ä¾¿äºŽå¾®ä¿¡/网盘传输);② åŒäº‹çŽ¯å¢ƒè‹¥ä¸º MySQL 5.7,需另出一份 5.7 ä¸“用导出;③ æ˜¯å¦éœ€è¦æŠŠ `docs/`(母版、投资源文件)一并打包 â€”— è¯¥éƒ¨åˆ†å·²åœ¨ git ä»“库内,clone å³å¯èŽ·å¾—ã€‚
### äº”之补充:10:34 å¤æŸ¥å‘现备份已过期,已重新导出
- ç”¨ `CHECKSUM TABLE` å¤æ£€ 10:17 é‚£ä»½å¤‡ä»½æ—¶å‘现 4 å¼ è¡¨æ ¡éªŒå’Œä¸ä¸€è‡´ï¼Œè¿›ä¸€æ­¥æŸ¥ `COUNT(*)`:`audit_result` 3393→3421、`import_batch` 417→419、`investment_system` 148→277、`investment_monthly` 284→284(行数同但内容变),最后写入时间 10:20~10:22
  â†’ å³ **10:17 å¯¼å‡ºä¹‹åŽï¼Œå¦ä¸€ä¸ªä¼šè¯ï¼ˆæäº¤ 2e6830b)又往库里导入了投资系统数据**,旧备份已过期。
- å·²é‡æ–°å¯¼å‡ºï¼š**10:34:57,52,030,977 å­—节,合计 128,962 è¡Œ**(旧份 128,803 è¡Œï¼‰ï¼Œã€Šè¿˜åŽŸè¯´æ˜Žã€‹å·²æŒ‰æ–°æ•°æ®é‡å†™ï¼ˆå«æ–‡ä»¶ SHA256)。
- é‡æ–°éªŒè¯ï¼ˆä¸‰å±‚,全过):结构 `CREATE TABLE` 29/29;逐表 `COUNT(*)` 29/29 ä¸€è‡´ï¼›`CHECKSUM TABLE` 29/29 ä¸€è‡´ï¼›`mysqldump --order-by-primary` æœ‰åºå¯¼å‡ºä¸¤ä»½æ•°æ®æ–‡ä»¶ **SHA256 å®Œå…¨ç›¸åŒ**(逐行内容一致)。
- **经验**:备份只是某一时刻的快照,导完之后只要还在导数据/跑审核就旧了;交付前必须最后再导一次。
- æ–°å¢žæ–‡æ¡£ï¼š`docs/工具/数据库备份与还原操作步骤.md`(备份参数说明 / ä¸‰æ­¥éªŒè¯ / è¿˜åŽŸ / å¸¸è§é—®é¢˜ï¼Œå‘½ä»¤å¯ç›´æŽ¥å¤åˆ¶ï¼‰ã€‚
## å…­ã€è¿½åŠ ï¼šP0-1 åŽ†å²åŒæ¯”åŸºæ•°åŒè½¨åˆ¶æŒ‰æ–¹æ¡ˆ A ä¿®å¤
用户选择 **方案 A**(排名页改用母版《中口径明细》2025 é™æ€åˆ—),已完成代码、回归与文档更新。
- ä»£ç ï¼š`ReportExportService.exportPassengerMidRank()` å¢žåŠ æ¯ç‰ˆå·¥ä½œç°¿ä¸Šä¸‹æ–‡é‡è½½ï¼›æ±‡æ€»å¯¼å‡ºå¤ç”¨å†…å­˜æ¯ç‰ˆï¼Œç‹¬ç«‹æŽ’åè¡¨å¯¼å‡ºæ‰“å¼€å¯¹åº”æ¯ç‰ˆï¼›æŒ‰è¡¨å¤´è¯†åˆ« 2025 å¹´é€æœˆåˆ—,读取「总客运量 / æ€»æ—…客周转量」并按 1..N æœˆç´¯è®¡ï¼›å…¨çœåŸºæ•°ç”± 17 å¸‚州求和;静态基数不完整时回退库内现算并写 WARN。
- ç¼–译:`mvn -DskipTests compile` é€šè¿‡ã€‚
- ç”Ÿæˆå›žå½’:2026-08 æ±‡æ€»å¤§è¡¨ï¼›é»„冈客运量累计同比排名/明细均为 `7.641733%`(原 7.744917%)。
- åŒé¡µä¸€è‡´æ€§ï¼š17 å¸‚å·ž Ã— å®¢è¿é‡/周转量的累计值与同比共 68 ä¸ªæ•°å€¼å¯¹å…¨éƒ¨ä¸€è‡´ï¼Œæœ€å¤§ç»å¯¹å·® `2.91e-11`;全省累计值 = Î£17 å¸‚å·žï¼›8 æœˆå½“月同比 34 ä¸ªæ•°å€¼å¯¹æœ€å¤§å·® `5.48e-15`。
- ç‹¬ç«‹ã€Šç”Ÿæˆ_中口径排名.xlsx》也按同一静态口径导出,结果与明细页一致。
- æµ‹è¯•产物:`_tmp/qa_plan_a_20260921/生成_道路运输量汇总表_202608_方案A.xlsx`、`_tmp/qa_plan_a_20260921/生成_中口径排名_202608_方案A.xlsx`(按约定保留)。
- æµ‹è¯•报告:`docs/功能测试报告/功能测试报告_中口径排名同比基数方案A_2026-09-21.md`。
## ä¸ƒã€è¿½åŠ ï¼šåŒäº‹ã€Šæ±‡æ€»å¤§è¡¨è½¯ä»¶è¾“å‡ºä¸Žæ‰‹å·¥å®šç¨¿å·®å¼‚ã€‹äººå·¥æ ¸å¯¹
同事(xyc)推送差异报告(提交 `47a8734`)并口头要求「人工检查一下报的差异」,本次完成核对:
- äº§å‡ºå›žæ‰§ï¼š`docs/问题汇总/汇总大表差异核对回执_2026-09-21.md`(按对方编号逐条回答)。
- å¤æ ¸æ–¹å¼ï¼šæœ¬åœ°æ¯ç‰ˆ `2026å¹´8月道路运输量汇总表.xlsx` + ç”Ÿæˆä»¶ `生成_道路运输量汇总表.xlsx`(9/18)逐格读公式与缓存值(内联 Python,未落盘)。
- ç»“论:
  1. `公交/出租/网约车` `U5:U76`(报告 Â§4.1):业务口径确认**可清空留空**。根因是母版自相矛盾——`U5` åªç®—到 2025 å¹´ 6 æœˆï¼Œè€ŒåŒé¡µç´¯è®¡åŒæ¯” `T5` çš„分母含 1-8 æœˆï¼›è¡¥ 7、8 æœˆåŽä¸Žæ‰‹å·¥å€¼é€ä½å»åˆï¼ˆå…¬äº¤ 114285.68 / å‡ºç§Ÿ 52461.16 / ç½‘约车 22474.11),影响 3 é¡µ Ã— 72 è¡Œã€‚
  2. `轨道、轮渡` `R2/R11`:确认差异(软件「8月与去年同比」vs äººå·¥ã€ŒåŒæ¯”」)→ æŒ‰äººå·¥æŽªè¾žæ”¹ã€‚
  3. `中口径排名`:人工那份隐藏表数据不对、展示仅 1-8 æœˆç´¯è®¡ â†’ ä»¥è½¯ä»¶è¾“出为准。
  4. `班线包车`(§4.2):2021 å¹´ 3 æœˆèµ·ç´¯è®¡åŒæ¯”大量 `#DIV/0!`,且两边列区间不一致(生成 `DU:EP` / æ‰‹å·¥ `TD:EO`);报告里 220 ä¸ª `#VALUE!` æœ¬æœºå¤çŽ°ä¸å‡ºæ¥ï¼ˆæœ¬åœ°æ¯ç‰ˆä¸Ž 9/18 ç”Ÿæˆä»¶å‡ä¸º `#DIV/0! 228 + #REF! 8`,与报告「软件输出」两项完全一致),判为读缓存值产生的假错值,待对方用 9/21 åŽŸä»¶å¤æ ¸ã€‚
  5. ` è´§è¿` 2022 å¹´ç´¯è®¡åŒæ¯”(§4.3):软件对。
- å¾…对方回复:`货运周转量排名` çš„「标题」指哪一格、`城市客运` å·®å¼‚格在哪、并把两份源文件放共享位置以便同源复核。
- æœ¬æ¬¡æ— ä»£ç æ”¹åŠ¨ï¼Œå±žæ ¸å¯¹/文档类工作,不另出《功能测试报告》;上述回执即核对记录。
## å…«ã€è¿½åŠ ï¼šä¿®æ­£ã€Š2026å¹´8月道路运输量汇总表_版式原型》班线包车页文本数值
用户手工把该原型文件「班线包车」页里文本格式的数值单元格改成数值格式,核对后提交。
- æ–‡ä»¶ï¼š`docs/生成汇总大表/2026å¹´8月道路运输量汇总表_版式原型.xlsx`(1,487,539 â†’ 1,354,428 å­—节)
- æ”¹åŠ¨èŒƒå›´ï¼š`班线包车` é¡µç¬¬ 8-57 è¡Œ Ã— `FV:IX` åˆ—,共 **196 æ ¼ `文本 â†’ æ•°å€¼`**(如 `'33,437.0000'` â†’ `33437`);逐格比对数值**完全等价,0 å¤„不匹配**。
- å…¶ä½™é¡µå·®å¼‚属 Excel å¦å­˜å½’一化,非业务改动:`公路总客运` 104 æ ¼ã€`城市客运` 126 æ ¼æ˜¯å…¬å¼åŽ»æŽ‰å·¥ä½œè¡¨åå¼•å·ï¼ˆ`'轨道、轮渡'` â†’ `轨道、轮渡`,语义不变);` è´§è¿` 23、`货运周转量排名` 3、`城市汇总` 4、`城市分市州` 17、`中口径排名` 11、`中口径分析` 3 æ ¼æ˜¯æµ®ç‚¹é‡å†™ï¼ˆ15 ä½æœ‰æ•ˆæ•°å­—,相对差约 1e-15)。
- èƒŒæ™¯ï¼šå¯¹åº”同事差异报告 Â§4.2 ä¸­ã€Œæ•°å€¼ vs åŒå€¼æ–‡æœ¬ã€è¿™ä¸€ç±»å·®å¼‚。
- è¯¥åŽŸåž‹æ–‡ä»¶åœ¨ä»£ç ä¸­æ— å¼•ç”¨ï¼ˆ`rg ç‰ˆå¼åŽŸåž‹` æ— å‘½ä¸­ï¼‰ï¼Œå±žå‚考件;本次无代码改动。
- æ ¸å¯¹æ–¹å¼ï¼šç”¨ `git show HEAD:<file>` å–出旧版到 `_tmp_proto_head.xlsx`,再用 openpyxl é€æ ¼æ¯”对类型与值(临时文件保留,未删)。