zhizhijie
9 天以前 15c8035c5b9d490fad685f0665fbfaeec3220e5d
docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-20.md
@@ -68,6 +68,33 @@
  å¹¶æ–°å¢žã€Œå¯¼å‡ºæ˜Žç»†ã€æŒ‰é’®ï¼ˆCSV,带 BOM,可直接 Excel æ‰“开),用于用户自行核对/修改不一致内容。
- è¦†ç›– 4 å¤„:批量导入结果、市州单表批量导入结果、单文件导入失败、投资与投资系统不一致清单。
### 1.7 æ±‡æ€»å¤§è¡¨å¯¼å‡ºå¼‚步化 + ç»“果缓存(用户提问「点下载要等一会,数据多了会不会卡死」)
- **现象**:汇总大表点「导出」后要等 10~20 ç§’才触发下载,期间页面无任何反馈;同步请求一直占着 Web çº¿ç¨‹ã€‚
- **定位**:14 ç§’里母版读取+回填 6.5s、整本约 4 ä¸‡æ ¼å…¬å¼é‡ç®— 4.1s、写盘传输 3.4s——耗时来自 Excel å¤„理,**与数据库行数关系不大**,数据多了主要是 SQL èšåˆå˜æ…¢ï¼Œä¸ä¼šã€Œå¡æ­»ã€ã€‚
- **改动**:
  1. æ–°å¢ž `ReportExportTaskService`(固定 1 çº¿ç¨‹æ±  daemon):提交即返回 taskId,前端 700ms è½®è¯¢ã€Œæ­¥éª¤ + ç™¾åˆ†æ¯” + å·²ç”¨æ—¶é•¿ã€ï¼›ç»“果保留 30 åˆ†é’Ÿï¼ˆå†…存态,进程重启失效)。
  2. **结果缓存 10 åˆ†é’Ÿ + æ•°æ®ç‰ˆæœ¬å®ˆå«**:版本取 `SELECT IFNULL(MAX(id),0) FROM import_batch`,期间只要有新导入就自动失效(取不到版本时禁用缓存);同一报表期并发提交自动去重、复用同一任务。
  3. `ReportExportService` æ–°å¢žå¸¦è¿›åº¦å›žè°ƒçš„ `exportSummaryWorkbook(period, mode, toMonth, progress)` é‡è½½ï¼ˆåŽŸä¸¤ä¸ªé‡è½½å§”æ‰˜å®ƒï¼‰ï¼Œè¿›åº¦ç‚¹ 2%/6%/12%/22%/45%/70%/95%。
  4. `ReportExportController` æ–°å¢ž 3 ä¸ªæŽ¥å£ï¼š`/exportTask/summaryWorkbook`(提交)、`/exportTask/{taskId}`(进度)、`/exportTask/{taskId}/file`(下载);原同步接口保留兼容。
  5. å‰ç«¯ `ReportExport.vue` è¿›åº¦å¼¹çª—:进度条 + æ­¥éª¤ + ç”¨æ—¶ + ç¼“存来源时间 + å¤±è´¥åŽŸå› ï¼Œä»¥åŠã€Œä¿å­˜æ–‡ä»¶ / é‡æ–°ç”Ÿæˆ / åŽå°è¿è¡Œ / å…³é—­ã€ã€‚
- **实测**:提交 0.07s;进度 6→22→45→70→95→100、14.4s å®Œæˆï¼›ç¼“存命中 0.01s;`refresh=true` çœŸå®žé‡ç®—;临时插一条导入后缓存自动失效。
- **同时修掉一个严重回归**:本次新增的 `computed` ä¸Žæ–‡ä»¶ä¸­å·²æœ‰ `computed` **同名重复**,JS å¯¹è±¡åŽè€…覆盖前者 â†’ `username/myModules/visibleModules` å…¨éƒ¨ä¸¢å¤±ï¼Œ
  ã€ŒæŠ¥è¡¨ç”Ÿæˆã€é¡µ `created()` ç›´æŽ¥æŠ›é”™ã€**整页白屏**。接口测试发现不了,是浏览器实测才暴露的(详见测试报告第四节)。
### 1.8 å¸‚州统一填报模板(用户提问「按哪个格式来最好?要不要生成两个模板」)
- **背景**:用户提出「这几个表的更新其实很简单——按项目名称更新汇总表指标、新增项目就新增到明细表;
  é¢„安排汇总表和明细表方式一样,剩下三张表项目固定只更新指标——为什么现在弄得有点复杂」。
- **核对**:需求文档《投资月报数据处理与多表更新需求说明》Step1/2/3 ä¸Žç”¨æˆ·æè¿°å®Œå…¨ä¸€è‡´ï¼Œç¨‹åºé€»è¾‘也是这么实现的。
- **结论**:复杂不在「表」,在「源」——版式不统一(27 ä»½é‡Œ 7 ä»½æœ‰å·®å¼‚)、一个文件混多个市州、没有县区列、列位置靠兜底。
- **产出**:
  1. æ–°å¢žä¸¤ä»½å¸‚州填报模板 `模板_市州月报_客运站场.xlsx` / `模板_市州月报_物流园区.xlsx`
     ï¼ˆã€ŒæœˆæŠ¥ã€é¡µ 17 åˆ—单行表头 + å»ºè®¾æ€§è´¨ä¸‹æ‹‰ + ã€Œå¡«æŠ¥è¯´æ˜Žã€é¡µ 11 æ¡è¦æ±‚);
  2. å£å¾„说明文档 `docs/投资/填报口径与统一模板_2026-09-20.md`(模板字段去向、复杂度来源、待定死的 3 ä»¶äº‹ã€è¿‡æ¸¡å®‰æŽ’)。
- **配套解析改动**:新增「县(市、区)」列解析(写入主档 `county`);表头行判定收紧为
  ã€Œå«é¡¹ç›®åç§° + è‡³å°‘ 2 ä¸ªçŸ­è¡¨å¤´å­—段」,避免把模板自带的「填报说明」页当数据表。
## äºŒã€æµ‹è¯•结果摘要
《功能测试报告_投资明细表就绪与预览类型补齐_2026-09-20.md》:**7 æ¡ç”¨ä¾‹é€šè¿‡ï¼Œ1 æ¡æœªå®žæµ‹**(缺母版提示,未临时移动用户母版文件)。
@@ -109,6 +136,36 @@
| å…¶å®ƒæŠ•资报表回归 | investBillion/County/FiveYearLogistics å„ 136 è¡Œã€ä¸¤å¼ æ˜Žç»†è¡¨ 39/97 è¡Œï¼Œready=true,均可导出 |
| è´Ÿå‘ | `types=foo` â†’ ready=false,note「未知报表类型:foo」 |
《功能测试报告_汇总大表异步导出与缓存_2026-09-20.md》:**17 æ¡ç”¨ä¾‹é€šè¿‡ï¼ˆæŽ¥å£ 8 + æµè§ˆå™¨å®žæµ‹ 7 + å¤éªŒ 2)**。
| æ ¡éªŒé¡¹ | ç»“æžœ |
| --- | --- |
| æäº¤å¼‚步任务 | 0.07s è¿”回 taskId;进度 6→22→45→70→95→100;14.4s å®Œæˆ |
| ä»»åŠ¡æ–‡ä»¶ä¸‹è½½ | 1,325,109 å­—节,1.27s |
| 10 åˆ†é’Ÿå†…缓存复用 | fromCache=true、同 taskId、0.01s |
| refresh=true å¼ºåˆ¶é‡ç®— | æ–°ä»»åŠ¡å·ï¼ŒçœŸå®žé‡ç®— 14.2s |
| è¿è¡Œä¸­å¹¶å‘去重 | ä¸¤æ¬¡æäº¤è¿”回同一 taskId(11.1s) |
| æ–°å¢žå¯¼å…¥ä½¿ç¼“存失效 | import_batch id 533→534 åŽ fromCache=false(测试后已 DELETE æ¸…回 533) |
| è´Ÿå‘:不存在 / æœªå®Œæˆ taskId | ã€Œå¯¼å‡ºä»»åŠ¡ä¸å­˜åœ¨æˆ–å·²è¿‡æœŸã€ã€Œå°šæœªå®Œæˆï¼ˆå½“å‰çŠ¶æ€ï¼šRUNNING)」 |
| æµè§ˆå™¨å®žæµ‹ | è¿›åº¦å¼¹çª—采样、自动下载、缓存提示、重新生成、后台运行、失败提示 6 é¡¹å…¨é€šè¿‡ |
| äº§ç‰©ä¸€è‡´æ€§ | ç¼“存件与重算件解包后逐条目一致;三份缓存件 SHA256 ç›¸åŒ |
| é™„带修复 | `computed` é‡å¤é”®å¯¼è‡´æŠ¥è¡¨ç”Ÿæˆé¡µæ•´é¡µç™½å±ï¼ˆå·²ä¿®å¤å¹¶æµè§ˆå™¨å¤éªŒï¼‰ |
| å¤éªŒï¼ˆç”¨æˆ·é—®é¢˜ 2) | é¢„览同比 12 è¡Œé½å…¨ï¼›ã€Œç´¯è®¡è´§ç‰©å‘¨è½¬é‡ 0%」经查库为取数源本身 `total_yoy=0.00000346`,非缺陷 |
《功能测试报告_市州统一填报模板与县市区解析_2026-09-20.md》:**10 æ¡ç”¨ä¾‹é€šè¿‡ï¼ˆæ­£å‘ 5 + è´Ÿå‘ 3 + å›žå½’ 2)**。
| æ ¡éªŒé¡¹ | ç»“æžœ |
| --- | --- |
| æ¨¡æ¿ç»“æž„ | ä¸¤ä»½æ¨¡æ¿å‡ä¸ºã€ŒæœˆæŠ¥ã€17 åˆ—表头 + å»ºè®¾æ€§è´¨ä¸‹æ‹‰ + å¡«æŠ¥è¯´æ˜Ž 11 æ¡ |
| æ­£å‘导入(模板填报) | total=2、success=2、city=武汉市 |
| ä¸»æ¡£é€å­—段 | åŽ¿åŒºï¼ˆæ±Ÿå²¸åŒº/洪山区)、建设单位、性质、开工/竣工年、总投资、工可/初设全部对齐 |
| æœˆåº¦æ•°é€å­—段 | è‡ªå¼€å§‹ç´¯è®¡/本年计划/自年初累计/本月完成/建设阶段/形象进度全部对齐,报表期 2026-09 |
| è´Ÿå‘:说明页被当数据表 | ä¿®å¤å‰ 8 æ¡è¯¯è§£æžï¼ˆid 233~240)→ ä¿®å¤åŽ 0 æ¡ |
| è´Ÿå‘:县区列写法变体 | ã€ŒåŽ¿ï¼ˆå¸‚ã€åŒºï¼‰/县(市、区)/县市区」归一化后均命中 |
| å›žå½’:8 æœˆçœŸå®žå¸‚州重导 | å®¢è¿ 39、物流 128,与 09-19 æ‰¹æ¬¡ä¸€è‡´ï¼Œfail=0 |
| å›žå½’:8 æœˆæœˆåº¦æ•°æ¯”对 | é‡å¯¼å‰åŽ 136 è¡Œé€å€¼ **IDENTICAL** |
| æ•°æ®æ¸…理 | æµ‹è¯•项目 A/B、2026-09 æ‰¹æ¬¡ã€æµ‹è¯•文件均已删除 |
## ä¸‰ã€é—留问题与待办
1. æ­¦æ±‰ç‰©æµé¡¹ç›®æ¸…单口径(已确认忽略)。
@@ -117,10 +174,9 @@
4. ~~C ç»„(城市客运页结构归一,需用户先在 WPS æ•´åˆ—删除 AJ åˆ—)~~ **已完成**(改用 Excel COM æ•´åˆ—删除 + å…¬å¼è¿˜åŽŸï¼‰ï¼›
   D ç»„(增速排名措辞)/B4(导出前基数体检 + å¼¹çª— + ã€Šæ•°æ®ç¼ºå¤±æ¸…单》页)待排期。
5. ç¼ºæ¯ç‰ˆæç¤ºï¼ˆT08)未实测,可在有测试副本时补测。
6. æ±‡æ€»å¤§è¡¨å¯¼å‡ºæ˜¯**同步请求**,当前约 14 ç§’(每次都要重算整本约 4 ä¸‡æ ¼å…¬å¼ï¼‰ï¼šæ•°æ®é‡å†æ¶¨ä¸»è¦æ˜¯ SQL èšåˆå˜æ…¢ï¼Œ
   ä¸ä¼šã€Œå¡æ­»ã€ï¼Œä½†å»ºè®®åŽç»­åšæˆå¼‚步任务 + è¿›åº¦æç¤ºã€‚
7. éƒ¨ç½²åŒ… `deploy/traffic-audit-deploy-20260913/backend/docs/生成汇总大表/` ä¸Ž `_deploytest/` ä¸‹ä»æ˜¯**带 AJ åˆ—的旧母版**,
   ä¸‹æ¬¡æ‰“包时需同步(未经用户确认不擅自改部署产物)。
6. ~~汇总大表导出是同步请求,建议做成异步任务 + è¿›åº¦æç¤º~~ **已完成**(见 1.7)。缓存是内存态,进程重启即失效;如需跨重启/多人共用的「导出记录」页可后补。
7. éƒ¨ç½²åŒ… `deploy/traffic-audit-deploy-20260913/backend/docs/生成汇总大表/` ä¸Ž `_deploytest/` ä¸‹ä»æ˜¯**带 AJ åˆ—的旧母版** â€”—
   ç”¨æˆ· 2026-09-20 æ˜Žç¡®ã€Œéƒ¨ç½²åŒ…先不管」,**暂不处理**(待要发包时再同步)。
8. ä¸­å£å¾„明细 4 æ ¼ï¼ˆåŸŽé™…城乡巡游出租/网约车)因 2025å¹´8月基数为 0,同比显示 `#DIV/0!`(不可比),如需改空白需用户确认口径。
## å››ã€æ˜Žæ—¥è®¡åˆ’
@@ -128,9 +184,12 @@
1. ç­‰å¤©é—¨æºæ•°æ® / è†å·žé»„石口径确认后补导并复验。
2. æŽ¨è¿› C/D ç»„与 B4。
3. ä¸Žç”¨æˆ·ç¡®è®¤æ˜¯å¦æŠŠ 09-18 å¤œé—´èµ·çš„æœ¬åœ°æäº¤ä¸€å¹¶æŽ¨é€åˆ°å…¬å¸ gitea(用户 09-19 æ›¾è¦æ±‚「今天先不推公司」)。
4. è¯„估汇总大表导出异步化(长任务进度条 / ç»“果缓存),并确认部署包母版同步方式。
4. ~~评估汇总大表导出异步化~~ **已完成**(见 1.7:异步任务 + è¿›åº¦å¼¹çª— + 10 åˆ†é’Ÿç»“果缓存 + æ•°æ®ç‰ˆæœ¬å®ˆå«ï¼‰ï¼›éƒ¨ç½²åŒ…母版按用户要求暂不处理。
9. **8 æœˆç‰ˆåå °æ±‡æ€»è¡¨æœªæ¸…理**:用户只清了 7 æœˆç‰ˆï¼ˆ108032→90112 å­—节),8 æœˆç‰ˆï¼ˆmtime 2026-08-20)仍含武汉 27 + é»„石 4 æ®µï¼›
   è‹¥é‡å¯¼ 8 æœˆç‰©æµï¼Œå·²åˆ é™¤çš„ 31 ä¸ªé¡¹ç›®ä¼šé‡æ–°å»ºæ¡£ â†’ é‡å¯¼å‰éœ€åŒæ ·æ¸…理(或由我代做,待用户确认)。
    **2026-09-20 ä¸‹åˆåšå›žå½’重导时已实测复现**(8 æœˆç‰©æµé‡å¯¼åŽ +31 ä¸ªé¡¹ç›® / +31 æ¡æœˆåº¦æ•°ï¼‰ï¼Œå·²å†æ¬¡æ¸…除,库回到 152 ä¸ªé¡¹ç›® / 284 æ¡æœˆåº¦æ•°ï¼Œ2026-08 æœˆåº¦æ•°é€å€¼ä¸Žé‡å¯¼å‰ä¸€è‡´ã€‚
10. å¸‚州单表导入的**多市州块兜底提示**(识别一份文件含多个市州块并提示/跳过)待用户确认是否要做。
11. ç”Ÿæˆè¡¨æ­¦æ±‰ç‰©æµå°è®¡çŽ°åœ¨åªæœ‰ã€Œæ€»æŠ•èµ„ã€ï¼Œç¼º 8 æœˆçš„自开始累计/本年计划/月完成 â†’ éœ€æ­¦æ±‰ 8 æœˆç‰©æµå•表(或省厅口径)才能补齐。
12. ä¸¤ä»½å¸‚州填报模板待用户过目后下发市州(建议 9 æœˆèµ·æ‰§è¡Œï¼‰ï¼›å¦‚需「模板体检 + è¡¨å¤´ä¸ç¬¦å¼¹çª—」,待用户确认后排期。
13. 8 æœˆåå °ç‰©æµæ±‡æ€»è¡¨æºæ–‡ä»¶ï¼ˆå«æ­¦æ±‰ 27 + é»„石 4)是否由我代做清理,待用户确认(见 1.8 / æµ‹è¯•报告 P3)。