10 KiB
专家全面验证报告 - 2026-04-01
验证日期:2026-04-01
验证对象:UMS 用户管理系统(后端 Go + 前端 React/TypeScript)
验证视角:测试专家 / 用户专家
验证依据:AGENTS.md、docs/code-review/CODE_REVIEW_STANDARD.md、docs/code-review/PRD_GAP_DESIGN_PLAN.md、实际命令执行结果、关键代码复核
一、执行摘要
本轮按“测试专家 + 用户专家”双视角对项目做了全面复核,结论如下:
- ✅ 后端基础质量稳定:
go vet ./...、go build ./cmd/server、go test ./... -count=1本轮均通过 - ✅ 前端静态质量稳定:
npm run lint、npm run build本轮通过 - ⚠️ 前端单元测试仍不完全稳定:Vitest 全量执行仍有 3 个失败点,属于当前真实阻塞项之一
- ❌ 真实浏览器主验收链路本轮未重跑通过:
cd frontend/admin && npm.cmd run e2e:full:win在后端就绪阶段失败,当前不能把“本轮浏览器级真实 E2E 已重新验证闭环”作为结论输出 - ✅ 历史 PRD 缺口判断被进一步纠偏:此前若干“未实现”项经逐文件核查后被修正为“已实现”或“部分实现”
- ⚠️ 用户侧仍有可见缺口:管理员管理页、系统设置页、全局设备管理页、登录日志导出仍未交付
- ⚠️ 安全与工程尾项仍存在:
webhook.go的recordDelivery仍使用context.Background();邮件发送 goroutine 的上下文治理仍不理想
综合评分
8.4 / 10
这不是“不能用”,而是“核心链路大体可用,但还不能把当前仓库状态包装成完全收口”。
二、测试专家验证结果
2.1 命令级验证结果
| 分类 | 命令 | 结果 | 说明 |
|---|---|---|---|
| 后端静态检查 | go vet ./... |
✅ 通过 | 未见新的 vet 阻塞 |
| 后端构建 | go build ./cmd/server |
✅ 通过 | 服务端可成功编译 |
| 后端测试 | go test ./... -count=1 |
✅ 通过 | 41 个包通过 |
| 前端 lint | cd frontend/admin && npm.cmd run lint |
✅ 通过 | 无 lint 阻塞 |
| 前端构建 | cd frontend/admin && npm.cmd run build |
✅ 通过 | 构建成功 |
| 前端单测 | cd frontend/admin && npm.cmd test -- --run |
⚠️ 失败 | 仍有 3 个失败点 |
| 前端覆盖率 | cd frontend/admin && npm.cmd run test:coverage |
⚠️ 失败 | 被同一批失败测试阻断 |
| 真实浏览器 E2E | cd frontend/admin && npm.cmd run e2e:full:win |
❌ 失败 | 后端未在 /health 就绪 |
2.2 当前不能夸大的边界
根据 AGENTS.md,项目当前唯一受支持的真实浏览器主验收路径是:
cd frontend/admin && npm.cmd run e2e:full:win
本轮该命令没有跑通,因此本报告只能诚实地说:
- 仓库具备较高完成度
- 后端构建 / 测试可信
- 前端 lint / build 可信
- 但本轮不能把真实浏览器主链路闭环当作复核完成项重复宣称
2.3 前端测试失败现状
本轮识别到的前端测试问题主要包括:
UserDetailDrawer.test.tsx:对console.error的预期与实际错误呈现路径不一致UsersPage.test.tsx:存在act()警告与超时问题ContactBindingsSection.test.tsx:Ant DesignaddonAfter弃用警告相关噪音
结论:这些问题更像测试稳定性 / 测试实现质量问题,而不是已经确认的线上功能崩坏,但它们确实阻断了“当前前端测试全绿”的结论。
2.4 安全问题复核
| 问题 | 本轮状态 | 结论 |
|---|---|---|
| SEC-04 TOTP 使用 SHA1 | ✅ 已修复 | 已切到 SHA256 |
| SEC-06 JTI 含时间戳 | ✅ 已修复 | 已改为 crypto/rand 纯随机 |
| SEC-08 refresh 无限流 | ✅ 已修复 | refresh 路由已挂限流中间件 |
| NEW-SEC-01 Webhook SSRF | ✅ 已修复 | 安全 URL 校验已在链路中 |
NEW-SEC-02 Webhook context.Background() |
❌ 未修复 | recordDelivery 仍直接用 context.Background() |
| NEW-SEC-03 邮件 goroutine ctx | ⚠️ 部分风险 | 仍需明确 goroutine 生命周期与上下文策略 |
2.5 PRD / 架构差距复核结论(测试专家视角)
本轮对历史“缺口”做了逐文件核查,得到更精确的代码级结论:
| Gap | 本轮结论 | 说明 |
|---|---|---|
| GAP-01 角色继承 | ⚠️ 部分实现 | 角色层级与循环检测已实现;权限链路已接入继承,但整体仍需从 PRD 口径继续补齐边界验证 |
| GAP-02 SMS 密码重置 | ✅ 已实现 | Service / Handler / 路由均存在,且接口未回传明文验证码 |
| GAP-03 设备信任 | ⚠️ 部分实现 | CRUD 与部分登录接线已在,但跨登录方式一致性不足,前端设备标识不稳定 |
| GAP-04 CAS/SAML | ❌ 未实现 | PRD 标注可选,建议放 v2.0 |
| GAP-05 异地登录检测 | ⚠️ 部分实现 | AnomalyDetector 已注入,但真实验收证据不足 |
| GAP-06 异常设备检测 | ⚠️ 部分实现 | 检测逻辑存在,但设备指纹稳定性与全链路证据不足 |
| GAP-07 SDK | ❌ 未实现 | 可延期,不影响当前管理后台主链路 |
| 密码历史记录 | ✅ 已接线 | repository、service、main 注入链路已到位 |
2.6 E2E 失败的当前判断
本轮 E2E 在后端健康检查阶段失败,现象为后端进程未在预期时间内变为 ready。
当前只能给出审慎判断:
- 问题更接近测试环境启动 / 配置覆盖链路,而不是直接证明业务主流程已损坏
- 初步怀疑点包括配置项环境变量映射、测试数据库或依赖启动时的参数覆盖
- 在没有把
e2e:full:win重新跑绿之前,不能把“真实浏览器验收闭环”继续作为当前轮次的完成结论
三、用户专家验证结果
3.1 页面 / 路由完整度
本轮复核确认:前端并不是“只有半成品骨架”,实际已经具备较完整的后台管理界面。
已存在的主要页面
- DashboardPage
- UsersPage
- RolesPage
- PermissionsPage
- LoginLogsPage
- OperationLogsPage
- WebhooksPage
- ImportExportPage
- ProfilePage
- ProfileSecurityPage
- LoginPage
- RegisterPage
- BootstrapAdminPage
- ActivateAccountPage
- OAuthCallbackPage
- ForgotPasswordPage
- ResetPasswordPage
仍缺失的用户可见页面 / 能力
- 管理员管理页
- 系统设置页
- 全局设备管理页(目前只有“我的设备”局部能力)
- 登录日志导出
- 批量操作(用户管理的效率功能)
3.2 用户主流程体验判断
| 流程 | 结论 | 说明 |
|---|---|---|
| 管理员登录 | ✅ 基本可用 | 认证、路由守卫、会话恢复链路齐备 |
| 后台主导航 | ✅ 基本可用 | 路由与菜单主体已建成 |
| 用户创建 | ✅ 已有入口 | UsersPage 内已有 CreateUserModal |
| 社交登录 / 绑定 UI | ✅ 已有 | 登录页、回调页、安全页均有相关界面 |
| 个人安全中心 | ✅ 功能较完整 | 含 TOTP、设备、绑定信息等 |
| 设备信任体验 | ⚠️ 体验不稳定 | 仅密码登录上传设备字段,device_id 仍是随机值 |
| Webhooks 查询体验 | ⚠️ 语义不准 | 当前页前端过滤 + 服务端分页的混合模式不严谨 |
3.3 PRD 对齐修正(用户专家视角)
本轮纠正了几个容易误判的点:
- 社交登录 / 绑定不是前端缺页,UI 已存在
- 用户创建不是前端缺页,只是批量操作仍缺
- 设备指纹并非完全没有,但目前实现不稳定,且未覆盖所有登录方式
- 前端当前的主要问题不是“页面都没做”,而是“少数关键管理能力仍缺 + 若干链路没做到完整闭环”
3.4 禁止性 API 核查
本轮用户专家复核未发现项目将以下 API 作为正常业务交互路径保留:
window.alertwindow.confirmwindow.promptwindow.open
这点符合 AGENTS.md 对前端交互防线的要求。
四、综合结论
4.1 当前项目真实状态
这个项目当前更接近下面这个判断:
后端能力比较完整,前端主后台已经成型,代码质量总体在可控范围内,但“自动化验证闭环”和“PRD 最后一公里”还没有完全收口。
如果只看代码实现度,项目已经不低;如果按“可审计、可重复、可对外诚实宣称”的标准看,当前还差最后几步:
- 前端全量测试恢复稳定
e2e:full:win主链路重新跑通- 补齐 4 个高可见度后台缺口
- 清掉 2 个剩余安全 / 工程尾项
4.2 本轮最重要的 6 个结论
- 后端 go vet / build / test 全绿,可信度较高
- 前端 lint / build 全绿,但单测与覆盖率未全绿
- 真实浏览器主验收命令本轮失败,不能重复宣称浏览器级复核闭环
- 历史多个“未实现”结论已被纠偏,项目真实完成度高于旧报告印象
- 用户侧最大的真实缺口是后台页面与完整管理能力,而不是基础框架缺失
- 剩余问题数量已经不多,但都卡在“能不能诚实收口”的关键位置上
五、优先级建议
P0:必须优先收口
- 修复
e2e:full:win启动失败,恢复真实浏览器主验收 - 修复当前 3 个前端失败测试,恢复前端测试链路可信性
P1:应在当前迭代解决
- 修复
internal/service/webhook.go中recordDelivery的context.Background()问题 - 明确
auth_email.gogoroutine 的上下文与生命周期治理 - 补齐管理员管理页 / 系统设置页 / 全局设备管理页 / 登录日志导出
P2:下一轮持续优化
- 收口设备信任链路,统一所有登录方式的设备标识采集
- 修正
WebhooksPage查询语义 - 清理统计查询 N+1 与恢复码恒定时间比较等尾项
六、建议对外表述
当前最稳妥、最诚实的对外表达应为:
- 可以说:后端构建测试稳定,前端后台主体已成型,仓库已形成较完整的一轮治理证据
- 不建议说:当前版本已经“全部闭环”“完全收口”“真实浏览器验证已再次全面通过”
七、最终结论
测试专家结论:项目具备较高工程完成度,但当前轮次还不能把“前端测试全绿 + 真实浏览器主验收闭环”当成事实。
用户专家结论:后台主流程基本成型,核心页面多数已具备,但还有少数高感知管理能力未补齐。
总评:8.4 / 10,离“可诚实宣称全面收口”只差最后几个硬点。