.gitignore
@@ -104,3 +104,9 @@ # Codex åºç¨å¨æ¬ä»åºæ ¹ç®å½äº§çç产ç©ç®å½ï¼ä¿ç卿¬å°ï¼ä¸å ¥åºï¼ outputs/ traffic-audit-server/config/application.yml # ==== è¿ç¨æ¥å¿ï¼æ¬å°èªæ¥ç¨ï¼ä¸å ¥åºï¼2026-09-27 èµ·æåäºæäº¤æ¹å¼è°æ´ï¼==== docs/åè½æµè¯æ¥å/ docs/工使¥ç»/ # ==== æ¬å°å¤ä»½ï¼ä¸å ¥åºï¼2026-09-27ï¼==== _backups/ AGENTS.md
@@ -34,17 +34,22 @@ - æ²ç®±å `Get-NetTCPConnection` ä¼å æéâæç»è®¿é®âèéé»å¤±è´¥ï¼**ä¸è¦**æ®æ¤å¤å®ç«¯å£æªçå¬ï¼å¤ææå¡ç¶æä»¥ backend.log / frontend.log 为åã - ç¨æ·è¦æ±ï¼ä¸´æ¶èæ¬/æä»¶æªç»åæä¸å ï¼å¯¼å ¥å¤±è´¥è¦å¨é¡µé¢æ¾ç¤ºè¡å·ï¼AI åæç»æè¦ç»ç»æåæç + éåè¾åºå¨ç»ã ## å·¥ä½è§èï¼2026-09-02 èµ·ï¼å¿ é¡»éµå®ï¼ 1. **æ¯åå®ä¸ä¸ªåè½ï¼ç«å³æµè¯å¹¶åãåè½æµè¯æ¥åã** ## å·¥ä½è§èï¼2026-09-02 èµ·ï¼2026-09-27 æåäºæäº¤æ¹å¼è°æ´ï¼ 1. **æ¯åå®ä¸ä¸ªåè½ï¼ç«å³æµè¯**ï¼æµè¯è¦æ±ä¸åï¼ - æµè¯è³å°è¦çï¼æ£åç¨ä¾ï¼æ£å¸¸æ°æ®ï¼ãè´åç¨ä¾ï¼éç±»å/éåä½/缺åçï¼ãå ¥åºæ½æ¥ï¼ä¸æºæä»¶é项对é½ï¼ã - æ¥ååå ¥ `docs/åè½æµè¯æ¥å/`ï¼å½åï¼`åè½æµè¯æ¥å_<åè½å>_<YYYY-MM-DD>.md`ã - ãåè½æµè¯æ¥åãå卿¬å° `docs/åè½æµè¯æ¥å/`ï¼å½åï¼`åè½æµè¯æ¥å_<åè½å>_<YYYY-MM-DD>.md`ï¼**该ç®å½å·² gitignoreï¼ä¸å ¥åº**ï¼èªå·±çæ¡£/夿¥ç¨ï¼ã - æ¥åé¡»å å«ï¼åè½è¯´æãæµè¯ç¯å¢ãç¨ä¾è¡¨ï¼è¾å ¥/颿/å®é /ç»è®ºï¼ãåç°çé®é¢ä¸å¤ç½®ãç»è®ºã 2. **æ¯å¤©ä¸çååã工使¥ç»ãï¼å½å鿥æ** - åå ¥ `docs/工使¥ç»/`ï¼å½åï¼`工使¥ç»_<YYYY-MM-DD>.md`ã - å 容è³å°å å«ï¼ä»å¤©åäºä»ä¹ï¼åè½/ä¿®å¤ï¼ãæµè¯ç»ææè¦ãéçé®é¢ä¸å¾ åãæå¤©è®¡åã - å½å¤©æ²¡æä»£ç /æµè¯å·¥ä½æ¶ï¼ä¹è¦åï¼ä¸å¥è¯è¯´æâ仿¥æ ä»£ç æ¹å¨âå³å¯ï¼ã 3. **git 工使µï¼2026-09-03 ç¨æ·ææï¼æ éåè¯¢é®æ¯å¦æ¨éï¼** - æ¯æ¬¡ä¿®æ¹ä»£ç /ææ¡£åï¼å æµè¯å¹¶åãåè½æµè¯æ¥åã/æ´æ°ã工使¥ç»ãï¼å `git fetch origin` ä¸è¿ç«¯ `main` 对æ¯åå¹¶ï¼å¿ è¦æ¶è§£å³å²çªï¼ï¼ç¡®è®¤æ 误å commit å¹¶ push å°å ¬å¸ giteaï¼`http://61.183.254.94:3000/r/trafficAudit.git`ï¼è´¦å· zyjï¼ã - **å ¥åºçæ¯ç»è®º**ï¼æå ³é®ç»è®º/å£å¾/é£é©/å¾ ååè¿ `HANDOFF.md`ï¼å¿ è¦æ¶å¦å `docs/äº¤æ¥ææ¡£_<æ¥æ>.md`ã`docs/é®é¢æ±æ»/`ï¼ï¼ä¸è¯¥æ¬¡ä»£ç æ¹å¨**æ¾å¨å䏿¡æäº¤**éã 2. **ã工使¥ç»ãæ¬å°åãä¸å ¥åº** - åå ¥æ¬å° `docs/工使¥ç»/`ï¼å½åï¼`工使¥ç»_<YYYY-MM-DD>.md`ï¼**该ç®å½å·² gitignoreï¼ä¸å ¥åº**ï¼ç»èªå·±çï¼ã - å 容è³å°å å«ï¼ä»å¤©åäºä»ä¹ãæµè¯ç»ææè¦ãéçé®é¢ä¸å¾ åãæå¤©è®¡åï¼å½å¤©æ 代ç /æµè¯å·¥ä½ä¹è¦åä¸å¥è¯è¯´æã - éè¦äº¤æ¥çé¨åï¼æ"å½åç¶æ + å¾ å"追å å° `HANDOFF.md`ï¼åäºç忳就æ¯è¿æ ·ï¼ã 3. **git 工使µï¼2026-09-03 ç¨æ·ææï¼æ éåè¯¢é®æ¯å¦æ¨éï¼æäº¤ç²åº¦åèåäº xycï¼** - **䏿¡æäº¤ = ä¸ä¸ªæ¹å¨**ï¼ä»£ç /èæ¬ + 该æ¹å¨çè¯´æææ¡£ï¼`HANDOFF.md` / æ¹æ¡ / å£å¾æ¸ åï¼æ¾å¨å䏿¡æäº¤éï¼ä¸è¦ä¸ºæ¯ä¸ªå°æ¹å¨åç¬å»ºæ¥åååç¬æäº¤ã - message åæ³ï¼`feat(模å): â¦` / `fix(模å): â¦` / `docs: â¦` / `docs(交æ¥): â¦`ï¼ä¸å¥è¯è¯´æ¸ "æ¹äºä»ä¹"ã - **ç¦æ¢å ¥åº**ï¼ä¸´æ¶èæ¬ä¸è°è¯äº§ç©ï¼`_tmp_*`ã`_shots/`ã`outputs/`ï¼ãæå»ºäº§ç©ï¼jar / dist / targetï¼ãå¯é¥ä¸å£ä»¤ã大ä½ç§¯å¤ä»½ï¼`*.sql` å ¨åºå¯¼åºï¼ï¼è¿ç¨æ¥å¿ä¸æ¥ç»åªçæ¬å°ã - æ¨éåï¼å æä¸é¢å®ææµè¯ï¼å `git fetch origin` ä¸è¿ç«¯ `main` 对æ¯åå¹¶ï¼å¿ è¦æ¶è§£å³å²çªï¼ï¼ç¡®è®¤æ 误å commit å¹¶ push å°å ¬å¸ giteaï¼`http://61.183.254.94:3000/r/trafficAudit.git`ï¼è´¦å· zyjï¼ã - è¥è¿ç«¯å·²æåäºæ°æäº¤ï¼å¿ é¡»å åå¹¶/åºäºææ°åæ¨ï¼ç¦æ¢å¼ºæ¨è¦çåäºä»£ç ã - å ¬å¸ git è´¦å·å¯ç åªéè¿æ¬æº git åæ®/ä¸´æ¶ askpass 使ç¨ï¼ç¦æ¢åè¿ä»åºå ä»»ä½ææ¡£ææäº¤å 容ã HANDOFF.md
@@ -4,6 +4,65 @@ > **æ¯å¤©ç»ææ¶**ï¼æå½å¤©è¿å±ã踩è¿çåãæ°éæ±ãæªå®æäºé¡¹æ´æ°å°æ¬æä»¶ï¼ç¶åå¯ä»¥æ¾å¿å¼æ°å¯¹è¯ã > **åä½çº¦å®ï¼2026-08-31ï¼**ï¼è¯´ãæäº¤ã= æ¬å° commit + æ¨éå°è¿ç«¯ gitï¼origin mainï¼Gitblitï¼ï¼ä¸ååªåæ¬å° commitã ## ææ°ï¼2026-09-27ï¼ - **æäº¤è§èæ¹ä¸ºåäºæ¹å¼ï¼ç¨æ· 09-27 å³å®ï¼å·²åå ¥ AGENTS.mdï¼**ï¼ 1. ãåè½æµè¯æ¥åãã工使¥ç»ãæ¹ä¸º**æ¬å°åãä¸å ¥åº**ï¼`docs/åè½æµè¯æ¥å/`ã`docs/工使¥ç»/` å·² gitignoreï¼æ¬æ¬¡ 109 个æä»¶ç§»åºä»åºãæ¬å°æä»¶å ¨é¨ä¿çï¼å ¶ä¸ã模ååè½éªè¯ç¶æç©éµ_2026-09-02ãå±å¢éå ±äº«ä¿¡æ¯ï¼å·²ç§»å° `docs/` æ ¹ç®å½ç»§ç»å ¥åºï¼ï¼ 2. **å ¥åºçæ¯ç»è®º**ï¼å ³é®ç»è®º/å£å¾/é£é©/å¾ ååè¿æ¬æä»¶ï¼`HANDOFF.md`ï¼æ `docs/äº¤æ¥ææ¡£_*.md`ã`docs/é®é¢æ±æ»/`ï¼ä¸è¯¥æ¬¡ä»£ç æ¹å¨æ¾å¨å䏿¡æäº¤ï¼ 3. æäº¤ç²åº¦ä¸ messageï¼ä¸æ¡æäº¤ä¸ä¸ªæ¹å¨ï¼ä»£ç +ç¸å ³ææ¡£ï¼ï¼åç¼ `feat(模å):` / `fix(模å):` / `docs:` / `docs(交æ¥):`ï¼ç¦æ¢å ¥åºä¸´æ¶èæ¬/è°è¯äº§ç©/æå»ºäº§ç©/å¯é¥/大ä½ç§¯ sqlã > åèæ°æ®ï¼åäº xyc 55 次æäº¤ä¸ 37 æ¬¡æ´æ°æ¬æä»¶ãåè½æµè¯æ¥åä» 4 æ¬¡ãæ¥ç» 7 æ¬¡ï¼æ¤åææ¹ 144 次æäº¤éå« 102 份æ¥å + 106 份æ¥ç»ã - **æå å»å¯ï¼æ ¹å 已修ï¼**ï¼æ§é¨ç½²å ç jar å ç½® `BOOT-INF/classes/application.yml` 带ç**çå®å¯é¥ä¸åºå£ä»¤**ï¼å¤å± application.yml å¹²åãè¿è¡æ¶ä»¥å¤é¨ä¸ºåï¼ä½ jar å¯è§£åææå¯è§ï¼ä¸ zip å缩导è´ç´æ¥ grep æä¸å°ï¼ã ç°å·²æ¹ä¸ºï¼**è¿ jar çé ç½®åªæå ä½ç¬¦**ï¼`${TRAFFIC_DB_*}`ã`${DEEPSEEK_API_KEY:}`ã`${TRAFFIC_JWT_SECRET:...}`ï¼ï¼æ¬æºçå®å¼èµ° **Windows ç¨æ·ç¯å¢åé**ï¼`TRAFFIC_DB_PASSWORD` / `DEEPSEEK_API_KEY`ï¼ï¼`start-dev.ps1` å¢å äºä»æ³¨å表补é½çå åºã - **æ°å¢èæ¬ï¼å·²å ¥åºï¼**ï¼`pack-deploy.ps1`ï¼ä¸é®æå ï¼æå»º â **è§£å jar å»å¯èªæ£ï¼å½ä¸çå®å¯é¥/ææå£ä»¤å³ä¸æ¢** â é建å端 â ç»è£ é¨ç½²å å° `E:\è¯éª\traffic-audit-deploy-<yyyyMMdd>`ï¼ã`set-secrets.ps1`ï¼è½®æ¢å交äºå¼æ´æ°æ¬æºç¯å¢åéï¼ã`deploy-templates/`ï¼æå æ¨¡æ¿å ¥åºï¼å¤é¨ application.ymlãå¯å¨èæ¬ãnginx 示ä¾ãdb 建表 sqlãé¨ç½² READMEââåå åªå¨æªè·è¸ªçæ§å éï¼å å å³ä¸¢ï¼ã - **æ¸ çæ§é¨ç½²ä»¶ï¼ç¨æ·ç¡®è®¤åæ§è¡ï¼**ï¼å é¤ `E:\è¯éª\traffic-audit-deploy-20260913`ï¼ç®å½ + **69.9 MB ç zip**ï¼ã`deploy\traffic-audit-deploy-20260913`ã`_deploytest`ã空 `out`/`deploy`ï¼æ§ `target` jar ç± `mvn clean` è¦çãå ¨ç夿¥ï¼ä»åº + `E:\è¯éª`ï¼ï¼**å·²æ ä»»ä½å«ææ key ç jar / å缩å / ææ¬æä»¶**ã - **干忰å 已产åº**ï¼`E:\è¯éª\traffic-audit-deploy-20260927`ï¼336 æä»¶ / 96 MBï¼åç«¯å«ææ°ãæå¸å·æ±æ»ãï¼jar å ç½®é ç½®å ¨å ä½ç¬¦ï¼ã - **è¿è¡ç¶æï¼09-27 宿µï¼**ï¼dev å端 `8090`ãå端 `8080` å¨è¿è¡ï¼**æ¬æºæ°æ®åºä¸º MySQL80 `localhost:3308/traffic_audit`ï¼root/å£ä»¤èµ°ç¯å¢åéï¼**ââæ³¨æ `docs/äº¤æ¥ææ¡£_2026-09-23.md` åç `3305` æ¯**åäºæºå¨**çé ç½®ï¼æ¬æºæ²¡æ 3305ï¼å«åç §æã - **å¾ åï¼æ¥æä¼å ï¼**ï¼ 1. **ãéç¨æ·ãè½®æ¢å·²æ³é²ç DeepSeek key**ï¼æ§å¶å°æ°å»º + å æ§ â è· `set-secrets.ps1`ï¼ï¼ 2. **ãéç¨æ·ãæå¡å¨æ¢å **ï¼å æ§å /zip â æ· `traffic-audit-deploy-20260927` â æ¹ `backend\application.yml` æ°æ®åºä¸å¤ï¼éè¦ AI åæåå¡« `deepseek.api-key`ï¼â `start-backend.cmd`ï¼ 3. P0 ä¸é¡¹ä¸åï¼P0-2 äº¿å æèµé¡¹ç®æ Q7 ææè¿½åãP0-3 导åºååºæ°ä½æ£ +ãæ°æ®ç¼ºå¤±æ¸ åã页ãP0-4 缺 2026-06/09 æ¯çï¼ 3.1 **æ±æ»å¤§è¡¨ç°ç¶å¤æ ¸ï¼2026-09-27 宿µï¼æ¯ç `docs/çææ±æ»å¤§è¡¨/2026å¹´8æéè·¯è¿è¾éæ±æ»è¡¨.xlsx` + æè¿çæä»¶ï¼**ï¼ - **累计åå ¬å¼æ²¡è¦çå°å½æï¼å®æµ 306 æ ¼ï¼æªè½å®**ï¼ç¡®åä½ç½®ï¼æ¯ç `docs/çææ±æ»å¤§è¡¨/2026å¹´8æéè·¯è¿è¾éæ±æ»è¡¨.xlsx`ï¼ï¼ · `å ¬äº¤!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`ã · **表头æªè¾ä¿®å¤ï¼æäººå·¥å®ç¨¿ä¸ºåï¼**ï¼`轨éã轮渡!R2`ã`R11` ç±æ¯çèªå¸¦ç"8æä¸å»å¹´åæ¯"æ¹ä¸º"忝"ï¼ä¸è¯¥é¡µ `T2/T11`"ç´¯è®¡åæ¯"ä½ä¾ä¸è´ã䏿工å®ç¨¿ä¸è´ï¼ç¨åºä¸åè¿ä¸¤æ ¼ï¼æ åªæ¹æ¯çï¼ã éªè¯ï¼éæ°çæ 2026-08 â æ°æ§çæä»¶éæ ¼æ¯å¯¹ **ä» è¿ 2 æ ¼æåååï¼19 页ç¾ä¸å°ºå¯¸ä¸åãå ¶å®ä¸å¾ä¸å¨**ã · **å¤å®ä¸º"ç¨åºæ£ç¡®ã䏿¹"ç两å¤**ï¼â `éè·¯è¿è¾å¨è½¬é!A23` ç¨åº"2026å¹´8æå ¨çå®æäº¤éå¨è½¬éæ åµ"ï¼è¯¥åæ¯**彿å¼**ï¼å ¨ç 2,301,720 vs 累计å 17,749,657 ä¸å¨å ¬éï¼â æå·¥å®ç¨¿å¤åäº"累计"ï¼â¡ ` è´§è¿!EA92:EA112` 2022 å¹´ç´¯è®¡åæ¯ 10 æ¡ï¼ä¸å¡å·²ç¡®è®¤è½¯ä»¶å£å¾æ£ç¡®ï¼ã · **ææ¬åæ°åç»ä¸ä¸ºæ°å¼ï¼ç¨æ·å£å¾"æç¨åºå¯¹çæ¹"ï¼**ï¼æ¯ç 157 æ ¼ææ¬åæ°å â æ°å¼ï¼`å ¬äº¤` 153 = AF 68 + M 68 + G 17ï¼`轨éã轮渡` 4 = M 2 + E 2ï¼ï¼ä»ç¨ XML ç²¾åæ¹ç±»åï¼ç¼åå¼å ¨é¨ä¿çï¼ãéæ°çæ 2026-08 â ä¸ä¸ä¸çæ¯å¯¹ï¼**ä» 68 æ ¼ç±»åååï¼strâæ°å¼ãæ°å¼ç¸åï¼ï¼æ ä»»ä½å¼/尺寸åå**ï¼å ¶ä½ 89 æ ¼ç¨åºæ¬å°±ä¼åæ°å¼ï¼ãæ³¨ï¼æ¯å¯¹é妿 286 æ¡"ææ¬åæ°å"å·®å¼å¨**æå·¥å®ç¨¿ä¾§**ï¼æå·¥åææ¬ï¼ï¼éæå·¥ä¾§ç»ä¸æå¿½ç¥ã · **æå页"两个å顺åºå¯¹è°"ï¼å®ä¸ºé¡ºåºé®é¢ï¼ä¸æ¯å¤äºä¸å¼ 表ï¼**ï¼ç¨åº ä»¥æ¨¡æ¿ `docs/è´§è¿/çæ_è´§è¿éæå.xlsx`ï¼æ¨¡æ¿æ¬èº«=累计åå¨è¡1ã彿åå¨è¡23ï¼å¡«å â `è´§è¿éæå` ç¨åº=è¡1累计/è¡22å½æï¼æå·¥=è¡1彿ï¼"2026å¹´8æåå¸å·è´§è¿éæå"ï¼/è¡22累计ï¼`è´§è¿å¨è½¬éæå` ç¨åº 44Ã18ï¼ç´¯è®¡å¨åï¼vs æå·¥ 51Ã18ï¼å½æå¨åãä¸å¤ 7 è¡å¾ ç»çï¼ã**ç¨æ·å£å¾ï¼æå·¥ä¸ºå** â éæ¹æ¨¡æ¿ï¼ä¸¤å对è°ï¼+ ç¸åºä»£ç ï¼åå®ä½/æ é¢åæ³ `ReportExportService:961-966/1315/1575-1583`ï¼+ å¸å·åç± `RegionUtil.shortName()` æ¹å ¨åï¼ä¼° 0.5~1 天å«åå½ï¼å¾ å¼å·¥ã · **æå·¥å¤åºç"è¾ å©å"æ¸ å**ï¼` è´§è¿` å¤ 1 åï¼æ 表头ï¼ä½äº"忝"ä¹åã2025 å¹´ 1 æä¹å â å®ä¸º `U` å"2025 å¹´ 1-8 æç´¯è®¡"è¾ å©åï¼74 æ ¼ï¼ä» V åèµ·æå·¥æ´ä½å³ç§»ï¼ï¼`åå¸å®¢è¿` å¤ `AJ`="2025å¹´1-7æç´¯è®¡"ï¼æ¯ç 09-20 å·²å ãç¨åºå·²ä¸è¾åºï¼ï¼`ç线å 车` å¤ `DU`="1-3æç´¯è®¡"ï¼å³æ¬æ¬¡æ¸ 空çè稿åï¼ï¼`éè·¯è¿è¾å¨è½¬é` æ«å°¾å¤ 2 åï¼Z/AAï¼**表头ä¸å 容å为空**ï¼ã · 忴尾差 194 æ¡ï¼ç¨æ·æç¡®"ä¸ç¨ç®¡"ã · **ä»å¾ ä¸å¡å®ççå¼/æªè¾é¡¹**ï¼`è´§è¿éæå`/`è´§è¿å¨è½¬éæå` çæ é¢ã表头ï¼ç¨åº"ç´¯è®¡å®æ(ä¸å¨)" vs æå·¥"è§ä¸è´§è¿é(ä¸å¨ï¼"ï¼ä¸å¸å·åï¼ç¨åºæè®¾è®¡ç¨çå"æ¦æ±/æ©æ½/æåº"ãæå·¥ç¨"æ¦æ±å¸"çå ¨åï¼ââéä¸å¡ç¡®è®¤ä»¥åªç为åã · â **å¾ åäºç¡®è®¤**ï¼æå·¥å®ç¨¿ä¾§ä¹æè¿äºè稿åç空ï¼å¦åæ¯å¯¹ä¼ä»"ç¨åºæå¼/æå·¥æå¼"åæ"ç¨åºç©º/æå·¥æå¼"ï¼å类差å¼ãæ¹åç¸åï¼ã · **æ¸ ç©ºç 7 åå¯¹ç §è¡¨ï¼ä¾åäºå¤æ ¸ï¼å¼ç¨æ°ä¸ºæ¸ 空åçå ¨ç°¿æ«æï¼**ï¼ | é¡µç¾ | å / èå´ | æ¸ ç©ºæ ¼æ° | å表头 | å ¬å¼è¯ä¹ | æ¸ ç©ºåç¼åå¼ï¼é¦è¡æ ·ä¾ï¼ | å页å¼ç¨ | 跨页å¼ç¨ | | --- | --- | ---: | --- | --- | --- | ---: | ---: | | å ¬äº¤ | `U`ï¼U5:U76ï¼ | 72 | ï¼æ è¡¨å¤´ï¼ | `=V5+X5+Z5+AB5+AD5+AF5` â 2025 å¹´ 1~6 æç´¯è®¡ | 88908.91 | 0 | 0 | | åºç§ | `U`ï¼U5:U76ï¼ | 72 | ï¼æ è¡¨å¤´ï¼ | `=V5+X5+Z5+AB5+AD5+AF5` â 2025 å¹´ 1~6 æç´¯è®¡ | 39797.94 | 0 | 0 | | ç½çº¦è½¦ | `U`ï¼U5:U76ï¼ | 72 | ï¼æ è¡¨å¤´ï¼ | `=V5+X5+Z5+AB5+AD5+AF5` â 2025 å¹´ 1~6 æç´¯è®¡ | 16384.07 | 0 | 0 | | åå¸å®¢è¿ | `U`ï¼U4:U39ï¼ | 36 | ï¼æ è¡¨å¤´ï¼ | `=V4+X4+Z4+AB4+AD4+AF4` â 2025 å¹´ 1~6 æç´¯è®¡ | 206639.67 | 0 | 0 | | ç线å 车 | `DU`ï¼DU4:DU57ï¼ | 54 | 1-3æç´¯è®¡ | `=DO4+DQ4+DS4` â 1~3 æç´¯è®¡ | 5566.8922 | 0 | 0 | | ä¸å£å¾æç» | `U`ï¼U99:U188ï¼ | 90 | ï¼æ è¡¨å¤´ï¼ | `=V99+X99+Z99+AB99+AD99+AF99+AH99` â 2025 å¹´ 1~7 æç´¯è®¡ | 1102278.385724 | 0 | 0 | | ä¸å£å¾å®¢è¿é | `AB`ï¼AB5:AB188ï¼ | 184 | ï¼æ è¡¨å¤´ï¼ | `=AC5+AE5` â 2024 å¹´ 1~2 æç´¯è®¡ | 6088.1871 | 0 | 0 | · **â ååå嫿¸ éï¼åä¾å¯¹ç §ï¼**ï¼`ä¸å£å¾æç»!AB3 = "2025å¹´4æ"` æ¯**æ£å¸¸æä»½å**ï¼è¢« **700+ å¤å页 + 34 å¤è·¨é¡µå ¬å¼å¼ç¨**ï¼ä¾å¦ `ä¸å£å¾æç»!J5 = I5/AB5-1` 2026 å¹´ 4 æåæ¯ã`T5 = S5/SUM(V5,X5,Z5,AB5,â¦)-1` ç´¯è®¡åæ¯ã`AT5 = X5+V5+Z5+AB5+â¦` 2025 累计ã`ä¸å£å¾å®¢è¿é!I11 = ä¸å£å¾æç»!AB11`ï¼ï¼**æ¬æ¬¡æªå¨ãä¹ä¸è½æ¸ **ã夿®ï¼è¯¥å**æè¡¨å¤´**ã**被å¼ç¨æ°è¿å¤§äº 0**ãå ¬å¼è¯ä¹æ¯"被å«çæ ¼å¼ç¨"è䏿¯å¼ç¨å ¶å®æä»½åã - **çæä»¶ééè¯¯å¼ 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 å°å·¥å ·ï¼ã 4. æ±æ»å¤§è¡¨ 304 æ ¼ã2025 累计åå°å 7ã8 æãæ¸ ç©ºï¼ä¸å¡å·²ç¡®è®¤å£å¾ï¼å¾ æ§è¡ï¼ï¼ 5. æ¬æºåå²ä¸´æ¶ç®å½å¾ æ¸ ï¼`outputs/` 41MBã`_shots/`ã`_test_check*`ã`_test_passenger`ã`.tmp_*`ã`_tmp_codexhome`ï¼ï¼`_ç»åäº_2026-09-21/`ï¼52MB å ¨åºå¤ä»½ï¼å±äº¤ä»ä»¶ï¼æªå¨ã ## ææ°ï¼2026-09-23ï¼ - **已忥**ï¼æ¬å° `main` å¿«è¿åå¹¶å ¬å¸ `origin/main` ææ° `8b739ce`ï¼åäº 09-22 å ³æºå¿«ç §ç»ä¸çï¼ï¼åå¹¶å `HEAD = 8b739ce = origin/main`ï¼å·¥ä½åºå¹²åã deploy-templates/README-²¿Êð˵Ã÷.txt
New file @@ -0,0 +1,67 @@ TrafficAudit 交éè´§è¿ç»è®¡å®¡æ ¸ç³»ç» ââ é¨ç½²å ï¼{stamp}ï¼ ======================================================== ãç®å½ç»æã backend/ traffic-audit-server-1.0.0-SNAPSHOT.jar å端ç¨åºï¼å«å ¨é¨ä¾èµï¼**å·²å åµå端**ï¼ docs/ æ¥è¡¨æ¨¡æ¿ä¸è¿è¡æ°æ®ç®å½ï¼å¿ éï¼å¿å ï¼ application.yml å¤é¨é ç½®ï¼æ¹è¿éå³å¯ï¼æ ééæ°æå ï¼ start-backend.cmd / start-backend.sh å¯å¨èæ¬ frontend/ dist/ å端æå»ºäº§ç©ï¼å¤ç¨ï¼æ³ç¨ nginx æç®¡æ¶ç¨ï¼ nginx.conf.example nginx é ç½®ç¤ºä¾ db/ init.sql 建åºå»ºè¡¨ + é¢ç½®è´¦å·ï¼å¿ é¡»æ§è¡ï¼ sql_city_bus.sql åå¸å®¢è¿-å ¬äº¤æåº¦è¡¨ï¼å¿ é¡»æ§è¡ï¼ sql_city_taxi.sql åå¸å®¢è¿-åºç§æåº¦è¡¨/åºç§ææè¡¨ï¼å¿ é¡»æ§è¡ï¼ sql_wyc.sql ç½çº¦è½¦å ¨çæ»é表/订ååå¸å·è¡¨ï¼å¿ é¡»æ§è¡ï¼ README-é¨ç½²è¯´æ.txt ãé¨ç½²æºç¯å¢è¦æ±ã JDK 8ï¼å¿ éï¼ MySQL 5.7 / 8.0ï¼å¿ éï¼ **ä¸éè¦ Redis**ï¼ä»£ç æªä½¿ç¨ï¼æ§ç说æéç Redis æ¯éçé ç½®ï¼å¯å¿½ç¥ï¼ **ä¸éè¦ nginx**ï¼å端已å åµè¿ jarï¼è®¿é® 8090 å³å¯ï¼nginx ä» ä¸ºå¤éæ¹æ¡ï¼ ãé¨ç½²æ¥éª¤ã 1. åå§åæ°æ®åºï¼4 ä¸ªèæ¬é½è¦æ§è¡ï¼é¡ºåºå¦ä¸ï¼ mysql --default-character-set=utf8mb4 -u root -p < db/init.sql mysql --default-character-set=utf8mb4 -u root -p traffic_audit < db/sql_city_bus.sql mysql --default-character-set=utf8mb4 -u root -p traffic_audit < db/sql_city_taxi.sql mysql --default-character-set=utf8mb4 -u root -p traffic_audit < db/sql_wyc.sql é¢ç½®è´¦å·ï¼admin / admin123ï¼é¦æ¬¡ç»å½å请æ¹å¯ç ï¼ 2. æ¹é ç½® backend/application.yml - spring.datasource.url / username / password ï¼æ¹æé¨ç½²æºç MySQLï¼é»è®¤ç«¯å£ 3306ï¼ - jwt.secret ï¼æ¹æä¸ä¸²éæºå符串ï¼**å¿ é¡»æ¯ Base64 åæ³å符ä¸é¿åº¦æ¯ 4 çåæ°**ï¼å¦ 32 ä½åå è¿å¶ï¼å¡«ä¸æä¼ç»å½å¤±è´¥ï¼ - deepseek.api-key ï¼éè¦ AI åææ¶å¡«ï¼ä¸éè¦å¯ç空 注ï¼application.yml ä¸ jar å级å³çæï¼ä¸ç¨éæ°æå ã 3. å¯å¨å端ï¼å¨ backend ç®å½ä¸ï¼ Windowsï¼åå» start-backend.cmd Linuxï¼ sh start-backend.sh æåæ å¿ï¼åºç° "Started TrafficAuditApplication" ä¸ "Tomcat started on port(s): 8090" 4. 访é®ç³»ç» æµè§å¨æå¼ http://<é¨ç½²æºIP>:8090 ï¼å端已å åµï¼é¡µé¢ä¸æ¥å£åæºï¼ è´¦å·ï¼admin / admin123 ãæ°æ®è¿ç§»ï¼å¯éï¼ã æ³ææ¬æºæ°æ®ä¸å¹¶æ¬å°æ°æºå¨ï¼ç¨ mysqldumpï¼æ¬æº MySQL è¥ä¸å¨ 3306ï¼æå®é ç«¯å£æ¹ï¼ï¼ mysqldump -h 127.0.0.1 -P 3306 -u root -p --databases traffic_audit > traffic_audit_full.sql å卿°æºå¨æ§è¡ï¼ mysql -u root -p < traffic_audit_full.sql 注æï¼å ¨é dump ä¼å¸¦ä¸æ¬æºçè´¦å·å¯ç ï¼è¦ç init.sql é¢ç½®ç admin è´¦å·ã ã常è§é®é¢ã 1. å¯å¨æ¥ãæªæ¾å°æ°æ®ç®å½ docsã/ å¯¼åºæ¥ãæªæ¾å°æ¨¡æ¿æä»¶ãï¼ å¿ é¡»å¨ backend ç®å½ä¸å¯å¨ï¼jar ä¸ docs å级ï¼ï¼ä¸è¦åªæ· jarã 2. æ¥è¡¨å¯¼åºæ¥ãæªæ¾å°æ±æ»è¡¨æ¯çãYYYYå¹´Mæéè·¯è¿è¾éæ±æ»è¡¨.xlsxããï¼ docs/çææ±æ»å¤§è¡¨ ä¸ç¼ºå°è¯¥æä»½æ¯çï¼ææºæºå¨ç该æä»¶æ·è¿å»ã 3. 8090 端å£è¢«å ç¨ï¼æ¹ application.yml ç server.port åéå¯ã 4. 页颿弿¯ç©ºç½ï¼ç¡®è®¤è®¿é®çæ¯ http://<IP>:8090 æ ¹è·¯å¾ï¼ä¸æµè§å¨å¼ºå¶å·æ°ï¼Ctrl+F5ï¼ã 5. ä¸ä¼ 大æä»¶å¤±è´¥ï¼å端éå¶ 100MBï¼å·²é ç½®ï¼å¦åé¢è¿æäº nginxï¼é忥æ¾å¤§ client_max_body_sizeã ã忢æå¡ã Windowsï¼å ³é start-backend.cmd çªå£ Linuxï¼ Ctrl+Cï¼æ kill å¯¹åº java è¿ç¨ï¼ps -ef | grep javaï¼ deploy-templates/backend/application.yml
New file @@ -0,0 +1,56 @@ # ============================================================ # TrafficAudit å端å¤é¨é ç½®ï¼ä¸ jar å级å³å¯çæï¼ä¼å 级é«äº jar å ç½®é ç½®ï¼ # é¨ç½²å°æ°æºå¨åï¼è¯·**è³å°**ä¿®æ¹ä¸é¢æ 注 TODO çä¸å¤æ°æ®åºé ç½®ï¼ # ============================================================ server: port: 8080 app: captcha: required: false # ç产ç¯å¢å¦éå¾å½¢éªè¯ç ï¼æ¹ä¸º true spring: datasource: url: jdbc:mysql://127.0.0.1:3306/traffic_audit?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true username: root # TODO æ¹æä½ ç MySQL è´¦å· password: è¯·æ¹æä½ çæ°æ®åºå¯ç # TODO æ¹æä½ ç MySQL å¯ç driver-class-name: com.mysql.cj.jdbc.Driver servlet: multipart: max-file-size: 100MB max-request-size: 100MB jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: Asia/Shanghai mybatis-plus: mapper-locations: classpath*:/mapper/**/*.xml type-aliases-package: com.trafficaudit configuration: map-underscore-to-camel-case: true global-config: db-config: id-type: auto logic-delete-field: deleted logic-delete-value: 1 logic-not-delete-value: 0 jwt: # å¿ é¡»æ¯ãBase64 åæ³å符 + é¿åº¦æ¯ 4 çåæ°ãï¼ä¸é¢è¿ä¸² 32 ä½åå è¿å¶å¯ç´æ¥ç¨ï¼ # ç产ç¯å¢å»ºè®®æ¢æèªå·±çéæºä¸²ï¼å¡«ä¸ææä¸åæ³å符ä¼å¯¼è´ç»å½ 500ï¼ secret: 8f2c1d64a7b34e09c5d81f6a2b0e7c93 expiration: 86400000 docs: template-root: docs city-passenger: template-dir: docs/åå¸å®¢è¿ passenger: template-dir: docs/å ¬è·¯æ 客 freight: template-dir: docs/è´§è¿ energy: template-dir: docs/è½è investment: template-dir: docs/æèµ/æ¨¡æ¿ summary: template-dir: docs/çææ±æ»å¤§è¡¨ # æ±æ»å¤§è¡¨æ¯çä¸çå¼åç §ä»¶æå¨ç®å½ï¼å¿ éï¼ deepseek: api-key: "" # AI åæç¨ï¼ç空å AI åæä¸å¯ç¨ api-url: https://api.deepseek.com/v1/chat/completions model: deepseek-chat deploy-templates/backend/start-backend.cmd
New file @@ -0,0 +1,16 @@ @echo off chcp 65001 >nul cd /d %~dp0 where java >nul 2>nul if errorlevel 1 ( echo [ERROR] æªæ¾å° javaï¼è¯·å å®è£ JDK 8 å¹¶å å ¥ PATH pause exit /b 1 ) echo ============================================ echo TrafficAudit å¯å¨ä¸ï¼http://localhost:8090 echo å端已å åµï¼ç´æ¥è®¿é® 8090 å³å¯ï¼ä¸éè¦ nginxï¼ echo æ¥å¿æ¾ç¤ºå¨æ¬çªå£ï¼å ³éçªå£å³åæ¢æå¡ echo ============================================ java -jar traffic-audit-server-1.0.0-SNAPSHOT.jar pause deploy-templates/backend/start-backend.sh
New file @@ -0,0 +1,4 @@ #!/bin/sh cd "$(dirname "$0")" || exit 1 echo "TrafficAudit å¯å¨ä¸ï¼http://localhost:8090 ï¼Ctrl+C 忢ï¼" java -jar traffic-audit-server-1.0.0-SNAPSHOT.jar 2>&1 | tee app.log deploy-templates/db/init.sql
New file @@ -0,0 +1,619 @@ -- 交éç»è®¡æ¥è¡¨å®¡æ ¸ç³»ç» - æ°æ®åºåå§åèæ¬ v3 -- Demoèå´ï¼äº¤ä¼ç»H203-2表_é路货ç©è¿è¾æåº¦ç产æ åµ CREATE DATABASE IF NOT EXISTS traffic_audit DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE traffic_audit; -- ============================================ -- ä¸ãç¨æ·æé模åï¼å«ä¸åï¼ -- ============================================ -- é¨é¨è¡¨ DROP TABLE IF EXISTS sys_dept; CREATE TABLE sys_dept ( id BIGINT AUTO_INCREMENT PRIMARY KEY, dept_name VARCHAR(100) NOT NULL COMMENT 'é¨é¨åç§°', dept_code VARCHAR(20) NOT NULL COMMENT 'è¡æ¿åºå代ç ', parent_id BIGINT DEFAULT 0 COMMENT 'ä¸çº§é¨é¨', dept_level TINYINT COMMENT '1ç 2å¸ 3å¿', sort_order INT DEFAULT 0 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- è§è²è¡¨ DROP TABLE IF EXISTS sys_role; CREATE TABLE sys_role ( id BIGINT AUTO_INCREMENT PRIMARY KEY, role_name VARCHAR(50) NOT NULL COMMENT 'è§è²å', role_code VARCHAR(50) NOT NULL COMMENT 'SYS_ADMIN/SEC_OFFICER/AUDITOR/PROVINCE/CITY/COUNTY', role_type VARCHAR(20) DEFAULT 'BUSINESS' COMMENT 'SYSTEM(ä¸å)/BUSINESS(ä¸å¡)', role_level TINYINT DEFAULT 1 COMMENT '0ä¸å 1çå 2å¸å± 3å¿åº', is_mutex TINYINT DEFAULT 0 COMMENT '1ä¸åäºæ¥ 0æ®é' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ç¨æ·è¡¨ DROP TABLE IF EXISTS sys_user; CREATE TABLE sys_user ( id BIGINT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(200) NOT NULL COMMENT 'BCrypt', real_name VARCHAR(50), modules VARCHAR(255) DEFAULT NULL COMMENT 'è´è´£æ¥è¡¨æ¨¡åï¼éå·åéï¼', phone VARCHAR(20), dept_id BIGINT, status TINYINT DEFAULT 1 COMMENT '0ç¦ç¨ 1å¯ç¨', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ç¨æ·è§è²å ³è DROP TABLE IF EXISTS sys_user_role; CREATE TABLE sys_user_role ( id BIGINT AUTO_INCREMENT PRIMARY KEY, user_id BIGINT NOT NULL, role_id BIGINT NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ============================================ -- äºãä¸å¡æ°æ®æ¨¡å -- ============================================ -- æ¸ çæ§çéç表ï¼v2 schemaï¼ DROP TABLE IF EXISTS report_enterprise_monthly; -- 交ä¼ç»H203-2表ï¼é路货ç©è¿è¾æåº¦ç产æ åµï¼Demoæ ¸å¿è¡¨ï¼ DROP TABLE IF EXISTS h2032_enterprise_monthly; CREATE TABLE h2032_enterprise_monthly ( id BIGINT AUTO_INCREMENT PRIMARY KEY, report_period VARCHAR(20) NOT NULL COMMENT 'æ¥è¡¨æ 2026-06', region_code VARCHAR(20) COMMENT 'æå±å°åº', enterprise_code VARCHAR(50) COMMENT 'ä¼ä¸ä»£ç ', enterprise_name VARCHAR(200) COMMENT 'ä¼ä¸åç§°', unified_credit_code VARCHAR(50) COMMENT 'ç»ä¸ç¤¾ä¼ä¿¡ç¨ä»£ç ', report_unit VARCHAR(200) COMMENT 'å¡«æ¥åä½', -- è½¦è¾æ°ä¸å¨ä½æ° vehicle_total INT COMMENT 'è½¦è¾æ°_æ»è®¡', tons_total DOUBLE COMMENT 'æ è®°å¨ä½æ°_æ»è®¡', vehicle_tractor INT COMMENT 'è½¦è¾æ°_çµå¼è½¦', vehicle_trailer INT COMMENT 'è½¦è¾æ°_æè½¦', tons_trailer DOUBLE COMMENT 'æ è®°å¨ä½æ°_æè½¦', vehicle_container INT COMMENT 'è½¦è¾æ°_éè£ ç®±è½¦', tons_container DOUBLE COMMENT 'æ è®°å¨ä½æ°_éè£ ç®±è½¦', vehicle_whole INT COMMENT 'è½¦è¾æ°_æ´è½¦', tons_whole DOUBLE COMMENT 'æ è®°å¨ä½æ°_æ´è½¦', -- è´§è¿éä¸å¨è½¬é freight_total DOUBLE COMMENT 'è´§è¿é_æ»è®¡ï¼å¨ï¼', turnover_total DOUBLE COMMENT 'è´§ç©å¨è½¬é_æ»è®¡ï¼å¨å ¬éï¼', -- å货类货è¿é freight_container DOUBLE COMMENT 'è´§è¿é_éè£ ç®±ï¼å¨ï¼', freight_coal DOUBLE COMMENT 'è´§è¿é_ç ¤çåå¶åï¼å¨ï¼', freight_oil_gas DOUBLE COMMENT 'è´§è¿é_ç³æ²¹å¤©ç¶æ°åå¶åï¼å¨ï¼', freight_crude_oil DOUBLE COMMENT 'è´§è¿é_å ¶ä¸åæ²¹ï¼å¨ï¼', freight_metal_ore DOUBLE COMMENT 'è´§è¿é_éå±ç¿ç³ï¼å¨ï¼', freight_iron_ore DOUBLE COMMENT 'è´§è¿é_å ¶ä¸éç¿ç³ï¼å¨ï¼', freight_building DOUBLE COMMENT 'è´§è¿é_ç¿ç©æ§å»ºçææï¼å¨ï¼', freight_grain DOUBLE COMMENT 'è´§è¿é_ç²®é£ï¼å¨ï¼', -- è¿è¥ææ avg_tonnage DOUBLE COMMENT '货车平åå¨ä½', avg_tonnage_trailer DOUBLE COMMENT 'å¹³åå¨ä½_æè½¦', avg_tonnage_whole DOUBLE COMMENT 'å¹³åå¨ä½_æ´è½¦', avg_distance DOUBLE COMMENT '货车平åè¿è·ï¼å ¬éï¼', daily_trips_per_ton DOUBLE COMMENT 'å卿¥åè½½è¿æ¬¡æ°', daily_mileage_per_vehicle DOUBLE COMMENT 'å车å天è¡é©¶éç¨ï¼å ¬éï¼', daily_volume_per_vehicle DOUBLE COMMENT 'å车æ¥åè¿éï¼å¨ï¼', daily_trips_with_tractor DOUBLE COMMENT 'å卿¥åè½½è¿æ¬¡æ°ï¼ç»åçµå¼è½¦ï¼', -- ç¯æ¯å¢é vehicle_mom_growth DOUBLE COMMENT 'è½¦è¾æ°-æ»è®¡ç¯æ¯å¢é', tons_mom_growth DOUBLE COMMENT 'æ è®°å¨ä½-æ»è®¡ç¯æ¯å¢é', freight_mom_growth DOUBLE COMMENT 'è´§è¿é-æ»è®¡ç¯æ¯å¢é', turnover_mom_growth DOUBLE COMMENT 'è´§ç©å¨è½¬é-æ»è®¡ç¯æ¯å¢é', avg_distance_mom_growth DOUBLE COMMENT '货车平åè¿è·-ç¯æ¯å¢é', -- 忝å¢é vehicle_yoy_growth DOUBLE COMMENT 'è½¦è¾æ°-æ»è®¡åæ¯å¢é', tons_yoy_growth DOUBLE COMMENT 'æ è®°å¨ä½-æ»è®¡åæ¯å¢é', tractor_trailer_ratio DOUBLE COMMENT 'çµå¼è½¦æè½¦æ¯', freight_yoy_growth DOUBLE COMMENT 'è´§è¿é-æ»è®¡åæ¯å¢é', turnover_yoy_growth DOUBLE COMMENT 'è´§ç©å¨è½¬é-æ»è®¡åæ¯å¢é', avg_distance_yoy_growth DOUBLE COMMENT '货车平åè¿è·-忝å¢é', -- å¡«æ¥ä¿¡æ¯ unit_leader VARCHAR(50) COMMENT 'åä½è´è´£äºº', stats_leader VARCHAR(50) COMMENT 'ç»è®¡è´è´£äºº', contact_person VARCHAR(50) COMMENT '填表人', contact_phone VARCHAR(20) COMMENT 'èç³»çµè¯', report_date DATE COMMENT 'æ¥åºæ¥æ', verify_explanation TEXT COMMENT 'æ ¸å®æ§åå è§£é', report_notes TEXT COMMENT '䏿¥è¯´æ', modify_record TEXT COMMENT 'ä¿®æ¹è®°å½', import_batch_id BIGINT COMMENT 'å¯¼å ¥æ¹æ¬¡', created_at DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='交ä¼ç»H203-2表_é路货ç©è¿è¾æåº¦ç产æ åµ'; -- è¿æ¿è½¦è¾æ°æ® DROP TABLE IF EXISTS transport_auth_vehicle; CREATE TABLE transport_auth_vehicle ( id BIGINT AUTO_INCREMENT PRIMARY KEY, report_period VARCHAR(20) COMMENT 'æ¥è¡¨æ', enterprise_name VARCHAR(200) COMMENT 'ä¼ä¸åç§°', tractor_count INT DEFAULT 0 COMMENT 'æ»çµå¼è½¦æ°', trailer_count INT DEFAULT 0 COMMENT 'æ»æè½¦æ°', other_count INT DEFAULT 0 COMMENT 'å ¶å®è½¦è¾æ°', trailer_tons DOUBLE COMMENT 'æè½¦æ»å¨ä½(å¨)', other_tons DOUBLE COMMENT 'å ¶å®è½¦è¾æ»å¨ä½(å¨)', import_batch_id BIGINT COMMENT 'å¯¼å ¥æ¹æ¬¡', created_at DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='è¿æ¿è½¦è¾æ°æ®'; -- 车è¾è½¨è¿¹éç¨æ°æ® DROP TABLE IF EXISTS vehicle_track_mileage; CREATE TABLE vehicle_track_mileage ( id BIGINT AUTO_INCREMENT PRIMARY KEY, enterprise_name VARCHAR(200) COMMENT 'ä¼ä¸åç§°', monthly_mileage DOUBLE COMMENT 'æåº¦æ»éç¨(å ¬é)', tracked_vehicles INT DEFAULT 0 COMMENT 'æéç¨çè½¦è¾æ°', report_period VARCHAR(20) COMMENT 'æ¥è¡¨æ', import_batch_id BIGINT COMMENT 'å¯¼å ¥æ¹æ¬¡', created_at DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车è¾è½¨è¿¹éç¨æ°æ®'; -- è§ä¸è§ä¸æåè¿è¾éï¼ç¨æ·æå¨ä¸ä¼ ï¼ DROP TABLE IF EXISTS scale_split_transport; CREATE TABLE scale_split_transport ( id BIGINT AUTO_INCREMENT PRIMARY KEY, report_period VARCHAR(20) NOT NULL COMMENT 'æ¥è¡¨æ 2026-06', period_type VARCHAR(10) NOT NULL COMMENT 'MONTH彿/CUMULATIVE累计', region_name VARCHAR(50) COMMENT 'å¸å·åç§°', -- è§ä¸ above_scale_freight DOUBLE COMMENT 'è§ä¸è´§è¿é', above_scale_turnover DOUBLE COMMENT 'è§ä¸å¨è½¬é', above_scale_rank INT COMMENT 'è§ä¸æå', above_scale_yoy DOUBLE COMMENT 'è§ä¸åæ¯', above_scale_yoy_rank INT COMMENT 'è§ä¸å¢éæå', -- è§ä¸ below_scale_freight DOUBLE COMMENT 'è§ä¸è´§è¿é', below_scale_turnover DOUBLE COMMENT 'è§ä¸å¨è½¬é', below_scale_rank INT COMMENT 'è§ä¸æå', below_scale_yoy DOUBLE COMMENT 'è§ä¸åæ¯', below_scale_yoy_rank INT COMMENT 'è§ä¸å¢éæå', -- å计 total_freight DOUBLE COMMENT 'è¿è¾éå计-è´§è¿é', total_turnover DOUBLE COMMENT 'è¿è¾éå计-å¨è½¬é', total_rank INT COMMENT 'å计æå', total_yoy DOUBLE COMMENT 'åè®¡åæ¯', total_yoy_rank INT COMMENT 'å计å¢éæå', import_batch_id BIGINT COMMENT 'å¯¼å ¥æ¹æ¬¡', created_at DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='è§ä¸è§ä¸æåè¿è¾é'; -- 模æ¿_è´§è¿éå¨è½¬éï¼æ¯æå¯¼å ¥ï¼å·¦åä»å¹´1-Næï¼å³åå»å¹´1-12æï¼N=æ¥è¡¨ææä»½ï¼ DROP TABLE IF EXISTS freight_turnover_import; CREATE TABLE freight_turnover_import ( id BIGINT AUTO_INCREMENT PRIMARY KEY, report_period VARCHAR(20) NOT NULL COMMENT 'æ¥è¡¨æ 2026-06', region_name VARCHAR(50) NOT NULL COMMENT 'å¸å·ææ¹åç', -- ä»å¹´1-12æè´§è¿éï¼å·¦åï¼ä» 1-Nææå¼ï¼ freight_m01 DOUBLE COMMENT '1æè´§è¿é(ä¸å¨)', freight_m02 DOUBLE COMMENT '2æè´§è¿é(ä¸å¨)', freight_m03 DOUBLE COMMENT '3æè´§è¿é(ä¸å¨)', freight_m04 DOUBLE COMMENT '4æè´§è¿é(ä¸å¨)', freight_m05 DOUBLE COMMENT '5æè´§è¿é(ä¸å¨)', freight_m06 DOUBLE COMMENT '6æè´§è¿é(ä¸å¨)', freight_m07 DOUBLE COMMENT '7æè´§è¿é(ä¸å¨)', freight_m08 DOUBLE COMMENT '8æè´§è¿é(ä¸å¨)', freight_m09 DOUBLE COMMENT '9æè´§è¿é(ä¸å¨)', freight_m10 DOUBLE COMMENT '10æè´§è¿é(ä¸å¨)', freight_m11 DOUBLE COMMENT '11æè´§è¿é(ä¸å¨)', freight_m12 DOUBLE COMMENT '12æè´§è¿é(ä¸å¨)', -- å»å¹´1-12æè´§è¿éï¼å³åï¼åºå®12个æï¼ç®åæ¯ç¨ï¼ last_freight_m01 DOUBLE COMMENT 'å»å¹´1æè´§è¿é(ä¸å¨)', last_freight_m02 DOUBLE COMMENT 'å»å¹´2æè´§è¿é(ä¸å¨)', last_freight_m03 DOUBLE COMMENT 'å»å¹´3æè´§è¿é(ä¸å¨)', last_freight_m04 DOUBLE COMMENT 'å»å¹´4æè´§è¿é(ä¸å¨)', last_freight_m05 DOUBLE COMMENT 'å»å¹´5æè´§è¿é(ä¸å¨)', last_freight_m06 DOUBLE COMMENT 'å»å¹´6æè´§è¿é(ä¸å¨)', last_freight_m07 DOUBLE COMMENT 'å»å¹´7æè´§è¿é(ä¸å¨)', last_freight_m08 DOUBLE COMMENT 'å»å¹´8æè´§è¿é(ä¸å¨)', last_freight_m09 DOUBLE COMMENT 'å»å¹´9æè´§è¿é(ä¸å¨)', last_freight_m10 DOUBLE COMMENT 'å»å¹´10æè´§è¿é(ä¸å¨)', last_freight_m11 DOUBLE COMMENT 'å»å¹´11æè´§è¿é(ä¸å¨)', last_freight_m12 DOUBLE COMMENT 'å»å¹´12æè´§è¿é(ä¸å¨)', -- ä»å¹´1-12æå¨è½¬éï¼å·¦åï¼ä» 1-Nææå¼ï¼å¯¼å ¥åæ¡£ï¼æ¥è¡¨ç¨æåè¡¨ï¼ turnover_m01 DOUBLE COMMENT '1æå¨è½¬é(ä¸å¨å ¬é)', turnover_m02 DOUBLE COMMENT '2æå¨è½¬é(ä¸å¨å ¬é)', turnover_m03 DOUBLE COMMENT '3æå¨è½¬é(ä¸å¨å ¬é)', turnover_m04 DOUBLE COMMENT '4æå¨è½¬é(ä¸å¨å ¬é)', turnover_m05 DOUBLE COMMENT '5æå¨è½¬é(ä¸å¨å ¬é)', turnover_m06 DOUBLE COMMENT '6æå¨è½¬é(ä¸å¨å ¬é)', turnover_m07 DOUBLE COMMENT '7æå¨è½¬é(ä¸å¨å ¬é)', turnover_m08 DOUBLE COMMENT '8æå¨è½¬é(ä¸å¨å ¬é)', turnover_m09 DOUBLE COMMENT '9æå¨è½¬é(ä¸å¨å ¬é)', turnover_m10 DOUBLE COMMENT '10æå¨è½¬é(ä¸å¨å ¬é)', turnover_m11 DOUBLE COMMENT '11æå¨è½¬é(ä¸å¨å ¬é)', turnover_m12 DOUBLE COMMENT '12æå¨è½¬é(ä¸å¨å ¬é)', -- å»å¹´1-12æå¨è½¬éï¼å³åï¼åºå®12个æï¼ last_turnover_m01 DOUBLE COMMENT 'å»å¹´1æå¨è½¬é(ä¸å¨å ¬é)', last_turnover_m02 DOUBLE COMMENT 'å»å¹´2æå¨è½¬é(ä¸å¨å ¬é)', last_turnover_m03 DOUBLE COMMENT 'å»å¹´3æå¨è½¬é(ä¸å¨å ¬é)', last_turnover_m04 DOUBLE COMMENT 'å»å¹´4æå¨è½¬é(ä¸å¨å ¬é)', last_turnover_m05 DOUBLE COMMENT 'å»å¹´5æå¨è½¬é(ä¸å¨å ¬é)', last_turnover_m06 DOUBLE COMMENT 'å»å¹´6æå¨è½¬é(ä¸å¨å ¬é)', last_turnover_m07 DOUBLE COMMENT 'å»å¹´7æå¨è½¬é(ä¸å¨å ¬é)', last_turnover_m08 DOUBLE COMMENT 'å»å¹´8æå¨è½¬é(ä¸å¨å ¬é)', last_turnover_m09 DOUBLE COMMENT 'å»å¹´9æå¨è½¬é(ä¸å¨å ¬é)', last_turnover_m10 DOUBLE COMMENT 'å»å¹´10æå¨è½¬é(ä¸å¨å ¬é)', last_turnover_m11 DOUBLE COMMENT 'å»å¹´11æå¨è½¬é(ä¸å¨å ¬é)', last_turnover_m12 DOUBLE COMMENT 'å»å¹´12æå¨è½¬é(ä¸å¨å ¬é)', import_batch_id BIGINT COMMENT 'å¯¼å ¥æ¹æ¬¡', created_at DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='模æ¿_è´§è¿éå¨è½¬éå¯¼å ¥'; -- ============================================ -- ä¸ãå®¡æ ¸è§å模å -- ============================================ DROP TABLE IF EXISTS audit_rule; CREATE TABLE audit_rule ( id BIGINT AUTO_INCREMENT PRIMARY KEY, rule_name VARCHAR(100) NOT NULL COMMENT 'è§ååç§°', rule_code VARCHAR(50) NOT NULL COMMENT 'è§åç¼ç ', description TEXT COMMENT 'è§åæè¿°', check_field VARCHAR(200) COMMENT 'æ£æ¥å段', compare_type VARCHAR(20) COMMENT 'DIFF/RATIO/MOM/YOY/NULL_CHECK/RANGE', threshold VARCHAR(50) COMMENT 'éå¼', alert_level VARCHAR(10) DEFAULT 'YELLOW' COMMENT 'RED/YELLOW', report_type VARCHAR(50) DEFAULT 'H2032' COMMENT 'éç¨æ¥è¡¨è¡¨å·', is_enabled TINYINT DEFAULT 1, llm_raw_input TEXT COMMENT 'LLMç¿»è¯åå§è¾å ¥', sort_order INT DEFAULT 0, created_by BIGINT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- é¢ç½®6æ¡å®¡æ ¸è§åï¼Demoï¼ INSERT INTO audit_rule (rule_name, rule_code, description, check_field, compare_type, threshold, alert_level, report_type, is_enabled, sort_order) VALUES ('è½¦è¾æ°è¿æ¿å¯¹æ¯', 'RULE_001', 'ä¼ä¸ä¸æ¥è½¦è¾æ°ä¸è¿æ¿æ°æ®å¯¹æ¯ï¼å·®è·>5å°éæ ¸å®', 'vehicleTotal', 'DIFF', '5', 'RED', 'H2032', 1, 1), ('å¨ä½è¿æ¿å¯¹æ¯', 'RULE_002', 'ä¼ä¸ä¸æ¥å¨ä½ä¸è¿æ¿æ°æ®å¯¹æ¯ï¼å·®è·>50éæ ¸å®', 'tonsTotal', 'DIFF', '50', 'RED', 'H2032', 1, 2), ('å¨è½¬é轨迹对æ¯', 'RULE_003', '䏿¥å¨è½¬éä¸è½¨è¿¹æµç®å¨è½¬é对æ¯ï¼é«åº30%éæ ¸å®', 'turnoverTotal,trackMileage', 'RATIO', '1.3', 'RED', 'H2032', 1, 3), ('è´§è¿ç±»åç¯æ¯', 'RULE_004', '䏿æ ï¼æ¬ææ°å¢ï¼æéï¼ä¸ææï¼æ¬ææ ï¼æéï¼è´§è¿ç±»åç¯æ¯ï¼', 'freightContainer,freightCoal,freightOilGas,freightCrudeOil,freightMetalOre,freightIronOre,freightBuilding,freightGrain', 'MOM', '0', 'YELLOW', 'H2032', 1, 4), ('éè£ ç®±å¼å¸¸', 'RULE_005', 'æ éè£ ç®±è½¦ä½æéè£ ç®±è´§è¿ééæ ¸å®', 'freightContainer,vehicleContainer', 'NULL_CHECK', '0', 'RED', 'H2032', 1, 5), ('æ´è½¦å¨ä½èå´', 'RULE_006', 'æ´è½¦å¨ä½ä¸å¨4-40å¨ä¹é´', 'tonsWhole', 'OUT_RANGE', '4,40', 'YELLOW', 'H2032', 1, 6); -- ============================================ -- åãå®¡æ ¸ç»ææ¨¡å -- ============================================ DROP TABLE IF EXISTS audit_result; CREATE TABLE audit_result ( id BIGINT AUTO_INCREMENT PRIMARY KEY, rule_id BIGINT NOT NULL COMMENT 'FK -> audit_rule', report_id BIGINT NOT NULL COMMENT 'FK -> h2032_enterprise_monthly', enterprise_code VARCHAR(50) COMMENT 'ä¼ä¸ä»£ç ', report_period VARCHAR(20) COMMENT 'æ¥è¡¨æ', actual_value VARCHAR(200) COMMENT 'å®é å¼', threshold_value VARCHAR(200) COMMENT 'éå¼', deviation VARCHAR(200) COMMENT 'åå·®', status VARCHAR(20) DEFAULT 'PENDING' COMMENT 'PENDING/CONFIRMED/IGNORED', reviewer_id BIGINT COMMENT 'å®¡æ ¸äºº', review_comment TEXT COMMENT 'å®¡æ ¸æè§', reviewed_at DATETIME, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; DROP TABLE IF EXISTS audit_explanation; CREATE TABLE audit_explanation ( id BIGINT AUTO_INCREMENT PRIMARY KEY, audit_result_id BIGINT NOT NULL COMMENT 'FK -> audit_result', explanation_text TEXT COMMENT '䏿¥äººè§£é', llm_suggestion TEXT COMMENT 'LLM建议', llm_confidence DECIMAL(5,2) COMMENT '置信度', llm_status VARCHAR(20) DEFAULT 'PENDING' COMMENT 'PENDING/PROCESSED/FAILED' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ============================================ -- äºãç³»ç»æ¥å¿ä¸å¯¼å ¥æ¹æ¬¡ -- ============================================ DROP TABLE IF EXISTS sys_operation_log; CREATE TABLE sys_operation_log ( id BIGINT AUTO_INCREMENT PRIMARY KEY, user_id BIGINT COMMENT 'æä½äºº', module VARCHAR(50) COMMENT '模å', action VARCHAR(50) COMMENT 'æä½', detail TEXT COMMENT '详æ JSON', ip_address VARCHAR(50) COMMENT 'IPå°å', created_at DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; DROP TABLE IF EXISTS import_batch; CREATE TABLE import_batch ( id BIGINT AUTO_INCREMENT PRIMARY KEY, file_name VARCHAR(200) COMMENT 'æä»¶å', import_type VARCHAR(50) COMMENT 'H2032/TRANSPORT_AUTH/TRACK_MILEAGE/SCALE_SPLIT', report_period VARCHAR(20) COMMENT 'æ¥è¡¨æ', total_rows INT DEFAULT 0, success_rows INT DEFAULT 0, fail_rows INT DEFAULT 0, error_detail TEXT COMMENT 'é误详æ ', created_by BIGINT COMMENT 'å¯¼å ¥äºº', created_at DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ============================================ -- å ãLLMè±ææ å° -- ============================================ DROP TABLE IF EXISTS llm_desensitize_map; CREATE TABLE llm_desensitize_map ( id BIGINT AUTO_INCREMENT PRIMARY KEY, original_value VARCHAR(200) COMMENT 'åå§å¼', masked_value VARCHAR(200) COMMENT 'è±æå¼', mask_type VARCHAR(20) COMMENT 'ENTERPRISE/REGION', call_id VARCHAR(50) COMMENT 'è°ç¨ID' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ============================================ -- ä¸ãé¢ç½®æ°æ® -- ============================================ -- é¢ç½®é¨é¨ï¼æ¹åçï¼ INSERT INTO sys_dept (dept_name, dept_code, dept_level) VALUES ('æ¹åç交éè¿è¾å ', '420000', 1); -- é¢ç½®è§è² INSERT INTO sys_role (role_name, role_code, role_type, role_level, is_mutex) VALUES ('ç³»ç»ç®¡çå', 'SYS_ADMIN', 'SYSTEM', 0, 1), ('å®å ¨ä¿å¯å', 'SEC_OFFICER', 'SYSTEM', 0, 1), ('å®å ¨å®¡è®¡å', 'AUDITOR', 'SYSTEM', 0, 1), ('çå ä¸å¡å', 'PROVINCE', 'BUSINESS', 1, 0); -- é¢ç½®ç®¡çåè´¦å· admin / admin123 INSERT INTO sys_user (username, password, real_name, dept_id) VALUES ('admin', '$2b$10$aqN02Pwvzzuta/66V9MpGerfUH6favtq8av3cc/gueg6lQ9E4CH8u', 'ç³»ç»ç®¡çå', 1); INSERT INTO sys_user_role (user_id, role_id) VALUES (1, 1); -- ============================================ -- å «ãå ¬è·¯æ 客è¿è¾ï¼äº¤ä¼ç»H203-1ï¼æ©å±æ¨¡å -- ============================================ DROP TABLE IF EXISTS h2031_enterprise_monthly; CREATE TABLE h2031_enterprise_monthly ( id BIGINT AUTO_INCREMENT PRIMARY KEY, report_period VARCHAR(20) NOT NULL COMMENT 'æ¥è¡¨æ 2026-06', region_code VARCHAR(20) COMMENT 'æå±å°åº', enterprise_code VARCHAR(50) COMMENT 'ä¼ä¸ä»£ç ', enterprise_name VARCHAR(200) COMMENT 'ä¼ä¸åç§°', vehicle_total INT COMMENT '客è¿è½¦è¾_æ»è®¡', seat_total INT COMMENT 'æ ¸å®è½½å®¢ä½_æ»è®¡', vehicle_schedule INT COMMENT 'è½¦è¾æ°_客è¿ç车ï¼å«å®çº¿æ 游客è¿å®¢è½¦ï¼', seat_schedule INT COMMENT 'æ ¸å®è½½å®¢ä½_客è¿ç车ï¼å«å®çº¿æ 游客è¿å®¢è½¦ï¼', vehicle_charter INT COMMENT 'è½¦è¾æ°_客è¿å 车ï¼å«éå®çº¿æ 游客è¿å®¢è½¦ï¼', seat_charter INT COMMENT 'æ ¸å®è½½å®¢ä½_客è¿å 车ï¼å«éå®çº¿æ 游客è¿å®¢è½¦ï¼', passenger_total DOUBLE COMMENT '客è¿é_æ»è®¡ï¼äººï¼', turnover_total DOUBLE COMMENT 'æ 客å¨è½¬é_æ»è®¡ï¼äººå ¬éï¼', passenger_class1 DOUBLE COMMENT '客è¿é_ä¸ç±»å®¢è¿ç线ï¼å«å®çº¿æ 游ï¼', turnover_class1 DOUBLE COMMENT 'æ 客å¨è½¬é_ä¸ç±»å®¢è¿ç线ï¼å«å®çº¿æ 游ï¼', passenger_class2 DOUBLE COMMENT '客è¿é_äºç±»å®¢è¿ç线ï¼å«å®çº¿æ 游ï¼', turnover_class2 DOUBLE COMMENT 'æ 客å¨è½¬é_äºç±»å®¢è¿ç线ï¼å«å®çº¿æ 游ï¼', passenger_class3 DOUBLE COMMENT '客è¿é_ä¸ç±»å®¢è¿ç线ï¼å«å®çº¿æ 游ï¼', turnover_class3 DOUBLE COMMENT 'æ 客å¨è½¬é_ä¸ç±»å®¢è¿ç线ï¼å«å®çº¿æ 游ï¼', passenger_class4 DOUBLE COMMENT '客è¿é_å类客è¿ç线ï¼å«å®çº¿æ 游ï¼', turnover_class4 DOUBLE COMMENT 'æ 客å¨è½¬é_å类客è¿ç线ï¼å«å®çº¿æ 游ï¼', passenger_charter DOUBLE COMMENT '客è¿é_客è¿å 车ï¼å«éå®çº¿æ 游ï¼', turnover_charter DOUBLE COMMENT 'æ 客å¨è½¬é_客è¿å 车ï¼å«éå®çº¿æ 游ï¼', avg_distance_total DOUBLE COMMENT '客è¿å¹³åè¿è·ï¼å ¬éï¼', avg_distance_class1 DOUBLE COMMENT 'ä¸ç±»å®¢è¿ç线平åè¿è·ï¼å ¬éï¼', avg_distance_class2 DOUBLE COMMENT 'äºç±»å®¢è¿ç线平åè¿è·ï¼å ¬éï¼', avg_distance_class3 DOUBLE COMMENT 'ä¸ç±»å®¢è¿ç线平åè¿è·ï¼å ¬éï¼', avg_distance_class4 DOUBLE COMMENT 'å类客è¿ç线平åè¿è·ï¼å ¬éï¼', avg_distance_charter DOUBLE COMMENT 'æ æ¸¸ãå 车平åè¿è·ï¼å ¬éï¼', verify_explanation TEXT COMMENT 'æ ¸å®æ§åå è§£é', import_batch_id BIGINT COMMENT 'å¯¼å ¥æ¹æ¬¡', created_at DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='交ä¼ç»H203-1表_å ¬è·¯æ 客è¿è¾æåº¦ç产æ åµ'; DROP TABLE IF EXISTS passenger_auth_vehicle; CREATE TABLE passenger_auth_vehicle ( id BIGINT AUTO_INCREMENT PRIMARY KEY, report_period VARCHAR(20) COMMENT 'æ¥è¡¨æ', enterprise_code VARCHAR(50) COMMENT 'ä¼ä¸ä»£ç ', enterprise_name VARCHAR(200) COMMENT 'ä¼ä¸åç§°', vehicle_count INT DEFAULT 0 COMMENT 'è½¦è¾æ°', seat_count INT DEFAULT 0 COMMENT 'è½½å®¢ä½æ°', import_batch_id BIGINT COMMENT 'å¯¼å ¥æ¹æ¬¡', created_at DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='å ¬è·¯æ å®¢è¿æ¿è½¦è¾æ°æ®'; -- H203-1 é¢ç½®å®¡æ ¸è§åï¼4ç»8æ¡ï¼report_type=H2031ï¼ INSERT INTO audit_rule (rule_name, rule_code, description, check_field, compare_type, threshold, alert_level, report_type, is_enabled, sort_order) VALUES ('è½¦è¾æ°è¿æ¿å¯¹æ¯(æ 客)', 'RULE_P001', '客è¿è½¦è¾æ°ä¸è¿æ¿è½¦è¾æ°å¯¹æ¯ï¼å·®è·>3å°éæ ¸å®', 'vehicleTotal', 'DIFF', '3', 'RED', 'H2031', 1, 21), ('è½½å®¢ä½æ°è¿æ¿å¯¹æ¯(æ 客)', 'RULE_P002', 'æ ¸å®è½½å®¢ä½æ°ä¸è¿æ¿è½½å®¢ä½æ°å¯¹æ¯ï¼å·®è·>50éæ ¸å®', 'seatTotal', 'DIFF', '50', 'RED', 'H2031', 1, 22), ('客è¿éç¯æ¯=0æ ¸å®', 'RULE_P003', 'ä¸ç±»/äºç±»/ä¸ç±»/åç±»/å 车客è¿éç¯æ¯ä¸ä¸ªæçäº0éæ ¸å®', 'passengerClass1,passengerClass2,passengerClass3,passengerClass4,passengerCharter', 'MOM_EQ_ZERO', '0', 'YELLOW', 'H2031', 1, 23), ('æ 客å¨è½¬éç¯æ¯=0æ ¸å®', 'RULE_P004', 'ä¸ç±»/äºç±»/ä¸ç±»/åç±»/å 车æ 客å¨è½¬éç¯æ¯ä¸ä¸ªæçäº0éæ ¸å®', 'turnoverClass1,turnoverClass2,turnoverClass3,turnoverClass4,turnoverCharter', 'MOM_EQ_ZERO', '0', 'YELLOW', 'H2031', 1, 24), ('å¹³åè¿è·ç¯æ¯è¶ ±20%æ ¸å®', 'RULE_P005', 'ä¸ç±»/äºç±»/ä¸ç±»/å类平åè¿è·ç¯æ¯ä¸ä¸ªæè¶ è¿Â±20%éæ ¸å®', 'avgDistanceClass1,avgDistanceClass2,avgDistanceClass3,avgDistanceClass4', 'MOM_PCT', '20', 'YELLOW', 'H2031', 1, 25), ('å 车平åè¿è·çäºä¸ææ ¸å®', 'RULE_P006', 'æ æ¸¸å 车平åè¿è·çäºä¸ä¸ªæéæ ¸å®', 'avgDistanceCharter', 'MOM_EQ', '0', 'YELLOW', 'H2031', 1, 26), ('æ ç线æç线客è¿éæ ¸å®', 'RULE_P007', 'æ 客è¿ç车ï¼ççº¿è½¦è¾æ°ä¸º0ï¼ä½æç线客è¿ééæ ¸å®', 'vehicleSchedule,passengerClass1,passengerClass2,passengerClass3,passengerClass4', 'EXISTENCE', '0', 'RED', 'H2031', 1, 27), ('æ å 车æå 车客è¿éæ ¸å®', 'RULE_P008', 'æ 客è¿å 车ï¼å è½¦è½¦è¾æ°ä¸º0ï¼ä½æå 车客è¿ééæ ¸å®', 'vehicleCharter,passengerCharter', 'EXISTENCE', '0', 'RED', 'H2031', 1, 28); -- ============================================ -- ä¹ãé路货è¿è½æºæ¶èï¼äº¤ä¼ç»H204ï¼æ©å±æ¨¡å -- ============================================ -- é路货è¿è½¦è¾è½æºæ¶èæ åµï¼è½¦è¾ç²åº¦å£æ¥ï¼ DROP TABLE IF EXISTS h204_vehicle_quarterly; CREATE TABLE h204_vehicle_quarterly ( id BIGINT AUTO_INCREMENT PRIMARY KEY, report_period VARCHAR(20) NOT NULL COMMENT 'æ¥è¡¨æ 2026-06ï¼å£åº¦æ«æï¼', region_code VARCHAR(20) COMMENT 'æå±å°åº', enterprise_code VARCHAR(50) COMMENT 'ä¼ä¸ä»£ç ', enterprise_name VARCHAR(200) COMMENT 'ä¼ä¸åç§°', plate_no VARCHAR(30) COMMENT '车çå·', vehicle_type_code VARCHAR(10) COMMENT '车è¾ç±»å代ç ', vehicle_type VARCHAR(50) COMMENT '车è¾ç±»åï¼ä¸æï¼', fuel_type_code VARCHAR(10) COMMENT 'çæç±»å代ç ', fuel_type VARCHAR(50) COMMENT 'çæç±»åï¼ä¸æï¼', manufacture_year INT COMMENT 'åºå年份', marked_tonnage DOUBLE COMMENT 'æ è®°å¨ä½ï¼å¨ï¼', total_mileage DOUBLE COMMENT 'æ»è¡ç¨ï¼å ¬éï¼', loaded_mileage DOUBLE COMMENT '载货éç¨ï¼å ¬éï¼', empty_mileage DOUBLE COMMENT '空驶éç¨ï¼å ¬éï¼', freight DOUBLE COMMENT 'è´§è¿éï¼å¨ï¼', turnover DOUBLE COMMENT 'è´§ç©å¨è½¬éï¼å¨å ¬éï¼', trip_count INT COMMENT 'è¶æ¬¡æ°ï¼ä¸ªï¼', fuel_unit VARCHAR(20) COMMENT 'çæ1计éåä½', fuel_consumption DOUBLE COMMENT 'çæ1æ¶èé', avg_distance DOUBLE COMMENT 'å¹³åè¿è·ï¼å ¬éï¼', avg_loaded_tonnage DOUBLE COMMENT 'å¹³å载货å¨ä½ï¼å¨ï¼', avg_trip_mileage DOUBLE COMMENT 'åè¶å¹³åéç¨ï¼å ¬éï¼', fuel_per_100km DOUBLE COMMENT 'ç¾å ¬éåè', turnover_fuel DOUBLE COMMENT 'å¨è½¬éåè', import_batch_id BIGINT COMMENT 'å¯¼å ¥æ¹æ¬¡', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, KEY idx_period_plate (report_period, plate_no), KEY idx_period_ent (report_period, enterprise_code) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='交ä¼ç»H204表_é路货è¿è½¦è¾è½æºæ¶èæ åµï¼è½¦è¾ç²åº¦ï¼'; -- é路货è¿è½è_è¿æ¿è½¦è¾ä¿¡æ¯ï¼è½¦çç²åº¦ï¼ DROP TABLE IF EXISTS h204_auth_vehicle; CREATE TABLE h204_auth_vehicle ( id BIGINT AUTO_INCREMENT PRIMARY KEY, report_period VARCHAR(20) NOT NULL COMMENT 'æ¥è¡¨æ', plate_no VARCHAR(30) NOT NULL COMMENT '车çå·', vehicle_type VARCHAR(50) COMMENT '车è¾ç±»å', fuel_type VARCHAR(50) COMMENT 'çæç±»å', marked_tonnage DOUBLE COMMENT 'æ è®°å¨ä½ï¼å¨ï¼', traction_quality DOUBLE COMMENT 'åçµå¼è´¨éï¼çµå¼è½¦æ è®°å¨ä½ï¼', import_batch_id BIGINT COMMENT 'å¯¼å ¥æ¹æ¬¡', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, KEY idx_period_plate (report_period, plate_no) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='é路货è¿è½è_è¿æ¿è½¦è¾ä¿¡æ¯ï¼è½¦çç²åº¦ï¼'; -- H204 é¢ç½®å®¡æ ¸è§åï¼4æ¡ï¼report_type=H204ï¼ INSERT INTO audit_rule (rule_name, rule_code, description, check_field, compare_type, threshold, alert_level, report_type, is_enabled, sort_order) VALUES ('车è¾ç±»åä¸è¿æ¿å¯¹æ¯', 'RULE_E001', 'è½èæç»è½¦è¾ç±»åä¸è¿æ¿è½¦è¾ä¿¡æ¯ä¸ä¸è´éæ ¸å®', 'vehicleType', 'CROSS_DIFF', '0', 'RED', 'H204', 1, 31), ('çæç±»åä¸è¿æ¿å¯¹æ¯', 'RULE_E002', 'è½èæç»çæç±»åä¸è¿æ¿è½¦è¾ä¿¡æ¯ä¸ä¸è´éæ ¸å®', 'fuelType', 'CROSS_DIFF', '0', 'RED', 'H204', 1, 32), ('æ è®°å¨ä½ä¸è¿æ¿å¯¹æ¯', 'RULE_E003', 'è½èæç»æ è®°å¨ä½ä¸è¿æ¿å¯¹æ¯ï¼å·®è·>0.05å¨éæ ¸å®ï¼çµå¼è½¦å¯¹æ¯åçµå¼è´¨éï¼', 'markedTonnage', 'CROSS_DIFF', '0.05', 'YELLOW', 'H204', 1, 33), ('è¿æ¿è½¦è¾ä¿¡æ¯ç¼ºå¤±', 'RULE_E004', 'è½èæç»è½¦çå·å¨è¿æ¿è½¦è¾ä¿¡æ¯ä¸ä¸åå¨éæ ¸å®', 'plateNo', 'EXISTENCE_AUTH', '0', 'RED', 'H204', 1, 34), ('载货éç¨å æ¯ä¸åè¶éç¨æ¯æ ¸å®', 'RULE_E005', '载货éç¨/æ»è¡ç¨ ä¸ å¹³åè¿è·/åè¶å¹³åéç¨ ç¸å·®Â±10%éæ ¸å®', 'loadedMileage,totalMileage,avgDistance,avgTripMileage', 'LOADED_RATIO_DIFF', '0.1', 'YELLOW', 'H204', 1, 35), ('ç¾å ¬éåèè¶ èå´æ ¸å®', 'RULE_E006', 'ç¾å ¬éåèå离åçæç±»åä¸ä½æ°è¶ è¿50%éæ ¸å®', 'fuelPer100km,fuelTypeCode', 'FUEL_RANGE', '0.5', 'YELLOW', 'H204', 1, 36), ('ç¾å ¬éåèç¯æ¯ååæ ¸å®', 'RULE_E007', 'åä¸è¾è½¦ç¾å ¬éåèç¯æ¯ååè¶ è¿Â±50%éæ ¸å®', 'fuelPer100km,plateNo', 'FUEL_MOM', '0.5', 'YELLOW', 'H204', 1, 37), ('è½èéä¸è´§è¿ææ¥å¯¹æ¯æ ¸å®', 'RULE_E008', 'ä¼ä¸è½èè´§è¿é/å¨è½¬éä¹å大äºè´§è¿ææ¥50%éæ ¸å®', 'freight,turnover,enterpriseName', 'FREIGHT_VS_H2032', '0.5', 'RED', 'H204', 1, 38), ('å¹³åè¿è·ä¸è´§è¿ææ¥å¯¹æ¯æ ¸å®', 'RULE_E009', '车è¾å¹³åè¿è·ä¸è´§è¿ææ¥å¹³åè¿è·ç¸å·®Â±60%éæ ¸å®', 'avgDistance,enterpriseName', 'AVG_DIST_VS_H2032', '0.6', 'YELLOW', 'H204', 1, 39), ('å¹³å载货å¨ä½ä¸æ è®°å¨ä½æ¯å¼æ ¸å®', 'RULE_E010', 'å¹³å载货å¨ä½/æ è®°å¨ä½ å°äº0.5æå¤§äº1éæ ¸å®', 'avgLoadedTonnage,markedTonnage', 'LOADED_TON_RATIO', '0.5,1', 'YELLOW', 'H204', 1, 40); -- ============================================ -- åãæèµæ¨¡åï¼å®¢è¿ç«åº/ç©æµååºï¼æ©å± -- ============================================ -- æèµé¡¹ç®ä¸»æ¡£ï¼æ 项ç®å+ç±»å« å¯ä¸ï¼ DROP TABLE IF EXISTS investment_project; CREATE TABLE investment_project ( id BIGINT AUTO_INCREMENT PRIMARY KEY, project_name VARCHAR(200) NOT NULL COMMENT '项ç®åç§°', category VARCHAR(20) NOT NULL COMMENT 'ç±»å«ï¼å®¢è¿ç«åº/ç©æµååº', city VARCHAR(50) COMMENT 'å¸å·', county VARCHAR(100) COMMENT 'å¿ï¼å¸ãåºï¼', builder_name VARCHAR(200) COMMENT 'æèµå»ºè®¾åä½', construct_nature VARCHAR(50) COMMENT '建设æ§è´¨', start_time VARCHAR(20) COMMENT 'å¼å·¥æ¶é´', end_time VARCHAR(20) COMMENT '建æ/竣工æ¶é´', total_investment DOUBLE COMMENT 'è®¡åæ»æèµï¼ä¸å ï¼', approval_gk VARCHAR(500) COMMENT '工坿¹å¤', approval_cs VARCHAR(500) COMMENT 'å设æ¹å¤', building_area DOUBLE COMMENT '建çé¢ç§¯ï¼å¹³æ¹ç±³ï¼', is_billion TINYINT DEFAULT 0 COMMENT 'äº¿å æèµé¡¹ç®æ è®°', is_county TINYINT DEFAULT 0 COMMENT 'ç»æµå¼ºå¿é¡¹ç®æ è®°', is_five_year TINYINT DEFAULT 0 COMMENT 'åäºäºéç¹ç©æµé¡¹ç®æ è®°', source VARCHAR(50) COMMENT 'æ°æ®æ¥æº', import_batch_id BIGINT COMMENT 'å¯¼å ¥æ¹æ¬¡', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_name_category (project_name, category) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='æèµé¡¹ç®ä¸»æ¡£'; -- æèµé¡¹ç®æåº¦å®ææ åµ DROP TABLE IF EXISTS investment_monthly; CREATE TABLE investment_monthly ( id BIGINT AUTO_INCREMENT PRIMARY KEY, report_period VARCHAR(20) NOT NULL COMMENT 'æ¥è¡¨æ 2026-07', project_id BIGINT NOT NULL COMMENT '项ç®ä¸»æ¡£ID', year_plan DOUBLE COMMENT 'æ¬å¹´è®¡åæèµï¼ä¸å ï¼', year_cum DOUBLE COMMENT 'èªå¹´åç´¯è®¡å®ææèµï¼ä¸å ï¼', month_done DOUBLE COMMENT 'å ¶ä¸ï¼æ¬æå®ææèµï¼ä¸å ï¼', start_cum DOUBLE COMMENT 'èªå¼å§å»ºè®¾ç´¯è®¡å®ææèµï¼ä¸å ï¼', progress_stage VARCHAR(100) COMMENT 'å»ºè®¾é¶æ®µ', progress_desc VARCHAR(2000) COMMENT '形象è¿åº¦', building_area DOUBLE COMMENT '建çé¢ç§¯ï¼å¹³æ¹ç±³ï¼', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, KEY idx_period (report_period), KEY idx_project (project_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='æèµé¡¹ç®æåº¦å®ææ åµ'; -- æèµç³»ç»æ¥è¯¢å¯¼åºï¼å®¡æ ¸æ¯å¯¹åºåï¼ DROP TABLE IF EXISTS investment_system; CREATE TABLE investment_system ( id BIGINT AUTO_INCREMENT PRIMARY KEY, report_period VARCHAR(20) NOT NULL COMMENT 'æ¥è¡¨æ 2026-07', project_name VARCHAR(200) NOT NULL COMMENT '项ç®åç§°ï¼åä½ï¼', total_investment DOUBLE COMMENT 'è®¡åæ»æèµï¼ä¸å ï¼', start_cum DOUBLE COMMENT 'èªå¼å§å»ºè®¾è³æ¬æç´¯è®¡å®ææèµï¼ä¸å ï¼', year_plan DOUBLE COMMENT 'æ¬å¹´è®¡åæèµï¼ä¸å ï¼', year_cum DOUBLE COMMENT 'èªå¹´åç´¯è®¡å®ææèµï¼ä¸å ï¼', month_done DOUBLE COMMENT '彿宿æèµï¼ä¸å ï¼', import_batch_id BIGINT COMMENT 'å¯¼å ¥æ¹æ¬¡', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, KEY idx_period (report_period) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='æèµç³»ç»æ¥è¯¢å¯¼åºï¼å®¡æ ¸æ¯å¯¹åºåï¼'; -- INVEST é¢ç½®å®¡æ ¸è§åï¼4æ¡ï¼report_type=INVESTï¼ INSERT INTO audit_rule (rule_name, rule_code, description, check_field, compare_type, threshold, alert_level, report_type, is_enabled, sort_order) VALUES ('èªå¼å§ç´¯è®¡ä¸æèµç³»ç»å¯¹æ¯', 'RULE_I001', 'èªå¼å§å»ºè®¾ç´¯è®¡å®ææèµä¸æèµç³»ç»å¯¼åºå·®å¼è¶ éå¼éæ ¸å®', 'startCum', 'CROSS_DIFF', '100|5', 'YELLOW', 'INVEST', 1, 41), ('èªå¹´åç´¯è®¡ä¸æèµç³»ç»å¯¹æ¯', 'RULE_I002', 'èªå¹´åç´¯è®¡å®ææèµä¸æèµç³»ç»å¯¼åºå·®å¼è¶ éå¼éæ ¸å®', 'yearCum', 'CROSS_DIFF', '50|5', 'YELLOW', 'INVEST', 1, 42), ('æ¬æå®æä¸æèµç³»ç»å¯¹æ¯', 'RULE_I003', 'æ¬æå®ææèµä¸æèµç³»ç»å¯¼åºå·®å¼è¶ éå¼éæ ¸å®', 'monthDone', 'CROSS_DIFF', '30|30', 'YELLOW', 'INVEST', 1, 43), ('æèµç³»ç»é¡¹ç®ç¼ºå¤±æ ¸å®', 'RULE_I004', 'æ±æ»å¤§è¡¨é¡¹ç®å¨æèµç³»ç»å¯¼åºä¸ä¸åå¨éæ ¸å®', 'projectName', 'EXISTENCE_SYS', '0', 'YELLOW', 'INVEST', 1, 44); -- ============================================ -- ä¹ãå ¬è·¯æ 客个ä½å®¢è¿é/å¨è½¬éï¼ä¼ä¸çº¿ä¸æ±æ¥ï¼ -- ============================================ DROP TABLE IF EXISTS passenger_individual_monthly; CREATE TABLE passenger_individual_monthly ( id BIGINT AUTO_INCREMENT PRIMARY KEY, report_period VARCHAR(20) COMMENT 'æ¥è¡¨æ 2026-07', region_code VARCHAR(20) COMMENT 'æå±å°åºï¼è¡æ¿åºå代ç ï¼', enterprise_code VARCHAR(50) COMMENT 'ä¼ä¸ä»£ç ', enterprise_name VARCHAR(200) COMMENT 'ä¼ä¸åç§°', passenger_count DOUBLE COMMENT 'å ¶ä¸ä¸ªä½å®¢è¿éï¼äººï¼', turnover DOUBLE COMMENT 'å ¶ä¸ä¸ªä½æ 客å¨è½¬éï¼äººå ¬éï¼', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, KEY idx_period (report_period) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='å ¬è·¯æ 客个ä½å®¢è¿é/å¨è½¬é'; -- ============================================ -- åãæ¥è¡¨æå®¡æ ¸éè¿æ è®°ï¼audit_runï¼ -- ============================================ DROP TABLE IF EXISTS audit_run; CREATE TABLE audit_run ( id BIGINT AUTO_INCREMENT PRIMARY KEY, report_type VARCHAR(50) COMMENT 'æ¥è¡¨ç±»å', report_period VARCHAR(20) COMMENT 'æ¥è¡¨æ', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, KEY idx_type_period (report_type, report_period) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='æ¥è¡¨æå®¡æ ¸éè¿æ è®°'; deploy-templates/db/sql_city_bus.sql
New file @@ -0,0 +1,59 @@ -- åå¸å®¢è¿ç¬¬1æ¥ï¼å ¬äº¤ï¼å»ºè¡¨ + å®¡æ ¸è§å -- æ°æ®æºï¼å¯¼å ¥_åå¸å ¬å ±äº¤éæåº¦è¿è¥æ åµï¼2026å¹´7æï¼.xlsï¼ä¼ä¸çº§æç»ï¼å«å ¬å ±æ±½çµè½¦/轨é/轮渡ä¸ç±»ï¼æ¬è¡¨åªåå ¬å ±æ±½çµè½¦åæ®µï¼ CREATE TABLE IF NOT EXISTS city_bus_monthly ( id BIGINT NOT NULL AUTO_INCREMENT, report_period VARCHAR(20) NOT NULL COMMENT 'æ¥è¡¨æ 2026-07', region_code VARCHAR(20) DEFAULT NULL COMMENT 'æå±å°åºä»£ç ', city VARCHAR(50) DEFAULT NULL COMMENT 'å¸å·ï¼ç±å°åºä»£ç æ å°ï¼', enterprise_code VARCHAR(50) DEFAULT NULL COMMENT 'ä¼ä¸ä»£ç ', enterprise_name VARCHAR(200) DEFAULT NULL COMMENT 'ä¼ä¸åç§°', op_vehicles DOUBLE DEFAULT NULL COMMENT 'å ¬å ±æ±½çµè½¦è¿è¥è½¦æ°', stop_total DOUBLE DEFAULT NULL COMMENT 'è¿è¥ç«ç¹æ»ä¸ªæ°', stop_city DOUBLE DEFAULT NULL COMMENT 'å ¶ä¸ï¼åå¸å è¿è¥ç«ç¹', passenger_volume DOUBLE DEFAULT NULL COMMENT 'å ¬å ±æ±½çµè½¦å®¢è¿éï¼ä¸äººæ¬¡ï¼', passenger_city DOUBLE DEFAULT NULL COMMENT 'å ¶ä¸ï¼åå¸å 客è¿éï¼ä¸äººæ¬¡ï¼', turnover DOUBLE DEFAULT NULL COMMENT 'å ¬å ±æ±½çµè½¦æ 客å¨è½¬éï¼ä¸äººå ¬éï¼', turnover_city DOUBLE DEFAULT NULL COMMENT 'å ¶ä¸ï¼åå¸å æ 客å¨è½¬éï¼ä¸äººå ¬éï¼', avg_distance DOUBLE DEFAULT NULL COMMENT 'å ¬å ±æ±½çµè½¦å¹³åè¿è·ï¼å ¬éï¼', avg_distance_city DOUBLE DEFAULT NULL COMMENT 'åå¸å å¹³åè¿è·ï¼å ¬éï¼', passenger_chengxiang DOUBLE DEFAULT NULL COMMENT 'åé å乡客è¿éï¼ä¸äººæ¬¡ï¼', turnover_chengxiang DOUBLE DEFAULT NULL COMMENT 'åé å乡æ 客å¨è½¬éï¼ä¸äººå ¬éï¼', avg_distance_chengxiang DOUBLE DEFAULT NULL COMMENT 'åé å乡平åè¿è·ï¼å ¬éï¼', rate_op_vehicles_mom DOUBLE DEFAULT NULL COMMENT 'è¿è¥è½¦æ°ç¯æ¯å¢é', rate_passenger_mom DOUBLE DEFAULT NULL COMMENT '客è¿éç¯æ¯å¢é', rate_passenger_city_mom DOUBLE DEFAULT NULL COMMENT 'åå¸å 客è¿éç¯æ¯', rate_chengxiang_mom DOUBLE DEFAULT NULL COMMENT 'åé å乡客è¿éç¯æ¯å¢é', rate_chengxiang_turnover_mom DOUBLE DEFAULT NULL COMMENT 'åé å乡æ 客å¨è½¬éç¯æ¯å¢é', rate_turnover_mom DOUBLE DEFAULT NULL COMMENT 'æ 客å¨è½¬éç¯æ¯å¢é', avg_distance_mom_change DOUBLE DEFAULT NULL COMMENT 'å¹³åè¿è·ç¯æ¯å¢åï¼å ¬éï¼', avg_distance_city_mom_change DOUBLE DEFAULT NULL COMMENT 'åå¸å å¹³åè¿è·ç¯æ¯å¢åï¼å ¬éï¼', daily_passenger_per_vehicle DOUBLE DEFAULT NULL COMMENT 'å车æ¥å客è¿é', rate_op_vehicles_yoy DOUBLE DEFAULT NULL COMMENT 'è¿è¥è½¦æ°åæ¯å¢é', rate_passenger_yoy DOUBLE DEFAULT NULL COMMENT '客è¿é忝å¢é', rate_passenger_city_yoy DOUBLE DEFAULT NULL COMMENT 'åå¸å 客è¿é忝å¢é', rate_chengxiang_yoy DOUBLE DEFAULT NULL COMMENT 'åé å乡客è¿é忝å¢é', rate_chengxiang_turnover_yoy DOUBLE DEFAULT NULL COMMENT 'åé å乡æ 客å¨è½¬é忝å¢é', rate_turnover_yoy DOUBLE DEFAULT NULL COMMENT 'æ 客å¨è½¬é忝å¢é', stop_city_ratio DOUBLE DEFAULT NULL COMMENT 'åå¸å è¿è¥ç«ç¹å æ¯', passenger_city_ratio DOUBLE DEFAULT NULL COMMENT 'åå¸å 客è¿éå æ¯', chengxiang_ratio DOUBLE DEFAULT NULL COMMENT 'åé å乡客è¿éå æ¯', contact_person VARCHAR(100) DEFAULT NULL COMMENT '填表人', contact_phone VARCHAR(50) DEFAULT NULL COMMENT 'èç³»çµè¯', report_date VARCHAR(20) DEFAULT NULL COMMENT 'æ¥åºæ¥æ', verify_explanation TEXT COMMENT 'æ ¸å®æ§åå è§£é', report_note TEXT COMMENT '䏿¥è¯´æ', modify_record TEXT COMMENT 'ä¿®æ¹è®°å½', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_period (report_period), KEY idx_city (city), KEY idx_enterprise (enterprise_name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='åå¸å ¬äº¤ä¼ä¸æåº¦æ°æ®ï¼åå¸å ¬å ±äº¤éæåº¦è¿è¥æ åµï¼'; -- åå¸å ¬äº¤ 4 ç»å®¡æ ¸è§åï¼report_type=CITY_BUSï¼ INSERT IGNORE INTO audit_rule (rule_name, rule_code, description, check_field, compare_type, threshold, alert_level, report_type, is_enabled, sort_order) VALUES ('åå¸å ä¸åé å乡客è¿éè¶å¿ä¸è´æ ¸å®', 'RULE_B001', 'åå¸å 客è¿éç¯æ¯/忝ä¸åé å乡客è¿éç¯æ¯/忝è¶å¿ä¸ä¸è´ä¸å¢é>2%éæ ¸å®', 'passengerCityMom,passengerChengxiangMom,passengerCityYoy,passengerChengxiangYoy', 'TREND_CONSISTENCY', '0.02', 'YELLOW', 'CITY_BUS', 1, 51), ('客è¿é䏿 客å¨è½¬éè¶å¿ä¸è´æ ¸å®', 'RULE_B002', '客è¿é忝/ç¯æ¯ä¸æ 客å¨è½¬é忝/ç¯æ¯è¶å¿ä¸ä¸è´éæ ¸å®', 'passengerMom,turnoverMom,passengerYoy,turnoverYoy', 'TREND_CONSISTENCY', '0.02', 'YELLOW', 'CITY_BUS', 1, 52), ('åå¸å /åé å乡客è¿éå æ¯ååæ ¸å®', 'RULE_B003', 'åå¸å 客è¿éå æ¯ååé å乡客è¿éå æ¯ä¸ä¸æç¸æ¯åå>1%éæ ¸å®', 'passengerCityRatio,chengxiangRatio', 'RATIO_CHANGE', '0.01', 'YELLOW', 'CITY_BUS', 1, 53), ('å¹³åè¿è·ååå¹ åº¦æ ¸å®', 'RULE_B004', 'å¹³åè¿è·ä¸ä¸æç¸æ¯ååå¹ åº¦è¶ è¿3å ¬ééæ ¸å®ï¼ç¹å«æ¯åé å乡ï¼', 'avgDistanceMomChange,avgDistanceCityMomChange,avgDistanceChengxiang', 'AVG_DIST_CHANGE', '3', 'YELLOW', 'CITY_BUS', 1, 54); deploy-templates/db/sql_city_taxi.sql
New file @@ -0,0 +1,82 @@ -- åå¸å®¢è¿ç¬¬2æ¥ï¼å·¡æ¸¸åºç§ï¼å»ºè¡¨ + å®¡æ ¸è§å -- æ°æ®æº1ï¼å¯¼å ¥_巡游åºç§æ±½è½¦è¿è¥æå¡æ 嵿æ¥ï¼2026å¹´7æï¼.xlsï¼å¸å·çº§ï¼17è¡ï¼ -- æ°æ®æº2ï¼è¾å ¥_åºç§è½¦ä¿¡æ¯(è¿æ¿è½¦è¾ä¿¡æ¯).xlsï¼è½¦è¾çº§æç» 42636 è¡ï¼ CREATE TABLE IF NOT EXISTS city_taxi_monthly ( id BIGINT NOT NULL AUTO_INCREMENT, report_period VARCHAR(20) NOT NULL COMMENT 'æ¥è¡¨æ 2026-07', region_code VARCHAR(20) DEFAULT NULL COMMENT 'æå±å°åºä»£ç ', city VARCHAR(50) DEFAULT NULL COMMENT 'å¸å·', trip_total DOUBLE DEFAULT NULL COMMENT 'è½½å®¢è½¦æ¬¡æ»æ°', trip_city DOUBLE DEFAULT NULL COMMENT 'è½½å®¢è½¦æ¬¡æ»æ°_åå¸å ', passenger_volume DOUBLE DEFAULT NULL COMMENT '客è¿éï¼ä¸äººæ¬¡ï¼', passenger_city DOUBLE DEFAULT NULL COMMENT '客è¿é_å ¶ä¸åå¸å ', turnover DOUBLE DEFAULT NULL COMMENT 'æ 客å¨è½¬éï¼ä¸äººå ¬éï¼', turnover_city DOUBLE DEFAULT NULL COMMENT 'æ 客å¨è½¬é_åå¸å ', op_vehicles DOUBLE DEFAULT NULL COMMENT 'è¿è¥è½¦è¾æ°', avg_distance DOUBLE DEFAULT NULL COMMENT '巡游åºç§æ±½è½¦å¹³åè¿è·ï¼å ¬éï¼', avg_distance_city DOUBLE DEFAULT NULL COMMENT 'åå¸å å¹³åè¿è·ï¼å ¬éï¼', daily_trips_per_vehicle DOUBLE DEFAULT NULL COMMENT 'å车æ¥å载客车次', daily_passenger_per_vehicle DOUBLE DEFAULT NULL COMMENT 'å车æ¥å客è¿é', passengers_per_trip DOUBLE DEFAULT NULL COMMENT 'å车次载客人æ°', passengers_per_trip_city DOUBLE DEFAULT NULL COMMENT 'å车次载客人æ°_åå¸å ', passengers_per_trip_chengxiang DOUBLE DEFAULT NULL COMMENT 'å车次载客人æ°_åé å乡', rate_op_vehicles_mom DOUBLE DEFAULT NULL COMMENT 'è¿è¥è½¦æ°ç¯æ¯å¢é', rate_op_vehicles_yoy DOUBLE DEFAULT NULL COMMENT 'è¿è¥è½¦æ°åæ¯å¢é', rate_trip_mom DOUBLE DEFAULT NULL COMMENT 'è½½å®¢è½¦æ¬¡æ»æ°ç¯æ¯å¢é', rate_trip_yoy DOUBLE DEFAULT NULL COMMENT 'è½½å®¢è½¦æ¬¡åæ¯å¢é', rate_passenger_mom DOUBLE DEFAULT NULL COMMENT '客è¿éç¯æ¯å¢é', rate_passenger_yoy DOUBLE DEFAULT NULL COMMENT '客è¿é忝å¢é', avg_distance_mom_change DOUBLE DEFAULT NULL COMMENT 'å¹³åè¿è·ç¯æ¯å¢åï¼å ¬éï¼', avg_distance_city_mom_change DOUBLE DEFAULT NULL COMMENT 'å¹³åè¿è·_åå¸å ç¯æ¯å¢åï¼å ¬éï¼', rate_trip_city_mom DOUBLE DEFAULT NULL COMMENT 'è½½å®¢è½¦æ¬¡æ»æ°ç¯æ¯å¢é_åå¸å ', rate_passenger_city_mom DOUBLE DEFAULT NULL COMMENT '客è¿éç¯æ¯å¢é_åå¸å ', rate_trip_chengxiang_mom DOUBLE DEFAULT NULL COMMENT 'è½½å®¢è½¦æ¬¡æ»æ°_åé åä¹¡ç¯æ¯å¢é', rate_passenger_chengxiang_mom DOUBLE DEFAULT NULL COMMENT '客è¿é_åé åä¹¡ç¯æ¯å¢é', avg_distance_chengxiang DOUBLE DEFAULT NULL COMMENT 'å¹³åè¿è·_åé å乡ï¼å ¬éï¼', trip_city_ratio DOUBLE DEFAULT NULL COMMENT 'è½½å®¢è½¦æ¬¡æ»æ°_åå¸å å æ¯', passenger_city_ratio DOUBLE DEFAULT NULL COMMENT '客è¿é_åå¸å å æ¯', contact_person VARCHAR(100) DEFAULT NULL COMMENT '填表人', contact_phone VARCHAR(50) DEFAULT NULL COMMENT 'èç³»çµè¯', report_date VARCHAR(20) DEFAULT NULL COMMENT 'æ¥åºæ¥æ', verify_explanation TEXT COMMENT 'æ ¸å®æ§åå è§£é', report_note TEXT COMMENT '䏿¥è¯´æ', modify_record TEXT COMMENT 'ä¿®æ¹è®°å½', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_period (report_period), KEY idx_city (city) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='巡游åºç§æ±½è½¦è¿è¥æå¡æ 嵿æ¥ï¼å¸å·çº§ï¼'; CREATE TABLE IF NOT EXISTS city_taxi_auth ( id BIGINT NOT NULL AUTO_INCREMENT, report_period VARCHAR(20) NOT NULL COMMENT 'æ¥è¡¨æ 2026-07', city VARCHAR(50) DEFAULT NULL COMMENT 'å¸å·ï¼ç±è¯å·/æ¡£æ¡å·/å°åæåï¼', plate_no VARCHAR(30) DEFAULT NULL COMMENT '车çå·ç ', vehicle_type VARCHAR(50) DEFAULT NULL COMMENT '车è¾ç±»å', biz_type VARCHAR(50) DEFAULT NULL COMMENT 'ç»è¥ç±»å', owner_name VARCHAR(100) DEFAULT NULL COMMENT '车主åç§°', license_no VARCHAR(100) DEFAULT NULL COMMENT 'ç»è¥æå·', archive_no VARCHAR(100) DEFAULT NULL COMMENT 'æ¡£æ¡å·', road_cert_no VARCHAR(100) DEFAULT NULL COMMENT 'éè·¯è¿è¾è¯åå·', fuel_type VARCHAR(50) DEFAULT NULL COMMENT 'çæç±»å', operator_name VARCHAR(200) DEFAULT NULL COMMENT '䏿·åç§°', operator_addr VARCHAR(300) DEFAULT NULL COMMENT '䏿·å°å', op_status VARCHAR(20) DEFAULT NULL COMMENT 'è¥è¿ç¶æ', cert_status VARCHAR(20) DEFAULT NULL COMMENT 'è¯ä»¶ç¶æ', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_period (report_period), KEY idx_city (city), KEY idx_period_city (report_period, city) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='åºç§è½¦è¿æ¿è½¦è¾ä¿¡æ¯ï¼è½¦è¾çº§æç»ï¼'; -- åå¸å®¢è¿ç¬¬2æ¥ï¼å·¡æ¸¸åºç§ 7 ç»å®¡æ ¸è§åï¼report_type=CITY_TAXIï¼ INSERT IGNORE INTO audit_rule (rule_name, rule_code, description, check_field, compare_type, threshold, alert_level, report_type, is_enabled, sort_order) VALUES ('è¿è¥è½¦æ°ä¸è¿æ¿ç³»ç»å¯¹æ¯æ ¸å®', 'RULE_T001', 'ææ¥è¿è¥è½¦è¾æ°ä¸è¿æ¿ç³»ç»è½¦è¾æ°å·®è·>3%éæ ¸å®', 'opVehicles', 'CROSS_DIFF_PCT', '3', 'RED', 'CITY_TAXI', 1, 61), ('åå¸å ä¸åé å乡客è¿éè¶å¿ä¸è´æ ¸å®', 'RULE_T002', 'åå¸å 客è¿éç¯æ¯ä¸åé å乡客è¿éç¯æ¯è¶å¿ä¸ä¸è´ä¸å¢é>2%éæ ¸å®', 'passengerCityMom,passengerChengxiangMom', 'TREND_CONSISTENCY', '0.02', 'YELLOW', 'CITY_TAXI', 1, 62), ('客è¿é䏿 客å¨è½¬éè¶å¿ä¸è´æ ¸å®', 'RULE_T003', '客è¿éç¯æ¯ä¸æ 客å¨è½¬éç¯æ¯ï¼ç±å¹³åè¿è·æ¨å¯¼ï¼è¶å¿ä¸ä¸è´éæ ¸å®', 'passengerMom,turnoverMomDerived', 'TREND_CONSISTENCY', '0.02', 'YELLOW', 'CITY_TAXI', 1, 63), ('åå¸å 客è¿éå æ¯ååæ ¸å®', 'RULE_T004', 'åå¸å 客è¿éå æ¯ä¸ä¸æç¸æ¯åå>1%éæ ¸å®', 'passengerCityRatio', 'RATIO_CHANGE', '0.01', 'YELLOW', 'CITY_TAXI', 1, 64), ('å¹³åè¿è·ååå¹ åº¦æ ¸å®', 'RULE_T005', 'å¹³åè¿è·ä¸ä¸æç¸æ¯ååè¶ è¿3å ¬ééæ ¸å®ï¼ç¹å«æ¯åé å乡ï¼', 'avgDistanceMomChange,avgDistanceCityMomChange,avgDistanceChengxiang', 'AVG_DIST_CHANGE', '3', 'YELLOW', 'CITY_TAXI', 1, 65), ('å车次载客人æ°ç³»æ°ååæ ¸å®', 'RULE_T006', 'å车次载客人æ°=客è¿é/è½½å®¢è½¦æ¬¡æ»æ°ï¼ä¸ä¸æç¸æ¯åå>0.2éæ ¸å®', 'passengersPerTrip', 'PAX_PER_TRIP_CHANGE', '0.2', 'YELLOW', 'CITY_TAXI', 1, 66), ('è½½å®¢è½¦æ¬¡æ»æ°ä¸å®¢è¿éè¶å¿ä¸è´æ ¸å®', 'RULE_T007', 'è½½å®¢è½¦æ¬¡æ»æ°ç¯æ¯/忝ä¸å®¢è¿éç¯æ¯/忝è¶å¿ä¸ä¸è´éæ ¸å®', 'tripMom,passengerMom,tripYoy,passengerYoy', 'TREND_CONSISTENCY', '0.01', 'YELLOW', 'CITY_TAXI', 1, 67); deploy-templates/db/sql_wyc.sql
New file @@ -0,0 +1,45 @@ -- åå¸å®¢è¿ç½çº¦è½¦æåº¦è¾å ¥å»ºè¡¨ï¼2026-09-04ï¼ -- æ°æ®æº1ï¼æ¨¡æ¿_ç½çº¦è½¦æ»æ°.xlsxï¼æåº¦å ¨ç pinï¼å®¢è¿é/å ¶ä¸åå¸å /å¨è½¬é/å ¶ä¸åå¸å å¨è½¬éï¼ -- æ°æ®æº2ï¼æ¨¡æ¿_ç½çº¦è½¦è®¢ååå ¨çæ»é.xlsxï¼æåº¦è¾å ¥é¡µï¼B-E å ¨ç pin + F 订åå计 + G-W 17å¸å·è®¢åï¼ CREATE TABLE IF NOT EXISTS wyc_total_monthly ( id BIGINT NOT NULL AUTO_INCREMENT, report_period VARCHAR(20) NOT NULL COMMENT 'æ¥è¡¨æ yyyy-MM', pin_k DOUBLE DEFAULT NULL COMMENT 'å ¨çç½çº¦è½¦å®¢è¿é(ä¸äººæ¬¡)', pin_ck DOUBLE DEFAULT NULL COMMENT 'å ¶ä¸åå¸å 客è¿é', pin_z DOUBLE DEFAULT NULL COMMENT 'å ¨ç客è¿å¨è½¬é(ä¸äººå ¬é)', pin_cz DOUBLE DEFAULT NULL COMMENT 'å ¶ä¸åå¸å å¨è½¬é', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_wyc_total_period (report_period) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ç½çº¦è½¦æåº¦å ¨ç pin è¾å ¥'; CREATE TABLE IF NOT EXISTS wyc_order_monthly ( id BIGINT NOT NULL AUTO_INCREMENT, report_period VARCHAR(20) NOT NULL COMMENT 'æ¥è¡¨æ yyyy-MM', pin_k DOUBLE DEFAULT NULL, pin_ck DOUBLE DEFAULT NULL, pin_z DOUBLE DEFAULT NULL, pin_cz DOUBLE DEFAULT NULL, order_sum DOUBLE DEFAULT NULL COMMENT '订åå计ï¼åï¼', order_wuhan DOUBLE DEFAULT NULL, order_huangshi DOUBLE DEFAULT NULL, order_shiyan DOUBLE DEFAULT NULL, order_yichang DOUBLE DEFAULT NULL, order_xiangyang DOUBLE DEFAULT NULL, order_ezhou DOUBLE DEFAULT NULL, order_jingmen DOUBLE DEFAULT NULL, order_xiaogan DOUBLE DEFAULT NULL, order_jingzhou DOUBLE DEFAULT NULL, order_huanggang DOUBLE DEFAULT NULL, order_xianning DOUBLE DEFAULT NULL, order_suizhou DOUBLE DEFAULT NULL, order_enshi DOUBLE DEFAULT NULL, order_xiantao DOUBLE DEFAULT NULL, order_qianjiang DOUBLE DEFAULT NULL, order_tianmen DOUBLE DEFAULT NULL, order_shennong DOUBLE DEFAULT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_wyc_order_period (report_period) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ç½çº¦è½¦è®¢ååå ¨çæ»éæåº¦è¾å ¥'; deploy-templates/frontend/nginx.conf.example
New file @@ -0,0 +1,15 @@ # å端 nginx é 置示ä¾ï¼åªæå¨ä¸æ³ç¨ãjar å åµåç«¯ãæ¶æéè¦ï¼ server { listen 8080; server_name localhost; root /opt/traffic-audit/frontend/dist; # æ¹æå®é è·¯å¾ index index.html; location /api/ { proxy_pass http://127.0.0.1:8090; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_read_timeout 300s; } location / { try_files $uri $uri/ /index.html; } } docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_2026-07ĸ°æ²¹ÆëÓëµ¼³ö¼þ´ò²»¿ªÐÞ¸´_2026-09-16.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_2026-09-02_µ¼ÈëÓ뱨±íÉú³É»Ø¹é.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_H2031Ä£°åÐÂÔöÁÐÊÊÅä_2026-09-16.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_M1-³ÇÊпÍÔË-¹«½»³ö×â¹ìµÀÂÖ¶É_2026-09-08.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_M1-³ÇÊпÍÔË-³ÇÊлã×ÜÕûÁ´»Ø¹é_2026-09-08.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_M1-°àÏß°ü³µMidCalc_2026-09-08.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_M1-ÍøÔ¼³µ²ð·ÖWycSplitCalc_2026-09-08.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_M1-»õÔËÈ¡ÊýÁ´Â·Óë7Ô»عé_2026-09-08.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_RULE001·ÖÏîÔËÕþÓëãÐÖµÁª¶¯¼°ÁÐ¿í»Ø¹é_2026-09-09.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Ò»¼üÆôÍ£½Å±¾Óë×ÀÃæÈë¿Ú_2026-09-19.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Öпھ¶ËÄά¿Ú¾¶Í³Ò»_2026-09-18.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Öпھ¶ÅÅÃûͬ±È»ùÊý·½°¸A_2026-09-21.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Öпھ¶ÅÅÃûÖÜתÁ¿¿Ú¾¶Í³Ò»_2026-09-19.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Öпھ¶ÅÅÃû×ó¿éɾ³ýÓë7Ô»عéÊÕ¿Ú¼°8ÔÂÀ©ÁÐ_2026-09-08.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_È«¾«¶È´æ´¢ÓëÁ½Î»Ð¡ÊýÏÔʾ_2026-09-20.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_¹«Â·Âÿͱ¨±í²¢Èë¸öÌå¿ÍÔË_2026-09-03.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_ͬÃûÆóÒµ1-8ÔÂÀۼƻõÔËÁ¿ÓëÖÜתÁ¿SQL_2026-09-19.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_³ÇÊпÍÔËÐÂÔöÍøÔ¼³µ²ð·Ö±íÓë»ã×ܹ¤×÷²¾¼°Á½Î»Ð¡ÊýÏÔʾ_2026-09-03.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_³ÇÊпÍÔËÔ¶ÈÓëÀÛ¼ÆÍ¬±È_2026-09-20.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_³ÇÊпÍÔËÍøÔ¼³µµ¼ÈëÏÂÀ_2026-09-04.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_ÉóºËƽ¾ù¶Öλ¿Ú¾¶Óë²ð·ÖÄ¿±êÔµ¼Èë¼°È«ÆÁ·Ò³_2026-09-04.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_ÉóºË½çÃæ½»»¥ÓëÎÊÌâ»°Êõµ¼³ö_2026-09-09.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_ÉóºË½á¹ûÄ£°åչʾÓëµ¼³ö¼°±¨±íÒ³Õû¸Ä_2026-09-09.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_ÉóºË½á¹ûҳѡÔÂתȦÐÞ¸´_2026-09-09.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_ÃÜÔ¿Íⲿ»¯Óë´ò°üÈ¥ÃÜ_2026-09-26.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_µ¼ÈëУÑéÔöÇ¿_2026-09-02.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_µ¼ÈëÇå¿Õ°´ÀàÐÍÓë°´Å¥·ÀÎó´¥_2026-09-10.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_µ¼³ö»º´æ¸ÄÓÃÊý¾ÝÖ¸ÎÆ_2026-09-22.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_¾ÖÓòÍøIP·ÃÎʵǼCORSÐÞ¸´_2026-09-16.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_ÊÐÖÝͳһÌģ°åÓëÏØÊÐÇø½âÎö_2026-09-20.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Ͷ×ÊÉóºËI004»ù׼ȱʧ±£»¤_2026-09-02.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Ͷ×ÊÊÐÖÝÔ±¨¶àsheetʶ±ðÓëÐòºÅ¿Õ¸ñ_2026-09-02.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Ͷ×ÊÃ÷ϸ±íÓëµ¼ÈëÈ¡Áж¨Î»ÐÞ¸´_2026-09-19.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Ͷ×ÊÃ÷ϸ±íÈ¡ÊýÐÞ¸´_2026-09-22.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Ͷ×ÊÃ÷ϸ±í¾ÍÐ÷ÓëÔ¤ÀÀÀàÐͲ¹Æë_2026-09-20.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Ͷ×ÊÔ±¨Æ¥ÅäÓëУÑéÒýÇæ_2026-09-17.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Ͷ×ÊÔ±¨È¡ÁдíλÐÞ¸´Ó뵯´°Ìáʾ_2026-09-17.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Ͷ×ÊÔ±¨¸ñʽ̽²âÓë×Ö¶ÎÓ³Éä±í_2026-09-17.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Ͷ×ÊÔ±¨Ô´Îļþ½âÎöÒýÇæ_2026-09-17.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Ͷ×ÊϵͳÐÂÄ£°å°´±íÍ·½âÎöÓëÉóºË»ù׼ȱʧ±£»¤_2026-09-21.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Ͷ×ÊÔ¤°²ÅÅ»ã×ܲ¹¼ÆÓëµ¼È뵯´°_2026-09-20.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_³ÖÐøÔÚ¹æÆóÒµ545¼Ò·ÖÊÐÖÝÀÛ¼ÆÔ˾àͬ±È_2026-09-19.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_½Ó¿Ú¼øÈ¨ÓëAIÊý¾ÝÍÑÃô¼Ó¹Ì_2026-09-14.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Êý¾Ýµ¼ÈëÇå¿Õ°´Å¥°´±¨±íÆÚÇå¿â_2026-09-10.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Êý¾Ýµ¼ÈëÒ³¿Õ°×ÐÞ¸´_2026-09-11.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Êý¾Ý²é¿´¶³½áÁÐÓëÊý¾ÝÀàÐÍÏÂÀ¿ò_2026-09-22.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Êý¾Ý²é¿´¿Ú¾¶É¸Ñ¡Óë±íÍ·µ¥Î»_2026-09-22.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Êý¾Ý²é¿´Õ¹Ê¾ÓÅ»¯ÓëÍøÔ¼³µ°´ÊÐÖÝÊúÅÅ_2026-09-22.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Êý¾Ý²é¿´Í¶×ÊÄܺÄÓ뱨±íÆÚÅÅÐò_2026-09-17.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Êý¾Ý²é¿´°´ÊÐÖÝ»ã×ÜÓëµ¼³ö_2026-09-22.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Êý¾Ý²é¿´²¹ÆëÍøÔ¼³µÓë¸öÌå¿ÍÔËÀàÐÍ_2026-09-22.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Õû¸Ä8Ïî»Ø¹éÑéÖ¤_2026-09-08.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»ã×Ü´ó±í1-6ÔÂÉú³ÉÓë1-7ÔÂÀ©ÁÐÑéÖ¤_2026-09-04.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»ã×Ü´ó±í8ÔÂÊý¾Ý»ØÌîÓë°æÊ½¶ÔÆë_2026-09-11.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»ã×Ü´ó±íËÄÒ³Êý¾ÝÇý¶¯_2026-09-13.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»ã×Ü´ó±íµ¼³ö½á¹ûÂäÅÌ»º´æ¸´ÓÃ_2026-09-22.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»ã×Ü´ó±íÒì²½µ¼³öÓ뻺´æ_2026-09-20.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»ã×Ü´ó±íÊý¾ÝÇý¶¯»ØÌîM2̨Õ˲ã_2026-09-09.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»ã×Ü´ó±íÈÕÆÚ¸ñʽÓë¹æÔòÁª¶¯¼°Êý¾Ý²é¿´¹ö¶¯¼ÓÔØ_2026-09-08.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»ã×Ü´ó±í°æÊ½Í³Ò»_2026-09-08.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»ã×Ü´ó±í»õÔ˹æÉϹæÏ²¹ÊýÓë³ÉÆ·Ò³µ±Ô¿éÐÞÕý_2026-09-07.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»ã×Ü´ó±íÈí¼þÊä³öÓëÊÖ¹¤¶¨¸å²îÒì_2026-09-21.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»ã×Ü´ó±í½ø¶Èµ¯´°ÓÅ»¯_2026-09-22.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»ã×Ü´ó±íÔ¤ÀÀɾ³ýÖпھ¶ºóÃ÷ϸ±í_2026-09-16.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»ã×ܹ¤×÷²¾Ô¶ȿéÀ©Áл¹ÔÊÔµã_2026-09-04.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»ã×ܹ¤×÷²¾¹Ç¼ÜÉú³É_2026-09-03.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»ã×Ü±í¹«Ê½À©Ò³ÓëÖØËã_2026-09-18.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»ã×ܱíÅÅÃûҳˢÐÂÓëͬ±È°Ù·ÖÊý_2026-09-11.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»ã×ܱíÕûÊý²»ÏÔʾ0.00ÓëÁпí×ÔÊÊÓ¦_2026-09-04.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_DZ½Í¶×ÊÎïÁ÷Ô±¨Öص¼_2026-09-23.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Éú³ÉÄ£°åаæÊ½_2026-09-02.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_µÇ¼ÑéÖ¤ÂëÈÝ´íÓ뱨±íÔ¤ÀÀÕû¸Ä_2026-09-16.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_ÍøÔ¼³µ¶©µ¥±¨¸æWordML¼æÈݵ¼Èë_2026-09-18.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_ÍøÔ¼³µ¶©µ¥±¨¸æµ¼Èë_2026-09-11.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_¹æÉϹæÏ²ð·ÖÔ·Ýҳǩʶ±ð_2026-09-04.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»õÔËÔ±¨³ÖÐøÔÚ¹æÆóÒµ·ÖÊÐÖÝÀÛ¼ÆÔ˾à_2026-09-18.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»õÔËÁ¿ÖÜתÁ¿2023ÄêÊý¾Ý²¹Â¼_2026-09-16.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»õÔËÁ¿ÖÜתÁ¿¶àÄê¶Èµ¼Èë_2026-09-16.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_»õÔËҳǩÀÛ¼ÆÁÐÐÞ¸´ÓëÔàÆÚÇåÀí_2026-09-16.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_ÔËÕþ³µÁ¾Óë¹ì¼£Àï³Ìµ¼Èë»Ø¹é_2026-09-02.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_²¿Êð°ü´ò°üÓë¶ÀÁ¢Æô¶¯_2026-09-13.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Ô¤ÀÀÖ¸±êÃû³ÆÏÔʾÓë»õÔËÁ¿ºÏ¼Æµ¥Î»ÐÞÕý_2026-09-04.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/µ¼ÈëÓëÉú³ÉÄ£¿éÌå¼ìÎÊÌâÇåµ¥_2026-09-02.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/Êý¾Ý±È¶Ô±¨¸æ_Ͷ×ÊÃ÷ϸ±íÈí¼þÉú³ÉÓëÈ˹¤°æ_2026-09-22.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/»ã×Ü´ó±íÓ붨¸å±È¶Ô_2026-09-16.md
File was deleted docs/¹¦ÄܲâÊÔ±¨¸æ/»ã×Ü´ó±íÒì²½µ¼³ö½ø¶Èµ¯´°_2026-09-20.pngBinary files differ
docs/¹¦ÄܲâÊÔ±¨¸æ/»õÔËÀÛ¼ÆÁк˶ÔÓëµ¼ÈëÊý¾ÝÌå¼ì_2026-09-16.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-02.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-03.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-04.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-05.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-07.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-08.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-09.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-10.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-11.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-13.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-14.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-15.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-16.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-17.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-18.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-19.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-20.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-21.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-22.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-23.md
File was deleted docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-26.md
File was deleted docs/´ò°ü²¿Êð˵Ã÷.md
@@ -255,6 +255,30 @@ python -c "import zipfile;print(zipfile.ZipFile('traffic-audit-server/target/traffic-audit-server-1.0.0-SNAPSHOT.jar').read('BOOT-INF/classes/application.yml').decode('utf-8'))" | Select-String "password:|api-key:" ``` ### ä¸é®æå ï¼æ¨èï¼2026-09-27 èµ·ï¼ ```powershell powershell -NoProfile -ExecutionPolicy Bypass -File pack-deploy.ps1 # å¯éåæ°ï¼ -OutRoot "E:\è¯éª" -SkipFrontend ``` èæ¬ååä»¶äºï¼ 1. `mvn clean package -DskipTests` æå»ºå端 jarï¼ 2. **è§£å jar èªæ£**ï¼æ£æ¥ `BOOT-INF/classes/application.yml` æ¯å¦å ¨ä¸ºå ä½ç¬¦ââ䏿¦åç° `sk-` æææå£ä»¤**ç´æ¥ä¸æ¢æå **ï¼ 3. `npm run build` é建å端 `dist`ï¼ 4. æ `deploy-templates/` ç»è£ 宿´é¨ç½²å ï¼backend / frontend / db / README-é¨ç½²è¯´æ.txtï¼ï¼è¾åºå° `<OutRoot>\traffic-audit-deploy-<yyyyMMdd>`ã æ¨¡æ¿ä»¶ç»ä¸æ¾å¨ **`deploy-templates/`**ï¼å·²å ¥åºï¼ï¼å¤é¨ `application.yml`ã`start-backend.cmd/.sh`ã`nginx.conf.example`ã`db\{init.sql,sql_city_bus,sql_city_taxi,sql_wyc}.sql`ã`README-é¨ç½²è¯´æ.txt`ãæ¹æ¨¡æ¿å³æ¹æå 产ç©ã ### è½®æ¢å¯é¥ååæ¥æ¬æº ```powershell powershell -NoProfile -ExecutionPolicy Bypass -File set-secrets.ps1 ``` 交äºå¼è¾å ¥ï¼åè½¦è·³è¿æä¸é¡¹ï¼ï¼èªå¨ `setx` å°ç¨æ·ç¯å¢åéå¹¶æç¤ºéå¯å端ï¼å¼ä¸ä¼åå ¥ä»»ä½æä»¶ã ### é¨ç½²æºä¸å /æ¢ DeepSeek key 1. æå ä¸ä¼ åï¼ç¼è¾ **jar å级**ç `backend/application.yml`ï¼`deepseek.api-key: "ä½ çæ°key"`ï¼ç空åé¡µé¢ AI åæä¸å¯ç¨ï¼å ¶ä½åè½æ£å¸¸ï¼ï¼ docs/Ä£¿é¹¦ÄÜÑé֤״̬¾ØÕó_2026-09-02.md
docs/Éú³É»ã×Ü´ó±í/2026Äê8ÔµÀ·ÔËÊäÁ¿»ã×ܱí.xlsxBinary files differ
docs/ÎÊÌâ»ã×Ü/Êý¾Ý²é¿´»ã×ÜÓë»ã×Ü´ó±í¿Ú¾¶¶ÔÓ¦¹ØÏµ_2026-09-23.md
@@ -2,7 +2,7 @@ > æ ¸å¯¹æ¥æï¼2026-09-23ãæé®ï¼æ°æ®æ¥çéçæ±æ»åè½ä¸å¤§è¡¨çæçæ°æ®æ¯å¦ä¸è´ > æ ¸å¯¹æ¹å¼ï¼å¤§è¡¨åèªç¨åºè¾åº `D:\æ¡é¢\çææ°æ®\çæ_éè·¯è¿è¾éæ±æ»è¡¨_2026-08 (3).xlsx`ï¼å«ç¼åç´åºï¼2026-09-22 14:10 çæï¼ï¼æ°æ®æ¥çåèª `/api/data/summary?from=2026-01&to=2026-08` > èæ¬ï¼`_tmp_cmp_dabiao2.py`ï¼å¤§è¡¨éæåå æ» vs æ±æ»æ¥å£é弿¯å¯¹ï¼ > æ ¸å¯¹æ¹å¼ï¼å¤§è¡¨éæåå æ» vs æ±æ»æ¥å£é弿¯å¯¹ï¼å½æ¶ç¨ç临æ¶èæ¬ä¸ä¸é´æä»¶å·²éåå²ä¸´æ¶ä»¶æ¸ çï¼éè¦å¤ç°ææ¬æç¬¬åèæ¹æ³éè·ï¼ ## ä¸ãç»è®º docs/ÎÊÌâ»ã×Ü/»ã×Ü´ó±íÎÊÌâ½»½Ó_2026-09-21.md
@@ -241,6 +241,8 @@ | `_chk_all_pref.txt` | 17 å¸å·ä¸¤é¡µåæ¯å·®å¼æ¸ å | | `_chk_code*.txt`ã`_chk_wyccalc.txt`ã`_chk_wycdb.txt`ã`_chk_filler.txt`ã`_chk_freight.txt` | ç¸å ³ä»£ç 段æå½ | > 说æï¼2026-09-27ï¼ï¼ä¸è¡¨ä¸ç `_chk_*` è¯æ®ä»¶ä¸ºå½æ¶çä¸´æ¶ææ¬ dumpï¼å·²éåå²ä¸´æ¶æä»¶ä¸å¹¶æ¸ çï¼æ¬å°ä¸åä¿çï¼ï¼å¦éå¤ç°ï¼ææ¬ç« æ¹æ³éè·ï¼æ°æ®æºä¸æ¥éª¤è§ä¸ï¼ã ## 11. å¾ ç¨æ·/ä¸å¡ç¡®è®¤æ¸ åï¼æ¥æäººå å«èªå·±æï¼ 1. ~~P0-1 èµ°æ¹æ¡ A è¿æ¯ Bï¼ï¼å»ºè®® Aï¼~~ ç¨æ·å·²éæ©æ¹æ¡ Aï¼2026-09-21 已宿½å¹¶åå½éè¿ã pack-deploy.ps1
New file @@ -0,0 +1,98 @@ <# ä¸é®æå é¨ç½²å ï¼å«"å»å¯èªæ£"ï¼ââ 2026-09-27 æ°å¢ ç¨æ³ï¼ powershell -NoProfile -ExecutionPolicy Bypass -File pack-deploy.ps1 powershell -NoProfile -ExecutionPolicy Bypass -File pack-deploy.ps1 -OutRoot "E:\è¯éª" -SkipFrontend ååä»¶äºï¼ 1) mvn clean package æå»ºå端 jar 2) è§£å jar æ£æ¥å ç½® application.ymlï¼å¿ é¡»å ¨æ¯å ä½ç¬¦ï¼ç¦æ¢ sk- å¯é¥ / ææå£ä»¤ï¼ï¼ä¸åæ ¼ç´æ¥ä¸æ¢ 3) npm run build æå»ºå端 distï¼å¯ -SkipFrontendï¼ 4) ç»è£ deploy ç®å½ç»æï¼backend / frontend / db / README-é¨ç½²è¯´æ.txtï¼ï¼è¾åºå° <OutRoot>\traffic-audit-deploy-<yyyyMMdd> #> param( [string]$OutRoot = 'E:\è¯éª', [switch]$SkipFrontend ) $ErrorActionPreference = 'Stop' $root = Split-Path -Parent $MyInvocation.MyCommand.Path $tplDir = Join-Path $root 'deploy-templates' # æå 模æ¿ä»¶ï¼å·²å ¥åºï¼2026-09-27 èµ·ï¼ $jarRel = 'traffic-audit-server\target\traffic-audit-server-1.0.0-SNAPSHOT.jar' $jar = Join-Path $root $jarRel Write-Host '[1/5] æå»ºå端ï¼mvn clean package -DskipTestsï¼...' Push-Location $root cmd /c "mvn.cmd -q clean package -DskipTests -f traffic-audit-server\pom.xml > pack-build.log 2>&1" $rc = $LASTEXITCODE Pop-Location if ($rc -ne 0) { throw 'å端æå»ºå¤±è´¥ï¼è¯¦è§ pack-build.log' } if (-not (Test-Path $jar)) { throw "æªæ¾å°æå»ºäº§ç©ï¼$jar" } Write-Host (" 产ç©ï¼{0:N1} MB" -f ((Get-Item $jar).Length / 1MB)) Write-Host '[2/5] å»å¯èªæ£ï¼è§£å jar æ£æ¥ BOOT-INF/classes/application.yml ...' Add-Type -AssemblyName System.IO.Compression.FileSystem $zip = [System.IO.Compression.ZipFile]::OpenRead($jar) try { $entry = $zip.Entries | Where-Object { $_.FullName -eq 'BOOT-INF/classes/application.yml' } if (-not $entry) { throw 'jar å ç¼ºå° BOOT-INF/classes/application.yml' } $sr = New-Object System.IO.StreamReader($entry.Open()) $text = $sr.ReadToEnd() $sr.Close() } finally { $zip.Dispose() } $bad = @() if ($text -match 'sk-[A-Za-z0-9]{16,}') { $bad += 'çä¼¼ææ API keyï¼sk-â¦ï¼' } foreach ($line in ($text -split "`n")) { if ($line -match '^\s*(password|api-key|secret)\s*:\s*(.+)$') { $v = $matches[2].Trim().Trim('"') if ($v -and -not $v.StartsWith('${')) { $bad += ("$($matches[1]) 䏿¯å ä½ç¬¦") } } } if ($bad.Count -gt 0) { throw ('å»å¯èªæ£æªéè¿ï¼' + ($bad -join 'ï¼') + 'ãè¯·æ£æ¥ traffic-audit-server\src\main\resources\application.yml') } Write-Host ' éè¿ï¼jar å ç½®é ç½®å ¨é¨ä¸ºå ä½ç¬¦ï¼æ ææå¯é¥/å£ä»¤ã' Write-Host '[3/5] æå»ºå端ï¼npm run buildï¼å¯ -SkipFrontend è·³è¿ï¼...' if (-not $SkipFrontend) { Push-Location (Join-Path $root 'traffic-audit-web') cmd /c "npm.cmd run build > ..\pack-front.log 2>&1" $rc2 = $LASTEXITCODE Pop-Location if ($rc2 -ne 0) { throw 'å端æå»ºå¤±è´¥ï¼è¯¦è§ pack-front.log' } Write-Host ' å端 dist å·²é建' } Write-Host '[4/5] ç»è£ é¨ç½²ç®å½...' $stamp = Get-Date -Format 'yyyyMMdd' $dest = Join-Path $OutRoot ("traffic-audit-deploy-" + $stamp) $n = 2 while (Test-Path $dest) { $dest = Join-Path $OutRoot ("traffic-audit-deploy-" + $stamp + "-" + $n); $n++ } New-Item -ItemType Directory -Force -Path (Join-Path $dest 'backend'), (Join-Path $dest 'frontend'), (Join-Path $dest 'db') | Out-Null Copy-Item $jar (Join-Path $dest 'backend') -Force Copy-Item (Join-Path $tplDir 'backend\application.yml') (Join-Path $dest 'backend') -Force Copy-Item (Join-Path $tplDir 'backend\start-backend.cmd') (Join-Path $dest 'backend') -Force Copy-Item (Join-Path $tplDir 'backend\start-backend.sh') (Join-Path $dest 'backend') -Force Copy-Item (Join-Path $root 'traffic-audit-web\dist') (Join-Path $dest 'frontend') -Recurse -Force Copy-Item (Join-Path $tplDir 'frontend\nginx.conf.example') (Join-Path $dest 'frontend') -Force Copy-Item (Join-Path $tplDir 'db\*.sql') (Join-Path $dest 'db') -Force # docsï¼è¿è¡æ¶æ¨¡æ¿ + ç¨æ·ææ¡£ï¼æé¤å¼åè¿ç¨ææ¡£ä¸ç¼å/å¤ä»½ï¼åå°ä½ç§¯ãé¿å æå 鍿¸ å带åºå»ï¼ $docsDest = Join-Path $dest 'backend\docs' New-Item -ItemType Directory -Force -Path $docsDest | Out-Null cmd /c "robocopy `"$root\docs`" `"$docsDest`" /E /NFL /NDL /NJH /NJS /NP /XD _cache 工使¥ç» åè½æµè¯æ¥å é®é¢æ±æ» /XF çæ_*.xlsx _bak_* >nul" if ($LASTEXITCODE -ge 8) { throw "docs å¤å¶å¤±è´¥ï¼robocopy è¿å $LASTEXITCODEï¼" } # db èæ¬ä¹æ¾ä¸ä»½å° docsï¼ä¸æ§å ä¸è´ï¼docs/init.sql çï¼ Copy-Item (Join-Path $tplDir 'db\init.sql'), (Join-Path $tplDir 'db\sql_city_bus.sql'), (Join-Path $tplDir 'db\sql_city_taxi.sql'), (Join-Path $tplDir 'db\sql_wyc.sql') $docsDest -Force -ErrorAction SilentlyContinue # READMEï¼ç¨æ§å 模æ¿å¹¶æ¿æ¢æ¥æå ä½ $readme = Get-Content (Join-Path $tplDir 'README-é¨ç½²è¯´æ.txt') -Raw -Encoding UTF8 $readme = $readme.Replace('{stamp}', $stamp) Set-Content -LiteralPath (Join-Path $dest 'README-é¨ç½²è¯´æ.txt') -Value $readme -Encoding UTF8 Write-Host '[5/5] æ±æ»...' $files = Get-ChildItem $dest -Recurse -File Write-Host (" è¾åºç®å½ï¼{0}" -f $dest) Write-Host (" æä»¶æ°ï¼{0}ãå计ï¼{1:N2} MB" -f $files.Count, (($files | Measure-Object Length -Sum).Sum / 1MB)) Write-Host ' æéï¼æå æ·å°é¨ç½²æºåï¼åªéæ¹ backend\application.yml éçæ°æ®åºä¸å¤ + éè¦æ¶å¡« deepseek.api-keyã' set-secrets.ps1
New file @@ -0,0 +1,31 @@ <# 设置/æ´æ°æ¬æºå¯é¥ç¯å¢åéï¼å¼ä¸è½æä»¶ï¼ââ è½®æ¢ DeepSeek key åè·è¿ä¸ª ç¨æ³ï¼powershell -NoProfile -ExecutionPolicy Bypass -File set-secrets.ps1 ï¼åè½¦è·³è¿æä¸é¡¹ï¼è¡¨ç¤ºä¸æ¹ï¼ #> $ErrorActionPreference = 'Stop' function Read-Secret([string]$prompt) { $sec = Read-Host -Prompt $prompt -AsSecureString if ($null -eq $sec) { return '' } $bstr = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($sec) try { return [Runtime.InteropServices.Marshal]::PtrToStringBSTR($bstr) } finally { [Runtime.InteropServices.Marshal]::ZeroFreeBSTR($bstr) } } foreach ($name in @('DEEPSEEK_API_KEY', 'TRAFFIC_DB_PASSWORD')) { $cur = [Environment]::GetEnvironmentVariable($name, 'User') $hint = if ($cur) { 'ï¼å·²è®¾ç½®ï¼é¿åº¦ ' + $cur.Length + 'ï¼' } else { 'ï¼å½åæªè®¾ç½®ï¼' } $val = Read-Secret ("è¾å ¥ " + $name + " " + $hint + "ï¼ç´æ¥å车跳è¿") if ([string]::IsNullOrWhiteSpace($val)) { Write-Host (" è·³è¿ " + $name); continue } & setx.exe $name $val | Out-Null if ($LASTEXITCODE -eq 0) { [Environment]::SetEnvironmentVariable($name, $val, 'Process') Write-Host (" å·²æ´æ° " + $name) } else { Write-Host (" æ´æ°å¤±è´¥ï¼" + $name) } } Write-Host '' Write-Host '宿ãçææ¹å¼ï¼æ°å¼çç»ç«¯èªå¨å¸¦ä¸ï¼ç¨ start-dev.ps1 å¯å¨ä¹ä¼èªå¨ä»æ³¨åè¡¨è½½å ¥ã' Write-Host 'ï¼è¥å端æ£å¨è¿è¡ï¼è¯·éå¯å端ï¼åæ 8090 è¿ç¨åéæ°æ§è¡ start-dev.ps1ï¼'