docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-13.md
@@ -39,6 +39,50 @@
- æŽ¨é€å‰ `git fetch gitea` / `git fetch origin` å‡æ— æ–°æäº¤ï¼ˆ`rev-list --left-right --count` = `0 0`),未覆盖同事代码。
- å‘布后复跑 2026-08 å¯¼å‡ºï¼ˆHTTP 200 / 950,783 å­—节 / 29.2 ç§’),对发布后产物 `_t4_2026-08.xlsx` å†åš 586 æ ¼ç‹¬ç«‹å¤æ ¸ = å·®å¼‚ 0 æ ¼ï¼›ä¸Žå‘布前产物逐 zip æ¡ç›®æ¯”对,内部条目字节完全一致(MD5 å·®å¼‚仅来自 zip å¤´æ—¶é—´æˆ³ï¼‰ã€‚
### 8. æ‰“包部署支持(用户新需求:部署到另一台机器)
- æ–°å¢žä¸€é”®æ‰“包脚本 `package-deploy.py`:前端 `npm run build` â†’ `dist` å†…嵌进后端 jar(拷入 `resources/static`)→ `mvn clean package` â†’ æ¸…空 static â†’ ç»„装 `deploy/traffic-audit-deploy-YYYYMMDD/` â†’ åŽ‹ç¼© `traffic-audit-deploy-YYYYMMDD.zip`(本次 69.9 MB / 246 æ–‡ä»¶ï¼Œjar 55.5 MB)。
- éƒ¨ç½²åŒ…结构:`backend/`(jar + docs + application.yml + start-backend.cmd/.sh)、`frontend/`(dist + nginx ç¤ºä¾‹ï¼‰ã€`db/`(init.sql + sql_city_bus/taxi/wyc.sql)、README。
- **修复部署陷阱**:`jwt.secret` å¡«æˆéžæ³• Base64(如中文)会让登录接口 500(jjwt 0.9.1 æŒ‰ Base64 è§£ç  secret)→ `JwtUtils` æ–°å¢ž `secretKeyBytes()` å…œåº•(Base64 ä¼˜å…ˆã€å¦åˆ™ UTF-8 å­—节 + WARN)。
- æ›´æ­£ `docs/打包部署说明.md` ä¸‰å¤„不实:① ä¸éœ€è¦ Redis(pom æ— ä¾èµ–、代码未用);② å‰ç«¯æ”¹ä¸ºå†…嵌进 jar(旧说明称「已内置 file:./web/」,实际 jar å†…无静态文件);③ è¡¥ `sql_wyc.sql` ä¸Ž `summary.template-dir`。
- ç‹¬ç«‹éªŒè¯ï¼šæŠŠéƒ¨ç½²åŒ… backend æ‹·åˆ° `_deploytest/` ç”¨ 8091 ç«¯å£ç‹¬ç«‹å¯åЍ â†’ å¯åŠ¨æˆåŠŸã€`GET /` 200 æœ‰ `#app`、静态 js 200、登录 200 æ‹¿åˆ° token、导出汇总大表 200 / 950,783 å­—节(与开发机产物同尺寸);另测中文 secret å…œåº•路径同样 200。
- å¼€å‘机后端已按新代码重启(旧 PID 27840 å·²åœï¼‰ï¼Œé‡å¯åŽç™»å½• 200、导出 950,783 å­—节,无回归。
- æŠ¥å‘Šï¼š`docs/功能测试报告/功能测试报告_部署包打包与独立启动_2026-09-13.md`。
### 9. æ•°æ®åº“搬迁支持(回答「能不能直接备份数据库过去」)
- ç»“论:可以,且比跑 4 ä¸ªå»ºè¡¨è„šæœ¬æ›´çœäº‹ã€‚å·²åœ¨ã€Šæ‰“åŒ…éƒ¨ç½²è¯´æ˜Žã€‹é‡Œè¡¥ã€Œè·¯çº¿ A ç©ºåº“ 4 è„šæœ¬ / è·¯çº¿ B æ•´å¥—备份还原」二选一说明,并标注 **init.sql æ˜¯ç ´åæ€§çš„(基础表都带 DROP TABLE)**,已有数据的库上不能重复执行。
- ç”Ÿæˆå¤‡ä»½ `traffic_audit_full_20260913.sql`(45.5 MB,mysqldump --databases,含建库语句与全部 29 å¼ è¡¨æ•°æ®ï¼‰ã€‚
- è¿˜åŽŸéªŒè¯ï¼šæŠŠå¤‡ä»½é‡Œçš„åº“åæ”¹æˆä¸´æ—¶åº“ `traffic_audit_vfy` å¯¼å…¥ï¼Œé€è¡¨ `COUNT(*)` ä¸Žæºåº“比对 â€”— **29 å¼ è¡¨ 0 å·®å¼‚**,抽查 `wyc_order_monthly` 2026-08 è¡Œæ•°æ­£ç¡®ï¼ŒéªŒè¯åŽåˆ é™¤ä¸´æ—¶åº“。
- é¡ºå¸¦ç¡®è®¤ï¼šå¦å¤– 3 ä¸ªè„šæœ¬ï¼ˆsql_city_bus/taxi/wyc)没有 `USE` è¯­å¥ï¼Œå¿…é¡» `-D traffic_audit` æ‰§è¡Œï¼›init.sql è‡ªå¸¦å»ºåº“语句可独立执行。
### 10. å¤‡ä»½è¿˜åŽŸçš„ç‰ˆæœ¬æ ¸æŸ¥ä¸Žå¼ºéªŒè¯ï¼ˆå¤æŸ¥å‘çŽ°çš„é—®é¢˜ï¼‰
- å¤æŸ¥å‘现两个此前表述不准的点:① æœ¬æœº **MySQL æœåŠ¡ç«¯æ˜¯ 8.0.29**(`D:\mysql\mysql-5.7.41-winx64` åªæ˜¯ 5.7 å®¢æˆ·ç«¯å·¥å…·ï¼‰ï¼Œæ˜¨æ™šæŒ‰ã€Œæœ¬æœºæ˜¯ 5.7」写的说明不准确;② 29 å¼ è¡¨çš„æŽ’序规则统一为 `utf8mb4_0900_ai_ci`,**目标机必须装 MySQL 8.0,5.7 ä¼šå¯¼å…¥å¤±è´¥**。
- å› æ­¤æ”¹ç”¨ä¸ŽæœåŠ¡ç«¯åŒç‰ˆæœ¬çš„ `C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqldump.exe` é‡æ–°å¯¼å‡ºå¤‡ä»½ `traffic_audit_full_20260913.sql`(45.5 MB)。
- å¼ºéªŒè¯ï¼ˆ8.0 å®¢æˆ·ç«¯ï¼‰ï¼šå¤‡ä»½æ”¹åº“名导入临时库 `traffic_audit_vfy` â†’ è¡¨æ•°é‡ 29=29、表名一致、**逐表 `SHOW CREATE TABLE` ç»“构差异 0**、**逐表 `COUNT(*)` è¡Œæ•°å·®å¼‚ 0**、抽查 `wyc_order_monthly` 2026-08 `order_sum` ä¸€è‡´ â†’ éªŒè¯åŽåˆ é™¤ä¸´æ—¶åº“。
- éƒ¨ç½²è¯´æ˜Žå·²åŒæ­¥æ›´æ­£ï¼ˆçŽ¯å¢ƒè¦æ±‚è¡¨ã€è·¯çº¿ B å‘½ä»¤ä¸Žç‰ˆæœ¬è¯´æ˜Žã€`DROP TABLE` è¦†ç›–警告)。
### 11. æŸ¥è¯ Navicat .nb3 å¤‡ä»½æ ¼å¼ï¼ˆå›žç­”「不是可以打包成一个文件直接还原吗」)
- ç”¨æˆ·è®°å¿†ä¸­çš„「一个文件直接还原备份」= Navicat ç§æœ‰æ ¼å¼ **`.nb3`**;本机已有 8/27 é‚£ä»½ï¼š`D:\文档\Navicat\MySQL\Servers\mysql80\traffic_audit\20260827152017.nb3`(**已过期**:27 å¼ è¡¨ã€ç¼ºç½‘约车两张、数据停在 8/27)。
- è§£æžå‡ºæ ¼å¼ï¼š`tar` å®¹å™¨ = æ¯å¼ è¡¨ `<uuid>.meta.json.gz`(DDL/字段)+ `<uuid>.data.000NN.sql.gz`(gz æ•°æ®åˆ†ç‰‡ï¼‰+ æœ«å°¾æœªåŽ‹ç¼© `meta.json`(DatabaseType/Schema/Objects[UUID,Type,Name,Rows,Metadata{Filename,Checksum}]);`Checksum` ç»å®žæµ‹å°±æ˜¯è¯¥ meta æ–‡ä»¶çš„ **SHA1(大写)**。
- ç»“论与建议:`.nb3` åªèƒ½ç”± Navicat è‡ªèº«ç”Ÿæˆã€ä¹Ÿåªèƒ½ç”¨ã€Œè¿˜åŽŸå¤‡ä»½ã€è¿˜åŽŸï¼Œ**用 .sql ç‚¹ã€Œè¿˜åŽŸå¤‡ä»½ã€å¿…ç„¶å¤±è´¥**;我无法在命令行侧可靠合成并验证 Navicat æ˜¯å¦æŽ¥å—,所以不提供手工拼的 .nb3,改为在文档里写清「本机 Navicat ç‚¹ä¸€æ¬¡å¤‡ä»½ â†’ æ‹·åˆ°ç›®æ ‡æœºåŒè·¯å¾„ â†’ è¿˜åŽŸå¤‡ä»½ã€çš„å‚»ç“œæ­¥éª¤ã€‚
- `docs/打包部署说明.md` 5.1 èŠ‚æ–°å¢žã€Œè·¯çº¿ B2:Navicat å¤‡ä»½/还原(.nb3)」,并注明三种方式任选其一、不可叠加。
### 12. ã€Šè¿è·å¼‚常分析》——桌面《分析报告(出版)》重写(跨会话续作)
- ä¸Šä¸ªä¼šè¯ï¼ˆthread `01a08b6d-30de-7500-8c98-f6e87100e55c`)按用户 23:05 çš„要求,依据 `D:\05\_数据分类\运距异常\2026å¹´1-8月全省规上货物周转量差异率汇总表(4).xlsx`(`市州汇总`/`企业明细副本`)与 `D:\桌面\副本1-6月货运量测算数据各市州.xlsx`(`Sheet1` åˆ†å¸‚州规上货运量、`Sheet2` é«˜é€Ÿè½¦è´§æ€»é‡/总重里程/运距)重写 `D:\桌面\分析报告(出版).docx`,产出 **`D:\桌面\分析报告(出版)_新_20260913.docx`(43045 å­—节,6 é¡µï¼Œ5 å¼ è¡¨ï¼‰**,生成脚本 `_gen_report.py`;结构为 ä¸€ æ€»ä½“情况/二 ä¸Žé«˜é€Ÿå…¬è·¯æŒ‡æ ‡å¯¹æ¯”(表1 å•月、表2 ç´¯è®¡ï¼‰ï¼ä¸‰ åˆ†è¿è¾“方式(表3)/四 åˆ†å¸‚州(表4)/五 ä¼ä¸šä¸Žè¿åŠ›ï¼ˆè¡¨5)/六 ä¸‹ä¸€æ­¥å¯¹å¸‚州的要求与建议(6 æ¡ï¼‰ã€‚
- è¯¥ä¼šè¯å› ä¸Šä¸‹æ–‡è¶…限中断(requested 1,189,201 > 1,048,576 tokens),本会话续作;该会话结束前已渲染校验 `_render_check\rp01~rp06.png`。
**事故与恢复(重要)**
- æœ¬ä¼šè¯ä¸­ä¸€æ¡å‚数写反的命令把 `D:\桌面\分析报告(出版)_新_20260913.docx` è¦†ç›–成**纯文本**(10508 å­—节,`zipfile.is_zipfile=False`),Word æ‰“开即为无排版的文字流、表格被拆成一行一词——这就是用户反馈「格式全乱、内容差太多」的直接原因。
- å¤„置:误覆盖件已备份到 `_误覆盖备份_分析报告_新_20260913_纯文本.txt`;用 `D:\render_src.docx`(23:10:07 åŽŸæ ·å‰¯æœ¬ï¼‰è¿˜åŽŸæ¡Œé¢æ–‡ä»¶ï¼Œ**SHA256 ä¸€è‡´**(`1723594DC746BA4458F19381D893AC0A17060CCC5B20513A8A10AFB19B415373`),结构校验 zip æ­£å¸¸ã€5 è¡¨ 262 æ®µã€‚已核对:备份纯文本内容与还原件内容一致,**无内容丢失**。
**已查清的残留格式缺陷(待修)**
- `_gen_report.py` çš„ `borders()` æŠŠ `w:tblBorders` è¿½åŠ åœ¨ `w:tblLook` **之后**(合法顺序应为 `tblW→jc→tblBorders→tblLayout→tblLook`),且 `tblW=0`(type=auto)、`gridCol` 6 åˆ—均分 1568,列宽与内容不匹配。
- é¡µé¢å°ºå¯¸ï¼šè¿˜åŽŸä»¶ä¸º 12240×15840(Letter)+1417 twips é¡µè¾¹è·ï¼Œç”¨æˆ·åº•稿《分析报告(出版).docx》为 A4(11906×16838)+1800 twips,待统一。
- å·²èµ·è‰ä¿®å¤è„šæœ¬ `_gen_report_v3.py`(自还原件读回内容 â†’ é‡æŽ’ `tblPr` é¡ºåºã€`tblLayout=fixed`、`autofit=False`、按内容分配列宽、A4/25.4mm é¡µè¾¹è·ã€è¡¨å†…行距改单倍),**本次未执行、未产出文件**,明日继续。
## äºŒã€æµ‹è¯•结果摘要(详见《功能测试报告》)
| é¡¹ | ç»“æžœ |
@@ -57,6 +101,9 @@
3. **根目录临时文件**(本次经用户同意删除自测副本 `_t_wyc_aug.docx`;其余 100+ ä¸ª `_*` ä¸´æ—¶æ–‡ä»¶æœªåŠ¨ï¼‰ï¼š`_*.py` / `_*.sql` / `_*.xlsx` / `_*.txt` / `_bak_*.java` ç­‰ 100+ ä¸ªæœªè·Ÿè¸ªæ–‡ä»¶ï¼ˆç”¨æˆ·æœªåŒæ„å‰ä¸æ¸…理、不提交)。
4. `docs/生成汇总大表/生成_道路运输量汇总表.xlsx`(版式参照件)与 `docs/生成汇总大表/输出/` ä¸‹çš„历史产物均为未跟踪文件,暂按惯例不纳入提交。
5. 2026-08 å¯¼å‡ºçš„「未找到同期备份母版」告警属无害提示,是否消除待用户定。
6. **《分析报告(出版)_新_20260913.docx》表格格式未修完**:`tblPr` é¡ºåºã€åˆ—宽、页边距待重排(脚本 `_gen_report_v3.py` å·²èµ·è‰æœªæ‰§è¡Œï¼‰ã€‚
7. æŠ¥å‘Šã€Œäº”、企业与运力情况」末尾注明「规上企业户数同比、自有车辆及吨位同比两项指标本次未取得数据」,但用户明确要「今年企业减少、运力下降」这一层,数据源疑似 `D:\05_数据分类\货运\8月\道路货物运输月度生产情况(2026)_2026-09-13 18_24_49.xls`(636 å®¶ï¼‰å¯¹æ¯” `D:\需要导入的数据\货运\2025年月报\道路货物运输月度生产情况(2025å¹´8月).xls`(664 å®¶ï¼‰â€”—**尚未由我独立核实,不得直接写入报告**。
8. æ³¨æ„ï¼šæŠ¥å‘ŠåŽŸæ–‡ã€Œè¿åŠ›åŒæ¯”å¢žé•¿ 1.92%」与用户「运力下降」的说法口径不同(前者为全省营运货车吨位,后者疑为规上企业自有车辆吨位),明日需先与用户确认口径再定稿。
## å››ã€æ˜Žå¤©è®¡åˆ’
@@ -64,3 +111,7 @@
2. æŒ‰ç”¨æˆ·åé¦ˆç»§ç»­æ ¸å¯¹å››é¡µæˆå“ï¼ˆé‡ç‚¹ï¼šåŸŽå¸‚分市州增速列、道路运输周转量同期列口径是否符合业务预期)。
3. è·Ÿè¿› 2025 å¹´åŸŽå¸‚客运/中口径数据入库,入库后把四页同比从「母版缓存」切到「读库」。
4. è§†ç”¨æˆ·æ„æ„¿æ¸…理根目录临时文件。
5. **(优先)** å®Œæˆã€Šåˆ†æžæŠ¥å‘Šï¼ˆå‡ºç‰ˆï¼‰_新_20260913.docx》的表格格式修复:执行/修订 `_gen_report_v3.py`,重排 5 å¼ è¡¨çš„ `tblPr` é¡ºåºã€`tblLayout=fixed`、按内容分配列宽、统一 A4 é¡µé¢ï¼Œäº§å‡ºåŽ**自查渲染**(Word→PDF→PNG,图片只用于自查不发给用户),确认表格不越界、打开不报修复提示。
6. å°±ã€Œä¼ä¸šä¸Žè¿åŠ›ã€ä¸¤é¡¹æŒ‡æ ‡å£å¾„ä¸Žç”¨æˆ·ç¡®è®¤ï¼ˆå…¨çœè¥è¿è´§è½¦å¨ä½ +1.92% vs è§„上企业自有车辆吨位下降),确认后再补数、补分析。
7. æŠ¥å‘Šå®šç¨¿åŽæŒ‰è§„范补《功能测试报告》(docs/功能测试报告/),再按 git åŒä»“库流程提交推送。