HANDOFF.md
@@ -26,6 +26,12 @@
        · `公交!U5:U76`、`出租!U5:U76`、`网约车!U5:U76` 各 72 格 = 216 格,公式 `=V5+X5+Z5+AB5+AD5+AF5`(只累加 2025 年 1~6 月;U 列表头为空,位置在"2025年1月"块左侧,对应 2026 块的 `S` 列"2026年累计",语义即"2025 年累计");
        · `城市客运!U4:U39` 36 格(同模式,只 6 个月);`班线包车!DU4:DU57` 54 格(`DU2` 表头直接写"1-3月累计",只 3 个月——属版式未随月份扩展)。
        → 业务口径为"可清空留空";**生成件与母版逐格相同**(证实程序只补当期列、不碰历史列)。09-22 差异报告按另一分页口径统计为"304 格(含中口径明细 88 格)",本次按公式模式定位到的是上述 306 格,两者为同一类问题、分页归类不同。
      - **2026-09-27 已处置:母版里的"人工核算草稿累计列"整体清空**(用户确认"这一列都可以留空,是人工核算时弄的草稿")。清空范围共 **577 格**:`公交/出租/网约车!U5:U76`、`城市客运!U4:U39`、`班线包车!DU4:DU57`(含表头 `DU2`"1-3月累计")、`中口径明细!U99:U188`、`中口径客运量!AB5:AB188`。
        · 依据:这些列在整本工作簿里**没有任何公式引用**(全簿扫描 0 命中),且程序**不写它们**(生成件与母版逐格相同)→ **只改母版即可,无需改代码**。
        · 做法:直接改 xlsx 内部 XML(只去对应单元格的 `<f>/<v>`、保留样式),**避免 openpyxl 保存导致全簿公式缓存值丢失**(该坑已实测复现:用 openpyxl 存一次后 `公交!S5` 由 98460.97 变 None,会破坏"中口径排名用母版 2025 静态列")。
        · 验证:重新生成 2026-08(母版变更使缓存自动失效,`staleCache=true`)→ 新旧生成件逐格比对:**仅这 577 格变为空,19 页签与尺寸不变,其它一律不动**;依赖母版缓存值的口径(中口径排名 M3、道路运输周转量 G4、货运量排名 B4、城市汇总 B3、公交 S5/Q5、中口径明细 C99、班线包车 Q4)**全部一致**。
        · 备份(本地保留、不入库):`docs/生成汇总大表/_bak_202608母版清空草稿累计列前_20260927.xlsx`;新生成件已存 `D:\桌面\生成数据\生成_道路运输量汇总表_2026-08 (4).xlsx`。
        · ⚠ **待同事确认**:手工定稿侧也把这些草稿列留空,否则比对会从"程序有值/手工有值"变成"程序空/手工有值"(同类差异、方向相反)。
      - **生成件里错误值 356 个 `#DIV/0!` + 13 个 `#REF!`**:班线包车 228+8、中口径明细 64+2、货运 38+3、中口径客运量 26;业务口径未定(是否清成空白)。
      - **城市客运页表头仍是日期序列号(确证未修)**:母版与生成件第 2 行第 3 个月起均为序列号(G2=46082、I2=46113…),1、2 月是文字;`fixCityMonthHeaderText()` 未覆盖该页 → "按表头文字匹配列"方案在该页失效。(此前文档标"待核实",现已确证。)
      - 缺 2026-09 母版(目录仅 7 月/8 月/版式原型 + 2 个 `_bak_*`)→ 9 月出表会 `ready=false`,需拍板方案 A(程序扩列)/ B(Excel 小工具)。