docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-17.md
@@ -59,3 +59,273 @@
   - è¾“出 `校验报错_<年月>.xlsx` ä¸Ž `运行日志_<年月>.md`。
3. å†ä¾æ¬¡æŽ¥ Step2(汇总表)、Step3(三张固定表 + äº¿å…ƒæŠ•资项目专属列规则)。
4. è‹¥ç”¨æˆ·ç¡®è®¤ `docs\投资\` çš„æ–‡ä»¶æ•´ç†ï¼Œä¸€å¹¶æäº¤å¹¶è¡¥æŽ¨å…¬å¸ gitea(若恢复)。
---
## äº”、下午追加(用户核对源文件后)
### 5.1 ç”¨æˆ· 4 ç‚¹åé¦ˆçš„æ ¸æŸ¥ä¸Žå¤„ç½®
| ç”¨æˆ·åé¦ˆ | æ ¸æŸ¥ç»“论 | å¤„ç½® |
| --- | --- | --- |
| â‘  â‘¡ã€Œä½ æŠŠè¡¨è¯´æ¸…楚,是客运站还是物流园区;我看十堰的表没有你说的情况」 | **用户没看错**:那些内容是**隐藏行 / éšè—è¡¨**。例:十堰物流 R11—R63(53 è¡Œï¼‰æ˜¯éšè—è¡Œï¼Œå†…容为「武汉」历史区块;潜江 26/27 å¼ è¡¨è¢«éšè— | æ–°å¢žåªè¯»å·¥å…· `隐藏项探测.py` + æ¸…单《隐藏数据核实清单_2026-07.md》(逐文件写清:品类/文件/工作表/隐藏行区间/隐藏内容/怎么取消隐藏自己验证) |
| â‘¢ã€Œ`.et` å³ç§»ä¸ç”¨ç®¡ï¼Œæˆ‘们只管要更新的字段」 | ä¸Žç¨‹åºå®žçŽ°æ–¹å‘ä¸€è‡´ | å·®å¼‚报告、映射表均标注「不做处理」 |
| â‘£ã€Œæ©æ–½å’Œé»„石也是分了的,只是没在表头写;不更新建设阶段列」 | ä¸Žæºæ–‡ä»¶ç›¸ç¬¦ | è¯¥é£Žé™©é¡¹**关闭** |
### 5.2 æœ¬è½®æœ€é‡è¦çš„æŠ€æœ¯ç»“论
- **「隐藏行 / éšè—å·¥ä½œè¡¨ã€ä¸èƒ½ä½œä¸ºè¿‡æ»¤æ¡ä»¶**:黄石物流隐藏行 R10 æ˜¯çœŸå®žé¡¹ç›®è¡Œã€Œé˜³æ–°åŽ¿ç„¦å±±ç‰©æµä»“å‚¨ä¸­å¿ƒã€ï¼ˆæ— åºå·ï¼‰ï¼Œä¸”**已计入**第 5 è¡Œã€Œé»„石」市州合计——四项数值逐项核对相等(计划总投资 564,991.69 / è‡ªå¼€å§‹å»ºè®¾ç´¯è®¡ 59,500.20 / è‡ªå¹´åˆç´¯è®¡ 34,978.15 / æœ¬æœˆå®Œæˆ 7,088.90)。
- åè¿‡æ¥ï¼Œã€Œå¯è§ã€ä¹Ÿä¸ç­‰äºŽã€Œæœ¬æœŸæ•°æ®ã€ï¼šæ½œæ±Ÿ `潜江2026.07.xlsx` åªæœ‰ 1 å¼ å¯è§è¡¨ï¼Œè¡¨åå« `潜江传化2022.3`,装的却是 2026 å¹´ 7 æœˆæ•°æ®ã€‚
- æ‰€ä»¥å–数判定只用三条:**① è¡¨å¤´æ—¥æœŸé€‰è¡¨ï¼›â‘¡ å¸‚州行切段;③ é¡¹ç›®è¡Œåˆ¤å®šï¼ˆåºå·/名称/数值锚点)**。
- é™„带发现:咸宁客运隐藏表 `RQYQRYQS` å« Excel 4.0 å®ç—…毒残留字样(`Classic.Poppy by Vic` / `Infect Workbook`),已建议用户杀毒(我不动源文件)。
### 5.3 ä¿®å¤ä¸ŽéªŒè¯
- `格式探测.py` å¢žåŠ **市州分段**(`CITIES` + `city_segments()`):十堰物流项目行由 **38 è¡Œä¿®æ­£ä¸º 7 è¡Œ**;与旧结果逐文件 diff,其余 26 ä¸ªæ–‡ä»¶**零变化**(无回归)。
- å·®å¼‚报告新增 H5 é£Žé™©é¡¹ä¸Žã€Œä¸ƒã€æ›´æ­£è®°å½•」;功能测试报告新增 TC12–TC15,**全部通过**。
### 5.4 é—留(本轮未闭环)
- **映射表 xlsx æœªå†™å…¥**:`字段映射表_草案_2026-07.xlsx` è¢« WPS æ‰“开占用(目录下存在 `~$字段映射表_草案_2026-07.xlsx` é”æ–‡ä»¶ï¼‰ï¼Œ`PermissionError`。订正脚本 `_qa_out\patch_map.py` å·²å¤‡å¥½ï¼Œ**关闭该文件后重跑即可**(会补上 Sheet3 çš„「隐藏项核实」列、修正十堰/林区/潜江/黄石等行,Sheet6 æ›´æ–°åå °ã€æ½œæ±Ÿæž—区、襄阳、恩施黄石,并新增「隐藏行不能当过滤条件」一条)。
- å…¬å¸ gitea ä»ä¸é€šã€‚
---
## å…­ã€å‚æ™šè¿½åŠ ï¼ˆ`.et` å¯è¯»æ€§è®¢æ­£ + å¾…确认清单)
### 6.1 æ ¸å®žã€Œä»“库里 4 ä¸ªè¢«æ”¹åŠ¨çš„æ–‡ä»¶ã€
用户确认要我先核实。逐个把 HEAD ç‰ˆæœ¬ä¸Žå·¥ä½œåŒºç‰ˆæœ¬åš**逐单元格比对**:
| æ–‡ä»¶ | ç»“æžœ |
| --- | --- |
| `输入\客运(客运站)\7月\2026å¹´7月站场固投(南山、汉口站).xlsx` | æ•°æ® **0 å¤„差异**(10×15 å…¨åŒï¼‰ |
| `输入\客运(客运站)\7月\襄阳市道路运输服务中心2026å¹´6月投资 (1).et` | 7 å¼ åˆ†æœˆè¡¨**逐张 0 å¤„差异** |
| `模板\模板_全省预安排计划进度情况汇总.xls` | æ•°æ® **0 å¤„差异**(272×28 å…¨åŒï¼‰ |
| `模板\模板_经济强县投资统计报表.xls` | æ•°æ® **0 å¤„差异**(45×17 å…¨åŒï¼‰ |
→ å­—节差异只是 Excel/WPS é‡æ–°ä¿å­˜é€ æˆçš„æ ¼å¼é‡å†™ï¼Œ**没有数据风险**;是否还原等用户拍板。
### 6.2 è®¢æ­£ä¸€ä¸ªé”™è¯¯åˆ¤æ–­ï¼š`.et` å…¶å®žèƒ½è¯»
之前把 `.et` å½“成「xlrd/openpyxl éƒ½è¯»ä¸äº†ï¼Œå¿…é¡» Excel COM」。实测文件头是 `D0CF11E0A1B11AE1`——**OLE2 å¤åˆæ–‡æ¡£ / BIFF8**,`xlrd` ç›´æŽ¥å°±èƒ½è¯»ï¼šè¥„阳客运 `.et` çš„ 7 å¼ åˆ†æœˆè¡¨å…¨éƒ¨è¯»å‡ºï¼ˆ`2026å¹´1月`—`2026å¹´7月 `)。已修两个工具与差异报告/核实清单/映射表,隐藏项探测覆盖由 26 ä¸ªæ–‡ä»¶æ‰©åˆ° **27/27**。
### 6.3 äº§å‡ºã€Šå¾…确认清单_2026-09-17.md》
按用户要求把开工前必须定的口径做成「勾选版」确认表(13 æ¡ï¼‰ï¼Œæ¯æ¡éƒ½ç»™çŽ°çŠ¶ + é€‰é¡¹ + æˆ‘的建议:
- **阻塞 Step1 çš„ 5 æ¡**:明细表更新哪几列、客运缺 7 å¸‚州怎么处理、校验的上月底数从哪来、潜江只有 1 ä¸ªé¡¹ç›®è¡Œã€æ­¦æ±‰ç®€è¡¨æ— å»ºè®¾é˜¶æ®µåˆ—ï¼›
- Step2/3 çš„ 4 æ¡ï¼šæ±‡æ€»è¡¨æ›´æ–°å“ªäº›åˆ—(含 `W=1-7月累计` è¡¨å¤´è¦ä¸è¦è·Ÿç€æœˆä»½æ”¹ï¼‰ã€äº¿å…ƒæŠ•资项目「3 é¡¹ã€æ˜¯å“ªä¸‰é¡¹ã€1 æœˆåŸºæ•°å–哪列、编号 3/4 æ˜¯å¦åŒä¸€ä»½æ–‡ä»¶ï¼›
- æ”¶å°¾ 4 æ¡ï¼šè¾“出目录/命名/备份、4 ä¸ªè¢«æ”¹æ–‡ä»¶æ˜¯å¦è¿˜åŽŸã€`docs\投资\` æœªæäº¤æ”¹åŠ¨æ˜¯å¦æäº¤ã€"每月是否还要做模板"(用户说要请教同事,暂缓)。
### 6.4 å¾…办
- ç­‰ç”¨æˆ·æŠŠç¡®è®¤è¡¨å‹¾å®Œ â†’ å›žå¡«æ˜ å°„表 Sheet6 â†’ ç«‹å³è½åœ° **Step1**。
---
## ä¸ƒã€æ”¶å·¥å‰è¿½åŠ ï¼ˆå£å¾„ç¡®è®¤å›žå¡« + Step1 è§£æžå¼•擎)
### 7.1 ç”¨æˆ·å‹¾å®Œ 13 æ¡ç¡®è®¤è¡¨ï¼Œå·²å›žå¡«æ˜ å°„表
映射表新增 **Sheet8「口径确认_2026-09-17」**,作为 Step1 å®žçŽ°çš„**唯一依据**:
| é¡¹ | ç”¨æˆ·ç­”复 | è½åœ°å£å¾„ |
| --- | --- | --- |
| Q1 æ˜Žç»†è¡¨æ›´æ–°å“ªå‡ åˆ— | **C** | H/I/J/K/L/M å…­åˆ—全写 |
| Q2 å®¢è¿ç¼º 7 å¸‚å·ž | **C** | è·³è¿‡ + æç¤º + ä¿ç•™ä¸Šæœˆæ•°æ® |
| Q3 ä¸Šæœˆåº•数来源 | **A** | ä»Žç³»ç»Ÿç›®æ ‡è¡¨è¯»ä¸Šæœˆå€¼ |
| Q4 æ½œæ±Ÿä»… 1 ä¸ªé¡¹ç›®è¡Œ | **A** | ç…§å¸¸å†™ |
| Q5 æ­¦æ±‰ç®€è¡¨ | ç•™ç©º | L/M ä¸¤åˆ—都留空 |
| Q6 æ±‡æ€»è¡¨ | **A** | åªæ›´ I/W/X;W è¡¨å¤´ã€Œ1-X月」随月份自动改 |
| Q7 äº¿å…ƒæŠ•资项目 | åªæ›´ F åˆ— + æ–°å¢žã€Œ2026å¹´X+1月实际完成投资」列 | Step3 æ‰§è¡Œ |
| Q8 1 æœˆåŸºæ•° | **A** | 1 æœˆ J = K(跨年清零) |
| Q9 ç¼–号 3/4 | åŒä¸€ä»½æ–‡ä»¶ï¼Œæ”¾ä¸€ä»½ | å”¯ä¸€æ–‡ä»¶ï¼š`输入\模板_查询结果(投资系统-客运+物流 2026.7).xls` |
| Q10 è¾“出目录 | è¾“出\Yå¹´Y月 | `输出\2026å¹´7月\` |
| Q11 4 ä¸ªè¢«æ”¹åŠ¨æ–‡ä»¶ | ï¼ˆç”¨æˆ·åé—®ï¼‰å·²è§£é‡Šï¼šæ•°æ® 0 å·®å¼‚,随本次提交 | ä¸åšè¿˜åŽŸ |
| Q12 docs\投资 æ•´ç† | **A** | å·²æäº¤å…¥åº“(17 ä¸ªå˜æ›´ï¼Œå« 3 ä¸ª git è¯†åˆ«å‡ºçš„重命名) |
| Q13 æ¯æœˆæ˜¯å¦è¿˜åšæ¨¡æ¿ | æš‚缓 | ç­‰åŒäº‹ç»“论 |
### 7.2 æäº¤ï¼ˆä¸ªäºº Gitee)
- `2af4d53` â†’ `73a0551`:入库用户整理后的输入/模板/输出文件 + å›žå¡«å£å¾„确认
- é¡ºå¸¦æŠŠ `.gitignore` è¡¥ä¸Š `__pycache__/`、`*.pyc`
### 7.3 å†™å®Œ Step1 çš„解析引擎(本轮最重的产出)
新增 `docs\投资\工具\市州月报解析.py`(只读):27 ä¸ªæºæ–‡ä»¶ â†’ **151 ä¸ªé¡¹ç›®è¡Œ**(客运 48 + ç‰©æµ 103),输出 `解析结果_2026-07.tsv` + `解析报告_2026-07.md`。
- æ¯æ–‡ä»¶åšã€Œé¡¹ç›®è¡Œæ±‚å’Œ â‡„ æºæ–‡ä»¶åˆè®¡/小计/市州行」对账:**13 ä¸ªæœ‰å¯¹è´¦è¡Œçš„æ–‡ä»¶å…¨éƒ¨ âœ… ä¸€è‡´ï¼Œ0 ä¸ä¸€è‡´**;剩 4 ä¸ªï¼ˆåå °å®¢è¿ã€è¥„阳 .et、随州物流、仙桃物流)源文件本身没有小计行。
- ä¿®å¤ 3 ä¸ªè§£æžç¼ºé™·ï¼šæ ¡éªŒè¡ŒæŒ‘选规则(黄冈合计在 B åˆ—;林区有 3 è¡Œå°è®¡ï¼‰ã€æ— å°è®¡è¡Œæ—¶ç”¨ã€Œå¸‚州行值」兜底、无城市信息文件(南山汉口)用 `CITY_OVERRIDE` ç™»è®°ä¸ºæ­¦æ±‰ã€‚
- æµ‹è¯•报告:《功能测试报告_投资月报源文件解析引擎_2026-09-17.md》(P01–P10 å…¨é€šè¿‡ï¼‰ã€‚
### 7.4 é—ç•™ / å¾…确认
1. **上月基数口径仍有冲突**:需求文档写「上月值来源:上月数据表」(= æŠ•资系统查询结果文件),用户 Q3 é€‰ã€Œä»Žç³»ç»Ÿç›®æ ‡è¡¨è¯»ã€ã€‚而手上那份查询结果是 **2026å¹´7月**的(E=自开始建设至本月底、G=自年初累计、H=当月完成),**不含 6 æœˆåº•æ•°**。→ éœ€ç”¨æˆ·äºŒé€‰ä¸€ï¼š(a) æ¯æœˆå¦æ”¾ä¸€ä»½**上月**的查询结果;(b) ç”¨ç›®æ ‡æ˜Žç»†è¡¨çš„ J åˆ—当上月底数。
2. å®¢è¿ç¼º 7 å¸‚州的缺失原因(真没项目 / æ¼æŠ¥ï¼‰ä»æœªç¡®è®¤ã€‚
3. Step1 çš„**写入侧**(按名称匹配写 6 åˆ— + æ–°å¢žé¡¹ç›®è¡Œ + æ ¡éªŒçº æ­£ + å¼¹çª— + æ—¥å¿—)尚未实现。
---
## å…«ã€æ”¶å·¥ï¼ˆStep1 å†™å…¥å‰çš„æœ€åŽä¸€çŽ¯ï¼šåŒ¹é… + æ ¡éªŒï¼‰
### 8.1 ç”¨æˆ·ç¡®è®¤ã€Œä¸ŠæœˆåŸºæ•°ã€å£å¾„:(a)
用户选定:**每月另放一份「上月」的投资系统查询结果文件**,校验等式 `本月自年初累计 = ä¸Šæœˆè‡ªå¹´åˆç´¯è®¡ + æœ¬æœˆå®Œæˆ` ç”¨å®ƒçš„ G åˆ—。程序已按此实现识别(按文件名/「时期」列自动区分本期与上月,本期缺失不影响运行、只跳过校验并提示)。
### 8.2 æ–°å¢ž `匹配与校验.py`,把 Step1 çš„三个判断全部算出
| å“ç±» | ç›®æ ‡è¡¨é¡¹ç›®è¡Œ | æºæ–‡ä»¶è¡Œ | ç²¾ç¡®åŒ¹é…ï¼ˆâ†’更新) | éœ€æ–°å¢ž | ç–‘似同一项目(→弹窗) | ç›®æ ‡è¡¨ç‹¬æœ‰ï¼ˆä¿æŒåŽŸå€¼ï¼‰ | æ•°å€¼ä¸ä¸€è‡´ |
| --- | --- | --- | --- | --- | --- | --- | --- |
| å®¢è¿ | 49 | 48 | **45** | 3 | 0 | 4 | **0** |
| ç‰©æµ | 99 | 103 | **94** | 6 | 3 | 5 | **2** |
- å˜æ›´æ¸…单:`变更清单_2026-07.tsv` å…± **148** æ¡ï¼ˆæ›´æ–° 139 + æ–°å¢ž 9)。
- **名称匹配做了三层**:精确 â†’ å®½æ¾ç­‰ä»·/≥0.90(疑似同一项目,不合并也不重复新增)→ 0.80–0.90(仍新增但提示确认)。这条规则直接来自用户口径「不能动项目名称,按市州报上来的名称比对,出现不一致就弹窗提示」。
- **物流疑似同一项目 3 ä¸ª**:`鄂湘赣商贸物流中心一期`⇄`(一期)`、`荆门北站顺洋物流基地`⇄`…基地项目`、`荆门智慧冷链物流园`⇄`…园项目` â†’ ä¸é‡å¤æ–°å¢žï¼Œç­‰äººå·¥ç¡®è®¤ã€‚
### 8.3 ä¸¤ä¸ªçœŸå®žæ•°æ®é—®é¢˜ï¼ˆéœ€ä¸šåŠ¡ç¡®è®¤ï¼‰
1. `九州通沃田国际供应链中心项目` çš„**自年初累计**:市州月报 **8000** / æŠ•资系统 **4200**,差 **−3800** â€”— è¿™æ˜¯æœ¬æœŸå”¯ä¸€çš„实质数值不一致。
2. `神农架物流园` è‡ªå¼€å§‹å»ºè®¾ç´¯è®¡ 7535.45 vs 7535.5(差 0.05,应为舍入)。
3. å¦æœ‰ 4 å¤„名称相似但**实为不同项目**(如 `郑万高铁南漳` vs `郑万高铁巴东`),已按新增处理并提示,避免误合并。
### 8.4 å¾…办(下一步)
1. **Step1 å†™å…¥ä¾§**:用 **Excel COM**(本机 Python æ—  win32com)把 `变更清单_2026-07.tsv` å†™è¿›ä¸¤å¼ æ˜Žç»†è¡¨ â€”— æ›´æ–° 6 åˆ—(H/I/J/K/L/M)、新增项目整行插入(复制相邻行格式)、校验不符按等式纠正并弹窗+记日志、输出到 `输出\2026å¹´7月\`、运行前 `_bak_` å¤‡ä»½ã€‚
2. ç¼ºã€Œä¸ŠæœˆæŠ•资系统数据表」——请每月把上月的查询结果一并放进 `docs\投资\输入\`(本期只放了 2026.7 é‚£ä»½ï¼‰ã€‚
3. å®¢è¿ç¼º 7 å¸‚州的原因(真没项目 / æ¼æŠ¥ï¼‰ä»æœªç¡®è®¤ã€‚
4. å…¬å¸ gitea ä»ä¸é€šï¼Œæœ¬åœ°é¢†å…ˆ gitea çš„æäº¤å¾…补推。
### 8.5 æµ‹è¯•报告
《功能测试报告_投资月报匹配与校验引擎_2026-09-17.md》—— M01–M09 **全部通过**。
## ä¹ã€è¿½åŠ ï¼ˆç”¨æˆ·æ ¸å®žã€Œä¹å·žé€šæ²ƒç”°ã€+ ä¸Šçº¿ã€Šå¼¹çª—提示》机制)
### 9.1 ç”¨æˆ·æ ¸å®ž â†’ å®šä½å‡ºä¸€ä¸ªçœŸ bug
- ç”¨æˆ·ï¼šã€Œ`九州通沃田国际供应链中心项目` çš„æœ¬å¹´è®¡åˆ’投资也是 8000,这个是对的」。
- å¤æ ¸åŽç¡®è®¤ï¼š**用户是对的,我错了**。源文件 `2026å¹´7月企业月报汇总(鄂州).xls` R15:
  `G=36000(总投资) H=23504(自开始建设累计) I=8000(本年计划投资) J=4200(自年初累计) K=200(本月完成)`;
  æŠ•资系统 R97 åŒæ ·æ˜¯ `F=8000 / G=4200`。原报告里「8000 vs 4200」是**取列错位**造成的假异常。
- **根因**:该表是**两级表头**——R5 ç»„表头「自年初累计完成投资(万元)」是**合并单元格 I5:K5**,
  R6 å­è¡¨å¤´ I=本年计划投资、J=合计、K=其中:本月完成投资。原解析规则「命中最靠上、命中词最短」→ æŠŠã€Œè‡ªå¹´åˆç´¯è®¡ã€å®šåˆ°äº† I åˆ—。
- åŒä¸€æ¨¡æ¿è¿˜å½±å“ï¼šå¤©é—¨ç‰©æµï¼ˆI=36835 æ˜¯æœ¬å¹´è®¡åˆ’投资,J=16177.7 æ‰æ˜¯è‡ªå¹´åˆç´¯è®¡ï¼‰ã€‚
### 9.2 ä¿®å¤ï¼šåˆå¹¶åŒºæ„ŸçŸ¥å–列
- `格式探测.py` æ–°å¢ž `sheet_merges(path)` / `merge_span(merges, row, col)`;
- `市州月报解析.py` çš„ `pick_columns` æ”¹ä¸ºï¼šå‘½ä¸­è½åœ¨è·¨å¤šåˆ—合并区时,在该区内**排除其它字段更深的子表头所占列**,只剩唯一一列才采用。
- **影响面收敛**:全量复跑 2026-07,`解析结果` ä¸Ž `变更清单` **各只有 4 è¡Œå˜åŒ–**(鄂州 3 + å¤©é—¨ 1),其余逐字不变;项目行仍是 151 è¡Œ / 27 ä¸ªæ–‡ä»¶ã€‚
### 9.3 æ–°å¢žã€Šå¼¹çª—提示》机制(用户要求:只要有不对的地方就弹窗提示)
- æ–°å¢ž `解析校验_<月>.tsv`(源文件自洽性:项目行求和 vs åˆè®¡/小计/市州行、解析状态)。
- `匹配与校验.py` å†…ç½® **14 æ¡æ£€æŸ¥è§„则**,产出 **`弹窗提示_<月>.tsv`**(级别/类型/品类/市州/项目名称/来源/详情/建议动作),并把清单置顶到《匹配校验报告》。
- çº§åˆ«ï¼š**阻断**(不能写表)/**警告**(人工确认后再写)/**提示**(仅告知)。
- è§„则文档:`docs\投资\弹窗提示规则_2026-09-17.md`(将来搬进 Java åŽç«¯æŒ‰æ­¤é€æ¡å¼¹çª—,规则不改)。
- é¡ºå¸¦ä¿®å¥½ 3 ä¸ªæ£€æŸ¥é¡¹ç¼ºé™·ï¼šã€ŒæŠ•资系统名称写法不同」漏报、「疑似同一项目」漏报(中国供销.公安)、0.05 èˆå…¥è¢«è¯¯æŠ¥ä¸ºä¸ä¸€è‡´ã€‚
### 9.4 æœ¬æœŸï¼ˆ2026-07)弹窗结果
| çº§åˆ« | æ¡æ•° | ä¸»è¦å†…容 |
| --- | --- | --- |
| é˜»æ–­ | 0 | â€” |
| è­¦å‘Š | 9 | æºæ–‡ä»¶ vs æŠ•资系统不一致 4、疑似同一项目 4、缺上月投资系统表 1 |
| æç¤º | 36 | å°†æ–°å¢žé¡¹ç›® 5、名称写法不同 5、投资系统查无此项目 15、无该市州数据 2、源文件没报的项目 2 ç­‰ |
- **回归验证(负向)**:把修复前的解析结果喂给程序,会自动弹出 **5 æ¡ã€Œç–‘似取列错位」**,命中的正是 4 ä¸ªå—影响项目 â†’ è¿™ç±» bug ä»¥åŽä¸ä¼šå†ã€Œé™é»˜é€šè¿‡ã€ã€‚
- **确定性**:连跑两次,5 ä¸ªäº§å‡ºæ–‡ä»¶ SHA256 å®Œå…¨ä¸€è‡´ã€‚
### 9.5 å¾…办
1. éœ€ä¸šåŠ¡ç¡®è®¤çš„ 9 æ¡è­¦å‘Šï¼ˆå°¤å…¶æ˜¯ `宜都供销商贸物流园` æœ¬å¹´è®¡åˆ’投资 12000 vs 1013、`麻城市农产品综合物流园` æ€»æŠ•资 35000 vs 33000)。
2. è¯·æ¯æœˆæŠŠ**上月**的投资系统查询结果也放进 `docs\投资\输入\`,否则月度等式校验一直跳过。
3. ä»å¾…确认:客运缺 8 ä¸ªå¸‚州(真没项目 / æ¼æŠ¥ï¼‰ï¼›3 å¤„名称写法不同是否同一项目。
4. Step1 å†™å…¥ä¾§ï¼ˆExcel COM å†™ä¸¤å¼ æ˜Žç»†è¡¨ï¼‰å°šæœªå¼€è·‘。
## åã€è¿½åŠ ï¼ˆç”¨æˆ·è¿½é—®ï¼šã€Œæ˜¯ä¸æ˜¯åªè·Ÿåˆ—å–æ•°æ®ï¼Œè€Œä¸æ˜¯æŒ‰è¡¨å¤´å®šä½ï¼Ÿã€ï¼‰
### 10.1 æ ¸æŸ¥ç»“论:源文件本来就是按表头,但确实还有几处「认列号」,已全部改掉
| ä½ç½® | åŽŸå®žçŽ° | çŽ°çŠ¶ |
| --- | --- | --- |
| å¸‚州月报 27 ä»½æºæ–‡ä»¶çš„字段 | æŒ‰è¡¨å¤´å…³é”®å­—定位(`FIELD_PAT`) | ä¸å˜ï¼ˆæœ¬æ¥å°±æ˜¯æŒ‰è¡¨å¤´ï¼‰ |
| æºæ–‡ä»¶ã€Œåºå·/分类/小计合计」 | è®¤ A åˆ— | ä¿ç•™ï¼ˆæ¨¡æ¿å¦‚此),已写进规则文档 |
| æºæ–‡ä»¶ã€Œå¸‚州行」 | åªçœ‹å‰ 5 åˆ— | ä¿ç•™ï¼ˆæ¨¡æ¿å¦‚此),已写进规则文档 |
| **目标明细表(客运/物流两张)** | **列号写死 B/C/D/E/F/G/H/I/J/K/L/M** | **改为按表头定位**,母版默认列位仅作兜底;列位与预期不符会弹窗 |
| åŒåå­—段命中多列 | å–「命中词最短」→ æ­¦æ±‰ç‰©æµæŠŠã€Œè‡ªå¼€å§‹å»ºè®¾ç´¯è®¡æ–°å¢žå»ºç­‘面积」P å½“成了「自开始建设累计完成投资」 | æ”¹ä¸º**优先取表头下方真的有数字的那一列** |
- **证据可视化**:`解析报告_2026-07.md` æ–°å¢žã€Œå„源文件识别到的列位」一节;`解析校验_2026-07.tsv` æ–°å¢žã€Œåˆ—位」列。
  åŒä¸€æ‰¹æ–‡ä»¶è¯†åˆ«å‡ºçš„列号并不相同(襄阳 `.et` æ˜¯ B/H/I/J/K;随州物流名称在 A åˆ—;武汉客运总投资在 F åˆ—且没有「自年初累计」列表头),
  è¯´æ˜Žç¡®å®žæ˜¯**按表头**而不是按固定列号。
- **武汉物流修正**:该字段项目行求和 = **146313.9**,与目标表武汉市场州行 H åˆ— 146313.9 å®Œå…¨ä¸€è‡´ï¼ˆä¿®å¤å‰è¯¯å– P åˆ—,求和为 0 å´æ²¡æŠ¥é”™ï¼‰ã€‚
- **新增 2 æ¡å¼¹çª—规则**:16 ç›®æ ‡è¡¨åˆ—位置与预期不符(警告)、17 ç›®æ ‡è¡¨ä¸ªåˆ«åˆ—按母版默认(提示);规则文档已更新为 17 æ¡ã€‚
### 10.2 å›žå½’与产出
- å˜æ›´æ¸…单 147 æ¡ä¸­ä»… **6 è¡Œ**变化(武汉物流「自开始建设累计」由空→实值),其余逐字不变。
- å¼¹çª—提示 **47 é¡¹**(阻断 0 / è­¦å‘Š 10 / æç¤º 37);新增的 1 æ¡è­¦å‘Šæ˜¯ã€Œæ­¦æ±‰å®¢è¿ç¼ºã€Žè‡ªå¹´åˆç´¯è®¡ã€åˆ—表头」,与用户 Q5 å£å¾„一致。
- è¿žè·‘两次,7 ä¸ªäº§å‡ºæ–‡ä»¶ SHA256 å®Œå…¨ä¸€è‡´ï¼ˆç¡®å®šæ€§ OK)。
- æµ‹è¯•报告已补第二轮 C11–C17、P06–P08。
### 10.3 ä»æœªæŒ‰è¡¨å¤´çš„两处(有意保留,供确认)
1. æºæ–‡ä»¶ã€Œåºå·/分类行/小计合计行」的文字位置(假定 A åˆ—);
2. ã€Œå¸‚州行」判定只看前 5 åˆ—。
如果需要改成「按表头关键字找市州列」,可以做,但会引入新的误判风险,建议保持现状。
---
## åä¸€ã€ä¸‹åˆè¿½åŠ ï¼ˆç”¨æˆ·ç¬¬ 5 æ‰¹éœ€æ±‚)
### 11.1 æ±‡æ€»è¡¨é—®é¢˜æŽ’查(问题 1、2、5)
- **问题 5(投资《全省预安排计划进度情况汇总》指标为空)**:查清是两层原因。
  1. ç”¨æˆ·æ¡Œé¢é‚£ä»½ `生成_全省预安排计划进度情况汇总 (1).xls` ä¸Žæœ¬åœ° `period=2026-07` çš„导出件**字节完全相同**
     ï¼ˆSHA256 `B38F90F3…`),说明导出时选的是 **7 æœˆ**;表头写 `1-7月累计完成投资`,合计行等于库内 7 æœˆåˆè®¡ã€‚
  2. å³ä½¿æœˆä»½é€‰å¯¹ï¼ŒK/L/M(部资金/省资金/企业自筹)、O–T(2026/2027 å»ºè®®è®¡åˆ’)、Y/Z(省补资金/备注)
     **数据库建表起就没有这些字段**,永远填不上;C åˆ—(县市区)是导入没抓(184 ä¸ªé¡¹ç›® county å…¨ NULL)。
  3. å¦å‘现 N/X ä¸¤åˆ—语义错位(N å†™å½¢è±¡è¿›åº¦é•¿æ–‡æœ¬ã€X é¡¹ç›®è¡Œå†™å»ºè®¾é˜¶æ®µã€åˆè®¡è¡Œå†™å®ŒæˆçŽ‡æ¯”ä¾‹ï¼‰ï¼Œä¸Žæ¯ç‰ˆä¸ä¸€è‡´ã€‚
- **问题 2(城市客运 / ä¸­å£å¾„明细无 8 æœˆï¼Œä¸­å£å¾„排名不对)**:确认库里 8 æœˆæºæ•°æ®é½å…¨ï¼ˆh2031 767 è¡Œã€åŸŽå¸‚公交 142 è¡Œï¼‰ï¼Œ
  æ˜¯ç”Ÿæˆé€»è¾‘问题:
  - `SummaryWorkbookFiller.fillMonthlyLedger()` åªå›žå¡« 6 é¡µä¸”只填市州行(`cityOf()` è®¤ä¸å‡ºã€Œå…¨çœã€è¡Œï¼‰â†’ å¤šä¸ªé¡µç­¾**全省行停在上一期**;
  - ã€ŒåŸŽå¸‚客运」「中口径明细」两页根本不在回填清单里 â†’ æ²¿ç”¨ 8 æœˆæ¯ç‰ˆï¼ˆ8 æœˆåˆ—本来就空);
  - `exportPassengerMidRank()` å…¨çœè¡Œæ˜¯ `=SUM(B4:B20)` å…¬å¼ï¼Œ`setValOrBlank()` é‡å…¬å¼ return ä¸”**不 recalc** â†’ å…¨çœè¡Œæ°¸è¿œæ˜¯æ¨¡æ¿æ—§ç¼“存值;
  - ç‹¬ç«‹å¯¼å‡ºçš„《生成_公路旅客中口径明细》口径少了巡游出租+网约车(`loadMidClassMap()` åªè£…班线+公交两维)。
- **问题 1(汇总表问题总结)**:以上内容 + é€åˆ—/逐页证据,已汇总到 `docs/问题汇总/汇总表问题汇总_2026-09-17.md`。
### 11.2 å·²å®Œæˆå¹¶æµ‹è¯•:数据查看页调整(问题 4)
- `DataView.vue`:报表期前置、新增「投资」「能耗」两组;`DataViewController.java`:新增 5 ç±»æŸ¥è¯¢ä¸Žåˆ—定义。
- `mvn -o compile` é€šè¿‡ï¼›åœæ—§åŽç«¯ï¼ˆ7508/25852/19768)后用 `start-dev.ps1` é‡å¯ï¼ˆæ–°åŽç«¯ PID 21448),
  å‰ç«¯ webpack 15:35:41 `Compiled successfully`。
- æŽ¥å£å®žæµ‹ 18 æ¡ç”¨ä¾‹å…¨é€šè¿‡ï¼›æµ‹è¯•报告见
  `docs/功能测试报告/功能测试报告_数据查看投资能耗与报表期排序_2026-09-17.md`。
### 11.3 æœªå®Œæˆï¼šæŠ¥è¡¨ç”Ÿæˆæ–°å¢žä¸¤å¼ æŠ•资明细表(问题 3)
- æ¨¡æ¿å·²åœ¨ `docs/投资/模板/`(`模板_X月客运站投资明细表.xlsx`、`模板_X月物流站场投资明细.xls`)。
- **阻断点**:这两张表要按「一、部车购税/二、省燃油税/三、农村综合运输服务站/四、候车亭」和「规划内/规划外」分块放项目,
  è€Œ `DataImportService` :2465 ä¸»åŠ¨è·³è¿‡ `^[一二三四五六七八九十]+、.*` åˆ†ç»„行,分组信息没入库。
- è®¡åˆ’(待用户确认后做):① `investment_project` å¢ž `fund_channel` å­—段 â‘¡ å¯¼å…¥è®°å½•当前分组并写入项目
  â‘¢ é‡å¯¼ 7/8 æœˆ â‘£ å†å†™ä¸¤å¼ è¡¨çš„生成器(按市州+分组动态插行、重连汇总页公式)。
### 11.4 å¾…确认
1. ä¸­å£å¾„「全省」到底按什么口径取(库内全省 27524.49 â‰  17 å¸‚州之和 24481.74);
2. `h204_auth_vehicle`、`investment_system` æ˜¯å¦éœ€è¦è¡¥ 2026-08 æ•°æ®ï¼›
3. é—®é¢˜ 3 æ˜¯å¦æŒ‰ 11.3 çš„四步推进。
## 12. æ”¶å°¾ï¼šæ ¹ç›®å½•临时文件归档 + .gitignore åŠ å›ºï¼ˆ16:40)
- èƒŒæ™¯ï¼šä»“库根目录长期堆着 175 æ¡æœªè·Ÿè¸ªçš„临时脚本/导出(含 `_vfy_dump.sql` 43.4 MB、`_backup_h2032_import_batch_before_import.sql` 13.8 MB ç­‰çœŸå®žåº“导出),
  è€Œ `.gitignore` åªå¿½ç•¥äº† `_*.py/_*.txt/_*.xlsx/_*.png/_*.json`,一旦有人执行 `git add -A`,这些真实业务数据会被提交进公司仓库。
- å¤„置(用户选择「归档整理」):把仓库根目录全部未跟踪条目移入 `_tmp/`,**文件全部保留、未删除任何内容**;
  æ¸…单见 `_tmp/_MOVE_MANIFEST_20260917.txt`(168 æ¡ï¼Œåˆè®¡çº¦ 112 MB)。
  `outputs/`(Codex åº”用产物目录)与 `docs/生成汇总大表/_bak_202608母版修改前_20260916/` åŽŸåœ°ä¿ç•™ï¼Œåªå¢žåŠ å¿½ç•¥è§„åˆ™ã€‚
- `.gitignore` å¢žè¡¥ï¼š`_tmp/`、`_*.sql`、`_*.tsv`、`_*.csv`、`_*.ps1`、`_*.patch`、`_*.pkl`、`_*.xml`、`_*.zip`、`_bak_*`、`outputs/`。
- éªŒè¯ï¼š`git check-ignore` å‘½ä¸­ä¸Šè¿°è§„则;归档后 `git status` æ˜¾ç¤ºæ— ä»»ä½•已跟踪文件被改动;前后端仍正常(8090 `/api/auth/captcha` 200、8080 é¦–页 200)。
- Git:公司 Gitea æœåŠ¡å·²æ¢å¤ï¼ˆé¦–é¡µ 200、`git fetch`/`ls-remote` æ­£å¸¸ã€å‡­æ®æ— éœ€å†è¾“),14:54 å·²è¡¥æŽ¨ `d1cfd84..7b6bc7c`(26 ä¸ªæäº¤ï¼‰ï¼›
  æœ¬æ¬¡æäº¤ .gitignore æ”¹åŠ¨å¹¶è¿žåŒæœ¬åœ°é¢†å…ˆçš„ `b3e2176` ä¸€å¹¶æŽ¨é€åˆ°å…¬å¸ Gitea。