HANDOFF.md
@@ -17,6 +17,26 @@
- **口径结论(写进设计)**:**新母版一律从"当期产物"派生**(产物带当期数据与公式),不再从旧母版派生——否则每月都会丢"当期列",累计逐月漏数。
- **遗留**:① 待用户确认是否把 v3 落盘为正式 9 月母版(会先备份手工版);② 扩列产物中被重写的公式暂无缓存值(只写公式 + `fullCalcOnLoad`,Excel/WPS 打开自动算)——建议补"整本重算写缓存";③ `中口径明细` 表头行识别返回 `[2,4]`,需核查。
- **报告(本地、不入库)**:`docs/功能测试报告/功能测试报告_扩列以当期产物为底_2026-10-12.md`。状态:**【待验收】**。
### 10-12(4):扩列公式克隆两处修正 + 9 月母版落盘 + 端到端验证通过【待验收】
- **修前问题(同一批次的三个)**:① 克隆"当月值列"时公式未相对右移(新列写成 `=Q7+Q9`,应 `=S7+S9`)→ 全省行取到上月数;② 克隆"当月同比列"时分子指向旧月份(`=Q5/AN5-1`,应 `=S5/AN5-1`)→ 算的是"上月值÷去年同月";③ POI `setCellFormula` **不接受前导 `=`** → 接口 500(`FormulaParseException`,§6.3 历史坑)。
- **修法**:新增 `shiftRefsAll`(克隆时对"本页/已扩列页"引用**无条件 +2**,相对复制)与 `cloneYoyCell`(不克隆,直接写 `本月值/表中定位的去年同月-1`,即 C3 口径);公式串去掉前导 `=`。
- **9 月母版落盘(用户已确认)**:手工版备份为 `_bak_2026年9月母版_手工版_20261012.xlsx`;新母版 = "8 月产物 → 扩列",1,083,567 B;输出目录命名理顺(最新件 `_扩列_2026年9月_待确认.xlsx`,旧版加 `_bak_` 前缀)。
- **端到端验证(用新母版生成 2026-09)**:
  - 货运 8 月列有值:全口径 **16888.7615**、规上 **3665.3638**、规下 **13223.3977**;
  - 9 月列:全口径 3575.1211(②表未导,只有①规上)、规上 3575.1211;
  - **累计:全口径 133887.0138(=1-8月 130311.89 + 9月 3575.12)、规上 34974.9459(=27734.46+3665.36+3575.12)、规下 98912.0679** ✓ 与手算一致;
  - 公交:8 月 12315.37、累计 110776.34 ✓。
- **遗留**:① 扩列产物被重写的公式无缓存值(建议补"整本重算写缓存");② `中口径明细` 表头行识别返回 `[2,4]` 待核查;③ ②表(全口径)9 月未导入前,"全口径"行显示等于规上(公式 =规上+规下、规下为空),体检已提示,导数据后自动正常。
- **报告(本地、不入库)**:`docs/功能测试报告/功能测试报告_扩列公式克隆修正与9月验证_2026-10-12.md`。状态:**【待验收】**。
### 10-12(5):修「9 月公交/出租月报导不进去」——导入改按表头名定位列【待验收】
- **现象**:用户导入 9 月公交/出租月报反复失败;`import_batch` 无记录、`city_bus_monthly`/`city_taxi_monthly` 无 2026-09 行 → **解析阶段即抛错**(没进写库)。
- **根因(实测三份文件)**:9 月模板比 7 月**少列导致整体左移**——公交 68→**66** 列(少 `统一社会信用代码`、`填报单位`,第 3 列起左移 2);出租 41→**40** 列(少 `填报单位`,左移 1)。导入器原是**按固定列号取值 + 固定列位校验** → 校验直接抛「与文件内容不符」。必需列按名都在,是列位不匹配;且取值也按固定列号,不改会整体读错列。
- **改动(按 I4 口径兼容模板差异)**:新增 `colByName(hdr, fallback, name[, occurrence])`(按表头名取列,未命中回退原固定列号)与 `requireHeaderColsByName(...)`(只校验必需列按名存在、不校验列位);`importCityBus`/`importCityTaxi` 所有字段改为按名取值;公交重复表头「其中:城市内」(2 次)用出现序号区分(`stopCity`=1、`passengerCity`=2)。映射取自实测表头(公交 42 字段、出租 37 字段全部命中)。
- **验证**:列位差异已定位;名称映射完备(42/42、37/37);校验放宽仍保留"真缺列"的负向拦截;编译通过、后端已重启(PID 40592,13:17:38)。
- **待办**:**请用户在页面重导这两个 9 月文件**(助手不代导);导入后助手做只读抽查(行数/市州/与源文件逐列对齐,尤其"城市内/城际城乡"口径字段)。
- **报告(本地、不入库)**:`docs/功能测试报告/功能测试报告_公交出租导入按表头名定位_2026-10-12.md`。状态:**【待验收】**。
## 最新(2026-10-12,zyj 线)
### 10-12:扩列器补「标题按母版期次重写」+ 修正 8 月母版标题【待验收】