| .gitignore | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| docs/功能测试报告/功能测试报告_密钥外部化与打包去密_2026-09-26.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| docs/工作日结/工作日结_2026-09-26.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| docs/打包部署说明.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| start-dev.ps1 | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
.gitignore
@@ -103,3 +103,4 @@ _tmp_codexhome/ # Codex åºç¨å¨æ¬ä»åºæ ¹ç®å½äº§çç产ç©ç®å½ï¼ä¿ç卿¬å°ï¼ä¸å ¥åºï¼ outputs/ traffic-audit-server/config/application.yml docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_ÃÜÔ¿Íⲿ»¯Óë´ò°üÈ¥ÃÜ_2026-09-26.md
New file @@ -0,0 +1,74 @@ # åè½æµè¯æ¥åï¼å¯é¥å¤é¨å䏿å å»å¯ï¼2026-09-26ï¼ > æ¥æï¼2026-09-26ãæ¨¡åï¼é ç½®/æå ï¼traffic-audit-server é ç½®åå± + .gitignore + é¨ç½²è¯´æï¼ãæµè¯äººï¼Codex > èµ·å ï¼æ£æ¥é¨ç½²å `E:\è¯éª\traffic-audit-deploy-20260913` æ¶åç°ââå¤å± `backend/application.yml` æ¯å¹²åçå ä½çï¼ä½ **jar å ç½®ç `BOOT-INF/classes/application.yml` é带ççå®å¯é¥**ï¼DeepSeek API keyãæ¬æºæ°æ®åºå£ä»¤ãJWT å¯é¥ï¼ã ## ä¸ãåè½è¯´æï¼æ¹å¨ï¼ 1. **è¿ jar çé ç½®ä¸å¾å ä½ç¬¦**ï¼`traffic-audit-server/src/main/resources/application.yml` - `spring.datasource.url: ${TRAFFIC_DB_URL:...}`ã`username: ${TRAFFIC_DB_USER:root}`ã`password: ${TRAFFIC_DB_PASSWORD:}`ï¼é»è®¤ç©ºï¼ - `jwt.secret: ${TRAFFIC_JWT_SECRET:traffic-audit-dev-jwt-secret-change-me}` - `deepseek.api-key: ${DEEPSEEK_API_KEY:}`ï¼é»è®¤ç©ºï¼ â æå åºç jar **ä¸åå å«ä»»ä½çå®å¯é¥**ã 2. **æ¬æºå¼åççå®å¼åç¬æ¾**ï¼æ°å»º `traffic-audit-server/config/application.yml`ï¼ä¿åæ°æ®åºå£ä»¤ãJWTãDeepSeek keyï¼ï¼ Spring Boot é»è®¤å è½½ `file:./config/application.yml`ï¼ä¼å 级é«äº classpath çååé ç½® â æ¬æº `mvn spring-boot:run` è¡ä¸ºä¸åã 该æä»¶å·²å å ¥ `.gitignore`ï¼ç¬¬ 106 è¡ï¼ï¼**æ¢ä¸è¿ä»åºãä¹ä¸è¿ jar**ã 3. **é¨ç½²è¯´æè¡¥å **ï¼`docs/æå é¨ç½²è¯´æ.md` å¢å "å¯é¥ä¸é ç½®"ä¸èï¼å«æå¡å¨ä¸è½®æ¢ key çæ¥éª¤ï¼ã ## äºãæµè¯ç¯å¢ å端 `mvn -q spring-boot:run -f traffic-audit-server/pom.xml`ï¼8090ï¼ï¼MySQL æ¬æº `localhost:3308/traffic_audit`ï¼è´¦å· admin/123456ã ## ä¸ãç¨ä¾è¡¨ | ç¼å· | è¾å ¥ | 颿 | å®é | ç»è®º | | --- | --- | --- | --- | --- | | TC-1 | å¯å¨åç«¯ï¼æ¬æºè¦çæä»¶åå¨ï¼ | æ£å¸¸å¯å¨ | æ¥å¿åºç° `Started TrafficAuditApplication` | éè¿ | | TC-2 | `POST /api/auth/login`ï¼admin/123456ï¼ | åºå£ä»¤åèª `config/application.yml` | ç»å½æåãè¿å tokenï¼è¥è¦çæä»¶æªçæï¼å ä½ç¬¦é»è®¤ç©ºå£ä»¤ä¼è¿ä¸ä¸åºï¼ | éè¿ | | TC-3 | `POST /api/llm/chat`ï¼"åªåå¤ä¸¤ä¸ªåï¼æ¶å°"ï¼ | DeepSeek key åèª `config/application.yml` | HTTP 200ãåç"æ¶å°" | éè¿ | | TC-4 | è¿ jar ç `application.yml` å 容 | æ çå®å¯é¥ | ä¸å¤å为 `${...}` å ä½ç¬¦ï¼å£ä»¤ä¸ api-key é»è®¤ç©ºï¼ | éè¿ | | TC-5 | `git check-ignore` | æ¬æºçå®é ç½®ä¸è¿åº | `.gitignore:106 traffic-audit-server/config/application.yml` | éè¿ | | TC-6 | `git grep -E "sk-[A-Za-z0-9]{16,}"` | è·è¸ªæä»¶éæ å¯é¥ | æ å½ä¸ï¼å¦ï¼09-23 åæ ¸æ¥è¿ git åå²ä¹æ å½ä¸ï¼ | éè¿ | | TC-7 | ä»åºå 两份é¨ç½²æ¨¡æ¿ï¼`deploy/.../backend/application.yml`ã`_deploytest/application.yml`ï¼ | æ çå®å¯é¥ | å为ãè¯·æ¹æä½ çæ°æ®åºå¯ç ã+ `api-key: ""` | éè¿ | ## åãåç°çé®é¢ä¸å¤ç½® 1. **jar å ç½®é 置带çå®å¯é¥**ï¼æ¬æ¬¡æ ¹å ï¼ï¼Spring Boot å¤é¨é ç½®ä¼å 级æ´é«ï¼æä»¥çº¿ä¸è¿è¡æ¶ç¨çæ¯å¤é¨å¼ãåè½ä¸æ²¡åå½±åï¼ä½ jar å¯è§£åï¼ææå¯é¥å°±å¨éé¢ï¼äºè¿å¶éæä¸å° `sk-` æ¯å 为被 zip å缩ï¼è§£åå³è§ï¼ã â å·²æä¸è¿°æ¹æ¡æ ¹æ²»ï¼**以åæå ä¸ä¼åæå¯é¥æè¿ jar**ã 2. **已带åºå»çé£ä»½ jar æ æ³æ¶å**ï¼éé¢ç key ä»å¨ãå¤ç½®å»ºè®®ï¼å¿ é¡»åï¼ï¼ - å° DeepSeek æ§å¶å°**æ°å»ºä¸ä¸ª key å¹¶å 餿§ç**ï¼æ§ key ç«å³å¤±æï¼jar éçé£ä»½å°±åºäºï¼ï¼ - å»é£å°æå¡å¨ä¸æå¤é¨ `backend/application.yml` ç `deepseek.api-key` æ¢ææ° keyï¼æç´æ¥ç空ï¼AI åæå°±ä¸ç¨ï¼ï¼ - éå¯å端ï¼`start-backend.cmd`ï¼ï¼å¨é¡µé¢ç¹ä¸æ¬¡ AI åæç¡®è®¤å¯ç¨ã 3. æ¬æºæ°æ®åº root å£ä»¤åæ ·å¨æ§ jar éï¼è¥é£å°æå¡å¨ç¨è¿åä¸å£ä»¤ï¼å»ºè®®ä¸å¹¶æ¹æï¼é¨ç½²æ¨¡æ¿æ¬æ¥å°±è¦æ±ç°åºæ¹ï¼ã ## äºãç»è®º é ç½®å屿¹é 宿并éè¿ 7 æ¡ç¨ä¾ï¼è¿ jar çåªæå ä½ç¬¦ï¼çå®å¼ä» åå¨äºæ¬æºæªè·è¸ªæä»¶æç¯å¢åéï¼æ¬æºå¼åä¸çº¿ä¸é¨ç½²è¡ä¸ºåæªéåãè½®æ¢ key çæ¥éª¤å·²åå ¥é¨ç½²è¯´æã ## å ã第äºè½®ï¼åæ¥æï¼ç¨æ·åæå追å ï¼ï¼æ¬æºä¹ä¸çææ 1. **æ¬æºçå®å¼æ¹ä¸º Windows ç¨æ·ç¯å¢åé**ï¼ä¸åè½æä»¶ï¼ï¼ ```powershell setx TRAFFIC_DB_PASSWORD "æ¬æº MySQL å£ä»¤" setx DEEPSEEK_API_KEY "DeepSeek key" ``` `traffic-audit-server/config/application.yml` æ¹æ"åªæè¯´æãæ ææ"çæ³¨éæä»¶ï¼å¼å ¨é¨ç±ç¯å¢åéæä¾ï¼ã 2. **start-dev.ps1 å æ³¨å表å åº**ï¼è¥å½å shell æ¯æ§è¿ç¨ãæ¿ä¸å°æ°è®¾åéï¼åä» `HKCU\Environment` 读åå¹¶æ³¨å ¥å端è¿ç¨ï¼é¿å "æä»¶é没æãç¯å¢åéä¹è¯»ä¸å°"ç空档ã 3. **æ¸ çä»åºå å« key çå岿件**ï¼æªè·è¸ª/已忽ç¥ï¼éæäº¤å 容ï¼ï¼ | æä»¶ | å½ä¸ | | --- | --- | | `_shots/all_events.json` | 13 å¤ | | `_dep_readme.txt` | 1 å¤ | â å ¨é¨æ¿æ¢ä¸º `sk-REDACTED`ï¼å¤æ¥å ¨ä»åº**å·²æ ææ key**ã ### 追å ç¨ä¾ | ç¼å· | è¾å ¥ | 颿 | å®é | ç»è®º | | --- | --- | --- | --- | --- | | TC-8 | `start-dev.ps1`ï¼å¨æªç»§æ¿æ°åéç shell éï¼ | èªå¨ä»æ³¨åè¡¨è½½å ¥ | è¾åº"å·²ä»ç¨æ·ç¯å¢åéè½½å ¥ TRAFFIC_DB_PASSWORD / DEEPSEEK_API_KEY" | éè¿ | | TC-9 | å¯å¨åç»å½ `admin/123456` | åºå£ä»¤åèªç¯å¢åé | ç»å½æåãtoken 156 å符 | éè¿ | | TC-10 | `POST /api/llm/chat` | key åèªç¯å¢åé | HTTP 200ãåç"æ¶å°" | éè¿ | | TC-11 | å ¨ä»åºæ«æ `sk-[A-Za-z0-9]{16,}` | æ ææ | æ¸ çå夿¥ä¸º 0 | éè¿ | | TC-12 | `traffic-audit-server/config/application.yml` | æ ææ | ä» æ³¨é说æï¼å¼èµ°ç¯å¢åéï¼ | éè¿ | > 说æï¼ç¯å¢åéæ¬èº«ä»æ¯æ¬æºææï¼å卿³¨å表 `HKCU\Environment`ï¼ï¼éååæºå¼åï¼åä½/ç产请ç¨é¨ç½²æºå¤é¨é ç½®æå¯é¥ç®¡çå·¥å ·ãè½®æ¢ key 仿¯æ ¹æ²»æ³é²çå¯ä¸ææ®µã docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-26.md
New file @@ -0,0 +1,45 @@ # 工使¥ç»_2026-09-26 ## ä¸ãä»å¤©åäºä»ä¹ ### 1. æ£æ¥åäºæè¿æäº¤ä¸é¨ç½²å å®å ¨ - å ¬å¸ gitea `main` 䏿¬å°ä¸è´ï¼`ecf2b3c`ï¼ï¼09-24~09-26 æ æ°æäº¤ï¼åäºæè¿ä¸¤æ¡æ¯ 09-23 ç `e5faa88`ã`3b68e9e`ãæå¡å¨å®ä¸º Gitblitï¼æ å¯ç¨ REST APIï¼ï¼ä»¥ `git ls-remote` 为åã - æ£æ¥ `E:\è¯éª\traffic-audit-deploy-20260913`ï¼ - å¤å± `backend/application.yml` é çæ¯ `127.0.0.1:3306/traffic_audit`ãrootãå¯ç å ä½ç¬¦ã`api-key: ""`ï¼å¹²åï¼ï¼ - **ä½ jar å ç½® `BOOT-INF/classes/application.yml` 带çå®å¯é¥**ï¼DeepSeek keyãæ¬æºåºå£ä»¤ 3308/root/123456ãJWT å¯é¥ï¼ã - git å±é¢æ¯å¹²åçï¼`application.yml` ä¸ `_shots/` é½è¢« gitignoreï¼`git grep`/`git log -S` åæ å½ä¸ã ### 2. é ç½®å屿¹é ï¼æå å»å¯ï¼ - è¿ jar ç `src/main/resources/application.yml` å ¨é¨æ¹ä¸ºå ä½ç¬¦ï¼`${TRAFFIC_DB_*}`ã`${DEEPSEEK_API_KEY:}`ã`${TRAFFIC_JWT_SECRET:...}`ï¼ï¼ - æ¬æºçå®å¼ç§»å° `traffic-audit-server/config/application.yml`ï¼Spring ç `file:./config/` ä¼å 级æ´é«ï¼ï¼å¹¶å å ¥ `.gitignore`ï¼ - `docs/æå é¨ç½²è¯´æ.md` å¢å "å¯é¥ä¸é ç½®"ä¸èï¼åå±è¡¨ + æå åèªæ¥ + é¨ç½²æºæ¢ key + è½®æ¢æ¥éª¤ï¼ã ### 3. éªè¯ - å端å¯å¨ OKï¼ç»å½æåï¼è¯æåºå£ä»¤åèªæ¬æºè¦çæä»¶ï¼å¦åå ä½ç¬¦ç©ºå£ä»¤è¿ä¸ä¸ï¼ï¼`/api/llm/chat` è¿å"æ¶å°"ï¼è¯æ DeepSeek key åèªæ¬æºè¦çæä»¶ï¼ï¼ - `git grep` 确认è·è¸ªæä»¶ä¸æ `sk-` å¯é¥ï¼ä»åºå 两份é¨ç½²æ¨¡æ¿å为å ä½çã ### 4. æ¬æºå»ææ + æ¸ çåå²å¯é¥ï¼ç¨æ·åæåï¼ - æ¬æºçå®å¼æ¹ä¸º **Windows ç¨æ·ç¯å¢åé**ï¼`setx TRAFFIC_DB_PASSWORD` / `setx DEEPSEEK_API_KEY`ï¼ï¼`config/application.yml` æ¹ææ ææè¯´ææä»¶ï¼ - `start-dev.ps1` å¢å **注å表å åº**ï¼æ§ shell ä¹è½èªå¨è½½å ¥ç¯å¢åéï¼å®æµè¾åº"å·²ä»ç¨æ·ç¯å¢åéè½½å ¥ â¦"ï¼ï¼ - æ¸ çä»åºå å« key çæªè·è¸ªæä»¶ï¼`_shots/all_events.json`ï¼13 å¤ï¼ã`_dep_readme.txt`ï¼1 å¤ï¼â æ¿æ¢ä¸º `sk-REDACTED`ï¼å ¨ä»å¤æ¥æ ææï¼ - å½åæå¡å·²ç¨æ°æ¹å¼éå¯ï¼ç»å½ OK + AI åç"æ¶å°"ï¼åè½æ åå½ã ## äºãæµè¯ç»ææè¦ - æ¥åï¼`docs/åè½æµè¯æ¥å/åè½æµè¯æ¥å_å¯é¥å¤é¨å䏿å å»å¯_2026-09-26.md`ï¼7 æ¡ç¨ä¾å ¨éè¿ï¼ã ## ä¸ãéçé®é¢ä¸å¾ å 1. **ãä»éç¨æ·æä½ãè½®æ¢å·²æ³é²ç DeepSeek key**ï¼æ¬æºä¸ä»åºå·²æ ææï¼ä½æ§ jar éçé£ä»½è¿æ²¡ä½åºï¼ï¼æ§å¶å°æ°å»º key â å 餿§ key â é¨ç½²æºå¤é¨ `application.yml` å¡«æ° key â éå¯éªè¯ãæ§ jar æ æ³æ¶åï¼è½®æ¢æ¯å¯ä¸æ ¹æ²»ææ®µã 2. æ¬æºæ°æ®åº root å£ä»¤ï¼123456ï¼åæ ·å¨æ§ jar éï¼å»ºè®®é¨ç½²æºæ¢å£ä»¤ã 3. 䏿¬¡éæ°æå ç»é¨ç½²æºæ¶ï¼å»ºè®®æ `æå é¨ç½²è¯´æ.md` çèªæ¥æ¥éª¤ç¡®è®¤ jar å æ çå®å¼ï¼å¹¶é¡ºå¸¦åæ¥é¨ç½²å å çæ§æ¯çï¼P2-5ï¼ã 4. 项ç®å ¶å®éçï¼P0/P1/P2ï¼è§ `docs/äº¤æ¥ææ¡£_2026-09-21.md` 第 4 èä¸ `docs/äº¤æ¥ææ¡£_2026-09-23.md`ã ## åãæå¤©è®¡å 1. è§ç¨æ·å®ææ¨è¿ P0ï¼äº¿å æèµé¡¹ç®ææè¿½åï¼P0-2ï¼ã导åºååºæ°ä½æ£ + ç¼ºå¤±æ¸ å页ï¼P0-3ï¼ã2026-06/09 æ¯çï¼P0-4ï¼ã 2. æ±æ»å¤§è¡¨ 304 æ ¼ã2025 累计åå°å 7ã8 æãæ¸ ç©ºï¼ä¸å¡å·²ç¡®è®¤å£å¾ï¼ã docs/´ò°ü²¿Êð˵Ã÷.md
@@ -219,3 +219,51 @@ - **2026-09-13**ï¼æ°å¢ä¸é®æå èæ¬ `package-deploy.py`ï¼jar æ¹ä¸ºå åµå端ï¼é¨ç½²æºä¸åéè¦ nginxï¼ï¼å é¤ Redis ç¸å ³è¯´æï¼ä»£ç æªä½¿ç¨ï¼ï¼è¡¥ `sql_wyc.sql` ä¸ `summary.template-dir`ï¼è¡¥ `jwt.secret` åå¼è§åï¼è¡¥é¨ç½²åéªè¯æ¸ åã - 2026-08-27ï¼é¦çï¼zip é¨ç½²å + nginx æ¹æ¡ï¼ã --- ## å¯é¥ä¸é ç½®ï¼2026-09-26 èµ·ï¼æå å¿ è¯»ï¼ ### åå±çº¦å® | ä½ç½® | ç¨é | æ¯å¦è¿ git | æ¯å¦è¿ jar | | --- | --- | --- | --- | | `traffic-audit-server/src/main/resources/application.yml` | è¿ jar çé»è®¤é ç½®ï¼**åªæå ä½ç¬¦**ï¼`${TRAFFIC_DB_PASSWORD:}`ã`${DEEPSEEK_API_KEY:}` çï¼ | å¦ï¼å·² gitignoreï¼ç¨ `application.yml.example` 忍¡æ¿ï¼ | **æ¯**ï¼æ çå®å¼ï¼ | | `traffic-audit-server/config/application.yml` | æ¬æºå¼åçå®å¼ï¼åºå£ä»¤ / JWT / DeepSeek keyï¼ | å¦ï¼å·² gitignoreï¼ | å¦ | | jar å级ç `backend/application.yml` | é¨ç½²æºçå®å¼ï¼ä¼å 级é«äº jar å ç½®ï¼ | å¦ | å¦ï¼å¨å å¤ï¼ç°åºå¡«ï¼ | | ç¯å¢åé `TRAFFIC_DB_PASSWORD` / `TRAFFIC_DB_USER` / `TRAFFIC_DB_URL` / `TRAFFIC_JWT_SECRET` / `DEEPSEEK_API_KEY` | è¦ç以ä¸ä»»æä¸é¡¹ | å¦ | å¦ | ### æ¬æºå¼åï¼å¼æ¾ç¯å¢åéï¼ä¸è½æä»¶ï¼ ```powershell setx TRAFFIC_DB_PASSWORD "æ¬æº MySQL å£ä»¤" # è®¾ä¸æ¬¡å³å¯ï¼ä¹åæ°å¼çç»ç«¯èªå¨å¸¦ä¸ setx DEEPSEEK_API_KEY "DeepSeek key" # éè¦æ¶åè¦çï¼setx TRAFFIC_DB_URL / TRAFFIC_DB_USER / TRAFFIC_JWT_SECRET powershell -NoProfile -ExecutionPolicy Bypass -File start-dev.ps1 # ä¼èªå¨ä»æ³¨å表补é½å¹¶æ³¨å ¥å端è¿ç¨ ``` - `traffic-audit-server/config/application.yml` åªç注é说æï¼æ ææï¼ï¼å æå®ä¹ä¸å½±åï¼å¼å ¨å¨ç¯å¢åééï¼ã - è¥ç¨ IDE ç´æ¥è·ä¸»ç±»ï¼è¯·å¨**æ°å¼ç**ç»ç«¯/IDE éå¯å¨ï¼è®©æ°ç»ç«¯ç»§æ¿ç¨æ·ç¯å¢åéï¼ï¼ææå¨ `setx` åéå¯ IDEã ### æå åèªæ¥ï¼30 ç§ï¼ ```powershell # 1) ç¡®è®¤è¿ jar çé 置没æçå®å¯é¥ï¼åºåªçå° ${...}ï¼ Select-String -Path traffic-audit-server\src\main\resources\application.yml -Pattern "password:|api-key:|secret:" # 2) æå®å ååéªè¯ä¸æ¬¡ jar å é¨ 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:" ``` ### é¨ç½²æºä¸å /æ¢ DeepSeek key 1. æå ä¸ä¼ åï¼ç¼è¾ **jar å级**ç `backend/application.yml`ï¼`deepseek.api-key: "ä½ çæ°key"`ï¼ç空åé¡µé¢ AI åæä¸å¯ç¨ï¼å ¶ä½åè½æ£å¸¸ï¼ï¼ 2. éå¯å端ï¼`start-backend.cmd`ï¼æ `java -jar traffic-audit-server-1.0.0-SNAPSHOT.jar`ï¼ï¼ 3. 页é¢éç¹ä¸æ¬¡ AI åæç¡®è®¤å¯ç¨ï¼ 4. **ä¸è¦**廿¹ jar å é¨çé ç½®ï¼æ¹äºä¸æ¬¡åå 就丢ï¼ï¼ä¹ä¸è¦æ key æäº¤è¿ä»»ä½ä»åºæä»¶ã ### è½®æ¢ï¼ä½åºï¼å·²æ³é²ç key 1. ç»å½ DeepSeek æ§å¶å° â API Keys â æ°å»ºä¸ä¸ª keyï¼ 2. å é¤/ç¦ç¨æ§ keyï¼æ§ key ç«å»å¤±æï¼æ¤åæå 带åºå»ç jar éé£ä»½å³ä½åºï¼ï¼ 3. æä¸é¢ç¬¬ 1~3 æ¥ææ° key å¡«å°é¨ç½²æºçå¤é¨é 置并éå¯éªè¯ã start-dev.ps1
@@ -12,6 +12,19 @@ $root = Split-Path -Parent $MyInvocation.MyCommand.Path $webDir = Join-Path $root 'traffic-audit-web' # ---------- å¯é¥ï¼ä» Windows ç¨æ·ç¯å¢åéè¡¥é½ï¼çå®å¼ä¸è½æä»¶ï¼---------- # è¥å½å shell æ¯æ§è¿ç¨ãæ¿ä¸å°æ°è®¾çåéï¼å仿³¨å表 HKCU\Environment è¯»ä¸æ¬¡ï¼ # ä¾å端åè¿ç¨ç»§æ¿ï¼é¿å "å¯é¥ä¸å¨ä»»ä½æä»¶éãå读ä¸å°ç¯å¢åé"ç空档ï¼ã foreach ($name in @('TRAFFIC_DB_PASSWORD', 'DEEPSEEK_API_KEY', 'TRAFFIC_DB_URL', 'TRAFFIC_DB_USER', 'TRAFFIC_JWT_SECRET')) { if (-not [Environment]::GetEnvironmentVariable($name, 'Process')) { $val = [Environment]::GetEnvironmentVariable($name, 'User') if ($val) { [Environment]::SetEnvironmentVariable($name, $val, 'Process') Write-Host "å·²ä»ç¨æ·ç¯å¢åéè½½å ¥ $name" } } } function Test-PortListening($port) { try { $c = Get-NetTCPConnection -LocalPort $port -State Listen -ErrorAction Stop