编辑 | blame | 历史 | 原始文档

工作日结_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 月」清空(业务已确认口径)。