Files
user-system/docs/review-fix-closure-2026-05-28.md
2026-05-28 15:18:49 +08:00

3.5 KiB
Raw Blame History

user-system review 修复收口2026-05-28

结论

本轮已完成 review 报告相关最高优先级前端/E2E blocker 修复并完成后端、前端、E2E 三层验证。

当前状态:

  • 最高优先级 blocker已修复
  • Go 全量测试:通过
  • 前端全量测试通过82 files, 522 tests
  • Playwright CDP 全链路 E2E通过

本轮修复项

1. 会话恢复 / refresh 竞态

  • 问题:AuthProvider 初始恢复会话与 HTTP client 401 重试路径会并发触发 /auth/refresh,在 refresh token 轮换模型下导致 401
  • 修复:前端改为共享 single-flight refresh。
  • 涉及文件:
    • frontend/admin/src/lib/http/client.ts
    • frontend/admin/src/services/auth.ts
    • frontend/admin/src/services/auth.test.ts

2. 用户列表响应结构漂移

  • 问题:后端 /users 返回 { users, total, limit, offset },前端只按 items 读取,导致页面空表。
  • 修复:增加 users 列表 normalize兼容 items/userspage_size/limit/offset
  • 涉及文件:
    • frontend/admin/src/services/users.ts
    • frontend/admin/src/services/users.test.ts

3. Webhooks 列表响应结构漂移

  • 问题Webhooks 页加载时报 Cannot read properties of undefined (reading 'map')
  • 修复:兼容 data/items/webhooks 多种列表包裹形状。
  • 涉及文件:
    • frontend/admin/src/services/webhooks.ts
    • frontend/admin/src/services/webhooks.test.ts

4. Social accounts 响应结构漂移

  • 问题ProfileSecurityPage 报 socialAccounts.map is not a function
  • 修复:兼容 array/items/accounts/social_accounts 形状。
  • 涉及文件:
    • frontend/admin/src/services/social-accounts.ts
    • frontend/admin/src/services/social-accounts.test.ts

5. Playwright CDP E2E harness 漂移

  • 修复点包括:
    • refresh token 断言从可读 cookie 改为 HttpOnly cookie / session presence 真相
    • 创建用员 文案 typo
    • responsive 场景后 viewport 未恢复
    • drawer 选择器 strict mode 冲突
    • delete confirm 由 modal 漂移为 popconfirm
    • 菜单分组/路由漂移设备、审计日志、Webhooks、profile/security
    • 多处页面断言从宽文本改为更稳定选择器
  • 涉及文件:
    • frontend/admin/scripts/run-playwright-cdp-e2e.mjs
    • frontend/admin/scripts/run-playwright-auth-e2e.sh

6. E2E 限流误伤

  • 问题:测试流量触发 API rate limit导致后续场景误报。
  • 修复:为 E2E backend 增加 DISABLE_RATE_LIMIT=1 开关,仅用于测试启动脚本。
  • 涉及文件:
    • internal/api/middleware/ratelimit.go
    • frontend/admin/scripts/run-playwright-auth-e2e.sh

验证结果

后端

  • 命令:go test ./...
  • 结果:通过

前端

  • 命令:npm test -- --runInBand
  • 结果:通过
  • 统计:82 passed, 522 passed

E2E

  • 命令:npm run e2e:full
  • 结果:通过
  • 结论:Playwright CDP E2E completed successfully

闭环判断

实现闭环

已完成。本轮识别出的真实 blocker 均已修复。

证据闭环

已完成。Go 全量测试、前端全量测试、CDP E2E 全部通过。

文档真相闭环

已完成。本文件记录了问题、修复、验证与当前结论。

防复发闭环

已部分完成:

  • 已为 users/webhooks/social-accounts 响应结构漂移补 service-level normalize + tests
  • 已把 refresh 单飞与 E2E harness 漂移修复固化
  • 后续建议:把 E2E 页面导航/断言进一步抽象为页面对象或稳定 helper减少文案/菜单变动带来的连锁断言漂移