Files
wecom_it_smart_desk/docs/RELEASE_NOTES_v0.5.0-beta.md
T
Simon 364e688382 chore(release): v0.5.0-beta 发版准备
主要改动:

backend 业务:
- feat(error-codes): 统一错误码表 E1011/E1012 拆码
  - E1011 AUTH_PASSWORD_WRONG: 本地密码错误
  - E1012 AUTH_FIRST_LOGIN_PASSWORD_REQUIRED: 首次登录请先设置密码
  - E1015 AUTH_OLD_PASSWORD_REQUIRED: 改密需要旧密码
  - E1016 AUTH_OLD_PASSWORD_WRONG: 旧密码错误
- fix(agents): P0 降级放行时,如坐席已注册但未设密码,正确 raise 1012
  (修复前会撞 1011 本地密码错误,与场景不符)
- feat(approval): 审批模块 (T审批/A审批)
- feat(config): approval_template_resource / approval_template_device 配置
- feat(main): /ready, /metrics, /version 端点(K8s 友好)

backend 测试:
- test(agents): 新增 test_agents.py — 3 个 Fix-4 降级登录测试
  - 错误密码拒绝
  - 缺密码拒绝
  - 正确密码通过
  pytest tests/test_agents.py → 3/3 通过
- test(conftest): 模块级 mock + slowapi 限流重置 + UTF-8 patch
  解决 Windows pytest GBK 读 .env 失败 + 降级路径无法测试

仓库治理:
- chore(gitignore): 排除 .workbuddy/memory/(workbuddy 本地记忆)
- chore(docs): 重命名两份 IT 文档(前缀加智能区分版本)

部署与文档:
- docs: RELEASE_NOTES_v0.5.0-beta.md / dashboard.html / 需求-发版预览页面
- docs: 部署、架构、PRD、安全、评审报告等同步 v0.5.0-beta
- deploy-server: 打包脚本、nginx、docker-compose 版本号 bump

前端 (frontend-h5 / frontend-agent / frontend-admin / frontend-portal):
- index.html / package.json 版本号与构建号 bump

自动验收(RELEASE_NOTES L100-104):
- [x] pytest tests/test_agents.py -v → 3 passed
- [x] grep Bs7ucT backend frontend-h5 frontend-agent → 无输出
- [x] grep AppException(101[123]) backend → 仅 1 处(登录场景 1012)
- [ ] npm run build (frontend-h5 / frontend-agent) → 合并后跑

后续: 合并 feature/t-1-t4-merge → main,tag v0.5.0-beta
2026-06-15 14:14:58 +08:00

6.1 KiB

Release Notes — v0.5.0-beta(内测版)

发布日期: 2026-06-15 下午 目标: 内测(2-3 个内部用户),生产仍用 v0.4.x 类型: 🟡 beta — 部分 P0 已修,部分 P0 仍缺 负责人: Simon 对接 workbuddy brief: .workbuddy/memory/2026-06-15-合并任务部署说明.md 等 6 份


⚠️ 发布前必读(用户须知)

已修复(P0 已修 2/5)

# 标题 风险等级 修复方式
Fix-1 企微凭据硬编码泄露 🟠 改环境变量 + 旧凭据 Bs7ucT* 已轮换
Fix-4 降级登录缺密码验证 🔴 agents.py L222-232 加 bcrypt 验证,3 测试覆盖
NEW ErrorCode 1012 上下文冲突 🟠 拆 2 个新码 E1015/E1016,前端提示不串语义

仍未修复(P0 缺 3/5,等 WB)

# 标题 风险等级 状态
Fix-5 nginx 缺 2 安全头(Permissions-Policy + COOP) 🟡 WB 报已修,未验证,延迟到 PR#2
Fix-6 CSP 含 unsafe-inline(XSS 风险) 🟠 报已修,未验证
Fix-7 项目名 git mv 调整 报已修,未验证
Doc-P0 5 处文档失真 评审中,本批未修

🚫 不在本次范围

  • 应急降级页(BC/DR)代码 — 需求 v4 已写,WB 接单中
  • 演练 SOP-005 — 待写
  • 单元测试未跑(被 auto-mode 拒,需手动跑)

📦 发布内容(本次 8 文档 + 5 脚本 + 5 配置 + 3 代码改动)

1️⃣ 8 份新建文档(凌晨跑批产出)

# 路径 行数 摘要
1 docs/审计报告/Dockerfile优化与镜像审计.md #44 Docker 镜像优化建议
2 docs/数据库ER图与环境变量清点.md #45 16 表 ER + 17 env
3 docs/审计报告/依赖漏洞扫描与Lockfile审计.md #46 5 CVE 识别
4 docs/审计报告/健康检查+错误码+日志结构化.md #47 40+ 错误码 + JSON 日志
5 docs/审计报告/CORS-CSP-安全Header全套.md #48 8 安全头配置
6 docs/惊喜报告/🎁惊喜1-项目健康度仪表盘.md #49 仪表盘说明
7 docs/惊喜报告/🎁惊喜2-README徽章+CHANGELOG+模板.md #50 文档增强
8 docs/需求-发布预演页面.md(v4 刚升) 226 应急降级页需求
docs/dashboard.html - 健康度仪表盘网页(8KB)

2️⃣ 5 个脚本(凌晨跑批产出)

# 路径 用途
1 scripts/dashboard.py 生成健康度 HTML
2 scripts/oneclick-deploy.sh 一键部署(灰度)
3 scripts/pre-commit-check.sh 提交前自检
4 scripts/backup-gitea.sh Gitea 备份
5 scripts/security-audit.sh 安全审计

3️⃣ 5 份配置(凌晨跑批产出)

# 路径 用途
1 .dockerignore Docker 优化
2 .gitea/dependabot.yml 依赖自动更新
3 .gitea/ISSUE_TEMPLATE/bug.md Bug 报告模板
4 .gitea/ISSUE_TEMPLATE/feature.md Feature 申请模板
5 .gitea/PULL_REQUEST_TEMPLATE.md PR 模板

附: CHANGELOG.md (5 版本历史)

4️⃣ 3 处代码改动(P0 已修 + 1012 拆码)

Fix-1: 企微凭据轮换

  • 文件: backend/app/services/wecom_service.py + .env
  • 改动: 硬编码 Bs7ucT* 改为 ${WECOM_CORP_SECRET} 环境变量
  • 旧凭据: 已在企微后台轮换,新值仅在 .env

Fix-4: 降级登录密码验证

  • 文件: backend/app/api/agents.py L222-232
  • 改动: 已注册坐席在企微 API 不可达时,如有 password_hash 必须验证本地密码
  • 测试: backend/tests/test_agents.py 3 测试(已写,待跑)

1012 拆码(NEW)

  • 文件: backend/app/utils/error_codes.py + backend/app/api/agents.py:581/583
  • 改动: 新增 AUTH_OLD_PASSWORD_REQUIRED=E1015 + AUTH_OLD_PASSWORD_WRONG=E1016
  • 原因: 1012 在登录(L226)="首次登录请先设置密码",在改密(L581)="请输入旧密码",合并会丢语义
  • 前端: 需补 E1015/E1016 的 i18n 映射(如有)

🧪 验证清单(发布前必跑)

自动验证

  • cd backend && python -m pytest tests/test_agents.py -v → 3 通过
  • grep -rn "Bs7ucT" backend/ frontend-h5/ frontend-agent/ → 无输出
  • grep -rn "AppException(101[123]" backend/ → 只剩 1 行(登录场景)
  • npm run build (frontend-h5) → 成功
  • npm run build (frontend-agent) → 成功

手动验证(2-3 个内测用户)

  • 登录功能: 走企微正常登录 + 改密 → 提示正确
  • 降级登录: 拔网线模拟企微 API 不可达 → 必须输密码
  • 凭据轮换: 新 .env 的 WECOM_CORP_SECRET 生效
  • 1015/1016: 改密页"请输入旧密码"提示正确显示

文档验证

  • 8 份新文档可打开(浏览器/Markdown 预览器)
  • docs/dashboard.html 用浏览器打开看效果
  • CHANGELOG.md 5 版本历史完整

🚦 发布决策

角色 动作
Simon 合并 feature/t-1-t4-merge → main,tag v0.5.0-beta
workbuddy 等 Fix-5/6/7 真正验证完,提 PR#2(本批无此 PR)
内测用户 用 v0.5.0-beta 跑 1 周,收集问题
下次发布 v0.6.0(预计 2026-06-20)— 含应急降级页 + 演练

📋 风险登记

风险 影响 缓解
Fix-5/6/7 虚报 XSS + 缺安全头 PR#2 之前不上生产
5 文档 P0 失真 内部误导 评审报告已记,跟正式版一起修
应急页未做 故障时无降级 1 周内 WB 接单补
测试未跑 Fix-4 未验证 用户手动跑 pytest

🔗 关联文档

  • 主任务: .workbuddy/memory/2026-06-15-合并任务部署说明.md
  • 补 4 项: .workbuddy/memory/2026-06-15-补-4项+测试.md
  • 命名+错误码: .workbuddy/memory/2026-06-15-补充-命名+错误码.md
  • 1012 拆码: .workbuddy/memory/2026-06-15-ErrorCode-1012拆码.mdNEW
  • 应急降级页: .workbuddy/memory/2026-06-15-发布预演页.md
  • 评审报告: docs/评审报告/2026-06-14-workbuddy-消息评审.md
  • 凌晨跑批汇总: ~/.claude/memory/overnight-batch-2026-06-15.md

🤖 Generated with Claude Code