docs/»ã×Ü´ó±íM0°æÊ½Öؽ¨Æ÷¹æ¸ñ_2026-10-06.md
@@ -104,3 +104,41 @@
4. **城市客运页参照组是压缩结构**(同比 + 1-X æœˆç´¯è®¡ï¼‰ï¼Œä¸Žå…¶å®ƒé•¿è¡¨é¡µä¸åŒï¼Œéœ€å•独规则。
5. **跨年开新本(2027)不在 M0 èŒƒå›´**,需另定"新年块"规则。
6. **未覆盖页**:中口径分析等 3 ä¸ªé™æ€é¡µä»æ²¿ç”¨æ¯ç‰ˆé™æ€å†…容,本阶段不改。
## åä¸€ã€å‚照同事「专项统计」的设计映射与落地路线(2026-10-08)
### 11.1 å¯¹é½è¡¨ï¼šä»–为什么能一个母版,我们对应怎么做
| åŒäº‹ä¸“项统计的做法 | ä»–为什么能成立 | æ±‡æ€»å¤§è¡¨çš„对应做法 |
|---|---|---|
| ä¸€ä»½æ¯ç‰ˆï¼ˆ`2026年十一数据.xlsx`),**天为行、年为列** | å¢žé•¿ç»´åº¦æ˜¯ã€Œå¹´ã€ï¼Œä¸€å¹´åŠ ä¸€ç»„åˆ—ï¼›å¤©æ•°å›ºå®š 8 | å†»ç»“《道路运输量汇总表_标准母版.xlsx》:**12 ä¸ªæœˆæ»¡ç‰ˆå¼ä¸€æ¬¡åˆ°ä½**,只读 |
| æ¯ç‰ˆåŒæ—¶æ˜¯æ•°æ®å®¹å™¨ï¼ˆåŽ†å²å¹´ä»½çš„å€¼å°±åœ¨å¹¶æŽ’å¹´åˆ—é‡Œï¼‰ | åŽ†å²å€¼éšæ¨¡æ¿ä¸€èµ·èµ° | **反过来做**:历史参照值入库,母版只留版式,参照组由 DB å›žå¡« |
| è¡¨å¤´/行标签语义定位(`findYearColumn` / `parseDayIndex`) | åˆ—序变了也能导 | æ–°å¢žé¡µè§„则表 `SummarySheetRule`:按表头认月份组、按行标签认市州/指标,不用硬编码列锚点 |
| æ˜“漂移口径外置成表(`holiday_calendar` / `passenger_coefficient` / `vehicle_adjustment`) | è§„则不散在代码与单元格里 | å‚照年保留组数、排名口径(全省不排名)、周转量系数 B=G+L/2+Q/10、缺数置空规则 å¤–ç½® |
| `DECIMAL(30,15)` + `BigDecimal` + æŒ‰ Excel æ˜¾ç¤ºç²¾åº¦å–值 | ç²¾åº¦å£å¾„统一,无浮点尾差 | æ‰¿æŽ¥é•¿æœŸå¾…办「16 å¼ è¡¨ 228 ä¸ª double åˆ—改 DECIMAL + BigDecimal」 |
| å¯¼å…¥ä¸¤é˜¶æ®µç¡®è®¤ + å…¨ç¨‹åªè¯»æ ¸å¯¹ | åŽ†å²æ•°æ®ä¸è¢«è¯¯è¦†ç›– | ç”Ÿæˆå‰å…ˆå‡ºç¼ºæ•°/差异清单,人工确认后再出表(现有 B4 åŸºæ•°ä½“检补齐) |
| è¾“出走模板文件(docx / PNG) | ç‰ˆå¼æ¥æºå•一 | ä¿ç•™çŽ°æœ‰åšæ³•ï¼ˆå¿«æŠ¥æ”¹ `word/document.xml`、JFreeChart å‡º PNG) |
### 11.2 è½åœ°è·¯çº¿ï¼ˆå››é˜¶æ®µï¼‰
- **阶段 1(= M0,3.5–5 å¤©ï¼‰**:标准母版冻结 + æ»¡ç‰ˆå¼ + è·¨å¹´é‡å»º + é¡µè§„则表。
  æ–°å¢ž `SummaryLayoutRebuilder` / `SummarySheetRule` / å•测。
  å‡ºå£ï¼š7 æœˆå›žå½’ diff=0;9 æœˆå¯¹ç…§æ‰‹å·¥ç‰ˆ diff=0;10 æœˆèµ·å¯ç›´æŽ¥å‡ºè¡¨ã€‚
- **阶段 2(+1–2 å¤©ï¼‰**:把现有三份文件依赖合并为一份。
  çŽ°çŠ¶ä¾èµ–ï¼šæœˆåº¦æ¯ç‰ˆï¼ˆ`resolveSummaryMother`)+ `_备份_` donor(`resolveSummaryDonor` / `restoreSummaryMonthlyBlocks`)+ ç‰ˆå¼å‚照件(`resolveSummaryLayoutRef`)。
  ç›®æ ‡ï¼šåªç•™ã€Šé“路运输量汇总表_标准母版.xlsx》,参照值从库回填,停用 donor ä¸Žè¿˜åŽŸæœºåˆ¶ã€‚
  å‡ºå£ï¼š`docs/生成汇总大表/` ä¸‹åªå‰© 1 ä¸ªæ¨¡æ¿æ–‡ä»¶ + è¾“出目录(`_bak_*` ç­‰æœ¬åœ°ç•™å­˜ã€ä¸å…¥åº“)。
- **阶段 3(可选,+2–3 å¤©ï¼‰**:母版内用命名区域/占位符标注需填格,程序按名填写;母版被挪列/插行时明确报错。
- **阶段 4(可选,+5–10 å¤©ï¼‰**:把 10 ä¸ªé•¿è¡¨é¡µçš„版式参数化(列组规则 + åˆå¹¶åŒº + åˆ—宽 + æ•°å­—格式 + æ‰“印区),程序从版式定义渲染,母版文件降级为一次性样式提取源;
  3 ä¸ªéšè—å…¬å¼é¡µï¼ˆä¸­å£å¾„计算过程 / 2025年城市客运量 / ä¸­å£å¾„分析)保留文件形态。
### 11.3 ä¸¤æ¡ä¸ç…§æ¬
1. **不把 Excel å½“数据源**:同事那边业务每天填同一形状的 Excel æ–‡ä»¶ï¼›æ±‡æ€»å¤§è¡¨æ•°æ®å¿…须走 DB å¯¼å…¥ + ä¸¤é˜¶æ®µç¡®è®¤ï¼Œä¸èƒ½é€€å›ž"手工填母版"。
2. **必须有「新年组」逻辑**:他的天数是常数(8 å¤©ï¼‰ï¼Œè·¨å¹´åªæ˜¯åŠ ä¸€ç»„å¹´åˆ—ï¼›æˆ‘ä»¬è·¨å¹´è¦æ–°å¢žä¸‹ä¸€å¹´åº¦åˆ—ç»„å¹¶æŠŠå½“å¹´ç»„é™çº§ä¸ºå‚ç…§ç»„ï¼Œè¿™ä¸€æ­¥ä»–æ²¡æœ‰å¯¹åº”å®žçŽ°ã€‚
### 11.4 åº•线与风险
- 3 ä¸ªéšè—å…¬å¼é¡µä¾èµ–母版现成公式,阶段 1–2 å¿…须原样保留,阶段 4 æ‰è°ˆé‡å»ºã€‚
- æ‰“印区、页眉页脚、条件格式、列宽必须逐页核对,是"肉眼版式"最易漏的点。
- ä¸šåŠ¡æ”¹æŒ‡æ ‡è¡Œ/页签/边框属于需求变更,任何方案都要一次适配;本方案把频率从「每月一次」降到「偶尔一次」。
- æ¯ç‰ˆæ”¹ä¸ºåªè¯»ï¼Œå¯é¡ºå¸¦è§„避 WPS/openpyxl é‡å­˜å¸¦æ¥çš„高压缩与残留 `<is>` éžæ³•格两类历史坑。