Files
wecom_it_smart_desk/docs/03-测试文档/02-E2E测试/E2E-CHECKLIST-v0.7.0.md
T
Simon facc04aa65 chore: docs 结构整改 + compose 双目录对齐(合并重建提交)
本提交为 .git 对象库损坏后的重建提交,内容等价于原先三个本地提交
(5e2fd4c2 / 57a53c98 / 5d7e1873)的累积结果,未做任何额外改动。

一、docs 结构整改(整改 #14)
根因:重构时新结构为 untracked 文件,执行 git stash(未带 -u)未纳入,
随后 git reset 拉回 HEAD 旧 tracked 树,导致旧树复活、新旧两棵目录
树并存于 docs/,共 791 文件、双分类体系冲突。

修复动作:
- b2 同名异主题文件改名迁移保全 9 个
- C 类 39 个孤立文件按主题正确归类
- A/B1 类 222 个重复文件删除(新结构已有内容副本)
- 9 个旧独有空目录删除
- 270 处内部引用按 verified 映射改写
- 整改记录 #14 登记于 04-运维文档/部署运维

结果:docs 791 → 569 文件,顶层仅规范 8 类 + 治理文件,单树恢复。
残留:约 20 处指向从未存在文件的陈旧死链,归入独立文档卫生任务。

二、compose 双目录对齐(消除踩坑 A)
- docker-compose.yml:nginx 前端挂载全部由根目录 frontend-*/dist
  改为 src/frontend-*/dist(h5 / agent / admin / terminal)
- docker-compose.dev.yml:dev 服务 build context 与卷同步改 src/
- 效果:本地 docker compose up 不再把根目录 stale dist 挂回,
  与线上一致,分叉隐患消除(已 docker compose config 校验通过)

防复发铁律:
- 重构须提交;仓库修复须 git stash -u 或先 commit
- 新结构须 git add 并提交,避免再次 untracked 复活
- H5 改动只动 src/frontend-h5/,禁改根目录遗留 frontend-*/
2026-08-07 22:31:32 +08:00

5.4 KiB

E2E 验收清单 v0.7.0(扫码登录 + MFA)

部署完 v0.7.0 后,逐项打勾。任何一项 立即回滚。 每项给出预期结果 + 验证方法 + 失败处理。


0. 部署完成(用户跑过 DEPLOY-LOGIN-MIGRATION-v0.7.0.md 全部步骤)

  • 后端 alembic upgrade head 跑通(head = 025_messages_id_uuid)
  • 4 端 dist 已上传到宿主机 /opt/wecom-it-desk/frontend-*/dist/
  • nginx nginx -t 通过 + nginx -s reload 完成
  • docker restart wecom_it_backend 成功
  • 容器状态 docker ps 显示 backend/redis/postgres 全部 Up

1. 扫码登录(Phase 1.1 / 1.2 / 1.3)

1.1 门户页面加载

  • 浏览器打开 https://<生产域名>/itportal/
  • 看到 QrcodeLogin 页面(二维码 + 倒计时)
  • 不再显示旧的"账号密码"登录

1.2 二维码生成

  • 倒计时从 120 秒开始
  • 刷新按钮可用
  • DevTools Network: POST /api/auth_qrcode/create 返回 200 + ticket

1.3 扫码

  • 用企微扫 → 企微 OAuth2 跳回 callback
  • 门户页面状态从 waitingscanned(显示"已扫码,等待确认")
  • DevTools Network: POST /api/auth_qrcode/scan 成功

1.4 坐席确认

  • 已登录坐席在 /itagent/ 收到确认弹窗
  • 点"确认"→ 门户 waitingconfirmed → 跳转 /itagent/
  • localStorage 有 agent_token / portal_token

1.5 角色分发

  • 双角色坐席(admin+agent)→ 跳 /itportal/select
  • 仅 admin → 跳 /itadmin/
  • 仅 agent → 跳 /itagent/
  • 仅 user → 跳 /itdesk/

1.6 过期处理

  • 120 秒不扫 → 状态变 expired + 提示"二维码已过期,请刷新"

2. MFA 绑定(Phase 2.4)

2.1 绑定入口

  • 坐席登录后 → 顶栏头像 → "绑定 MFA"
  • /itagent/mfa-bind 页面

2.2 扫码绑定

  • 看到 TOTP 二维码(otpauth://totp/...)
  • 用 Google Authenticator / 微软 Authenticator 扫
  • 输入 6 位 OTP → 点"验证" → 成功
  • 页面显示"已绑定" + 备份信息

2.3 API 验证

  • GET /api/auth/otp-status 返回 bound: true, enabled: true
  • GET /api/auth/otp-admin-users (admin) 看到该坐席 bound=true

3. MFA 验证(高危操作守卫)

3.1 30 分钟有效期

  • 坐席 admin 角色登录 → 绑 MFA → 调 /api/admin/high-risk/demo/role_change
  • 未先调 /api/auth/otp-verify → 返回 2001 需要 OTP
  • POST /api/auth/otp-verify {otp_code: "123456"} → 成功
  • 再调 高危端点 → 200 通过
  • 等 31 分钟 → 再次调 → 又返回 2001(TTL 失效)

3.2 5 类高危操作

  • POST /api/admin/high-risk/demo/role_change → 200
  • POST /api/admin/high-risk/demo/config_change → 200
  • POST /api/admin/high-risk/demo/data_export → 200
  • POST /api/admin/high-risk/demo/account_disable → 200
  • POST /api/admin/high-risk/demo/account_create_reset → 200

3.3 角色拒绝

  • 非 admin 角色调高危端点 → 4003 仅管理员

3.4 白名单查询

  • GET /api/admin/high-risk/whitelist 返回 5 类元数据

4. P0/P1 合规验证

4.1 WebSocket 连接

  • H5 员工端开 DevTools → Network → WS
  • WS 连接建立,没有 1006 / missing argument 错误
  • 坐席发消息 → H5 端 100ms 内收到(无轮询 3-5s 延迟)

4.2 消息 ID 类型

  • psql -d wecom_it -c 'SELECT id FROM messages LIMIT 1;' 返回 UUID 格式
  • 前端消息轮询不再偶发 500
  • 跨会话消息不再串号

4.3 nginx access_log

  • docker exec wecom_it_nginx tail /var/log/nginx/access.log | head -3
  • 不包含 Authorization: / Cookie: 字样
  • 只剩 IP / method / path / status

4.4 Gitea token

  • cat .git/config | grep 5ad83d 返回空(token 已撤销)
  • git push 试一下:应该失败(无 push 权限,符合预期)

5. 端到端业务流(回归)

5.1 H5 → 坐席 完整流程

  • H5 员工发起会话 → 排队
  • 坐席收到分配 → WS 推送
  • 坐席发消息 → 员工 < 100ms 收到
  • 转人工、邀请、满意度流程无 regression

5.2 管理员后台

  • 仪表盘加载正常
  • 坐席管理 CRUD 正常
  • 功能开关可切换
  • 集成配置 6 个系统显示完整
  • MFA 管理页 /mfa-manage 表格可搜索/过滤/分页
  • 重置 MFA 按钮可弹 ElMessageBox 二次确认

5.3 端点路径(临时 4 xfail)

  • POST /api/conversations/{id}/messages 仍 404 — pre-existing,不影响生产
  • 实际走 H5 的 /api/h5/conversations/current/messages 路径

6. 性能与稳定性

  • 长时间压测(可选): wrk -t4 -c100 -d60s https://<域>/api/auth_qrcode/create
  • 无 5xx 错误
  • Redis 连接稳定(无 timeout)
  • PG CPU < 50%

7. 回滚预案

如果任意 项:

# 1. 停止后端
sudo docker stop wecom_it_backend

# 2. 恢复 4 端 dist
sudo cp -r /opt/wecom-it-desk/dist-backup-*/* /opt/wecom-it-desk/frontend-*/dist/

# 3. 回滚 alembic(只回 025,022/023 保留)
sudo docker start wecom_it_backend
sudo docker exec wecom_it_backend alembic downgrade 024

# 4. nginx 回滚
sudo docker exec wecom_it_nginx nginx -s reload

详见 DEPLOY-LOGIN-MIGRATION-v0.7.0.md 末尾"回滚预案"。


验收人签字

角色 姓名 日期 结果
部署
验收
复核