docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_ÃÜÔ¿Íⲿ»¯Óë´ò°üÈ¥ÃÜ_2026-09-26.md
@@ -44,3 +44,62 @@
## äº”、结论
配置分层改造完成并通过 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 ä»æ˜¯æ ¹æ²»æ³„露的唯一手段。
## ä¸ƒã€ç¬¬ä¸‰è½®ï¼ˆ2026-09-27):模板入库 + ä¸€é”®æ‰“包 + æ¸…理旧包
1. **打包模板入库**:原先打包用的模板件(外部 `application.yml`、`start-backend.cmd/.sh`、`nginx.conf.example`、`README-部署说明.txt`、`db` çš„ 4 ä¸ªå»ºè¡¨è„šæœ¬ï¼‰åªå­˜åœ¨æœªè·Ÿè¸ªçš„æ—§éƒ¨ç½²åŒ…ç›®å½•é‡Œï¼Œåˆ åŒ…å³ä¸¢ã€ä¸”ä¸åœ¨ç‰ˆæœ¬åº“ã€‚
   çŽ°ç»Ÿä¸€æ¬åˆ° **`deploy-templates/`**(可提交、已入库),`pack-deploy.ps1` æ”¹ä¸ºä»Žè¯¥ç›®å½•组装。
2. **一键打包脚本 `pack-deploy.ps1`**:构建 jar â†’ **解压自检(占位符校验,命中真实密钥或明文口令即中止)** â†’ é‡å»ºå‰ç«¯ â†’ ç»„装完整部署包到 `E:\试验\traffic-audit-deploy-<yyyyMMdd>`。
3. **密钥更新脚本 `set-secrets.ps1`**:交互式更新 `DEEPSEEK_API_KEY` / `TRAFFIC_DB_PASSWORD` ç”¨æˆ·çŽ¯å¢ƒå˜é‡ï¼ˆå€¼ä¸è½æ–‡ä»¶ï¼‰ã€‚
4. **清理旧包**(用户确认后执行):
| åˆ é™¤å¯¹è±¡ | è¯´æ˜Ž |
| --- | --- |
| `E:\试验\traffic-audit-deploy-20260913`(246 æ–‡ä»¶ / 81.5 MB) | æ—§éƒ¨ç½²åŒ…目录(含带密钥 jar) |
| `E:\试验\traffic-audit-deploy-20260913.zip`(69.9 MB) | æ—§åŒ…压缩件(含带密钥 jar) |
| `deploy\traffic-audit-deploy-20260913`(245 æ–‡ä»¶ / 81.5 MB) | ä»“库内旧包副本 |
| `_deploytest`(201 æ–‡ä»¶ / 78.1 MB) | æ—§çš„部署测试目录 |
| `out`(空目录)、`deploy`(清空后的空目录) | æ— ç”¨ç©ºç›®å½• |
| `traffic-audit-server\target\*.jar`(旧) | è¢« `mvn clean` è¦†ç›–为新构建 |
> æ³¨ï¼šè¿™äº›ç›®å½•里的文件带只读属性,`Remove-Item -Force` è¢«çŽ¯å¢ƒç­–ç•¥æ‹¦æˆªï¼Œæ”¹ä¸º**先清属性再 `Remove-Item -Recurse`**。
### ç¬¬ä¸‰è½®éªŒè¯
| ç¼–号 | æ£€æŸ¥ | ç»“æžœ |
| --- | --- | --- |
| TC-13 | æ–°åŒ… `E:\试验\traffic-audit-deploy-20260927` | 336 æ–‡ä»¶ / 95.95 MB,含 backend(fresh jar+模板+docs)、frontend(dist+nginx ç¤ºä¾‹)、db、README |
| TC-14 | æ–° jar å†…置配置 | å…¨ä¸º `${...}` å ä½ç¬¦ï¼Œ`含 sk- æ˜Žæ–‡: False` |
| TC-15 | æ–°å‰ç«¯ dist | å«æœ€æ–°åŠŸèƒ½ï¼ˆ`rollupTypes` / ã€ŒæŒ‰å¸‚州汇总」) |
| TC-16 | å…¨ç›˜å¤æŸ¥ï¼ˆä»“库 + `E:\试验`) | å†…置配置带 key çš„ jar:**无**;压缩包含 key:**无**;文本含 key:**无** |
| TC-17 | ä¸€é”®æ‰“包脚本实跑 | è¾“出"[2/5] åŽ»å¯†è‡ªæ£€â€¦é€šè¿‡"并成功产出新包 |
> å”¯ä¸€ä»å¸¦æ˜Žæ–‡ key çš„地方是**用户环境变量**(设计如此,供本机开发用)与**已带出去/服务器上那份旧 jar**——后者需按第 4 èŠ‚è½®æ¢ key æ‰ç®—彻底。