# 工作日结_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 回答"收到",功能无回归。 ### 5. 打包模板入库 + 一键打包 + 清理旧包(2026-09-27 续) - 新增 `pack-deploy.ps1`(构建 → **jar 去密自检** → 重建前端 → 组装完整部署包)与 `set-secrets.ps1`(交互式更新本机密钥环境变量,值不落文件); - 打包模板件(外部 application.yml、启动脚本、nginx 示例、db 建表 sql、部署 README)从旧包搬到 **`deploy-templates/`** 并入库(原先只在未跟踪的包目录里,删包即丢); - 已产出干净新包 **`E:\试验\traffic-audit-deploy-20260927`**(336 文件 / 95.95 MB,前端含最新"按市州汇总"功能); - 按用户确认清理旧包:`E:\试验\traffic-audit-deploy-20260913`(目录 + 69.9 MB 的 zip)、`deploy\traffic-audit-deploy-20260913`、`_deploytest`、空的 `out`/`deploy`,以及被覆盖的旧 `target` jar; - 全盘复查(仓库 + E:\试验):**已无任何含明文 key 的 jar / 压缩包 / 文本文件**; - 坑:旧包文件带只读属性,`Remove-Item -Force` 被环境策略拦 → 改为先清属性再 `Remove-Item -Recurse`。 ## 二、测试结果摘要 - 报告:`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 月」清空(业务已确认口径)。