Files
danyang-match/docs/Phase-02-V11-Recovery-Completion-Report-2026-09-10.md

3.8 KiB
Raw Permalink Blame History

Phase 02 Completion Report — 统一认证、RBAC、DataScope 与敏感访问

  • 日期:2026-09-10
  • 交付类型:内部迭代交付
  • 项目类型:Web 管理系统 + 微信小程序后端
  • 安全级别:普通商业项目(按公益婚恋敏感个人信息要求加强)
  • 分支:phase/02-rbac-datascope
  • 结论:Phase 02 专项门禁通过;项目整体仍为 NO-GO,不自动进入 Phase 03。

1. 测试范围

本阶段只验收统一身份主体、接口 Permission、服务 DataScope、敏感访问拒绝审计、管理端 Capability/权限入口控制及数据库迁移。性能、完整 UAT、生产发布和 Phase 03 以后业务不在本阶段范围。

2. 完成内容

  1. 建立 UserPrincipal、OperatorPrincipal 与统一 JWT 认证上下文;Controller 不再自行解析 Authorization/JWT。
  2. 删除旧 PermissionFilter 粗粒度实现;/operator/** 和 /admin/** 只做运营身份门禁,具体接口使用 @PreAuthorize 权限码。
  3. 为不在 /operator/** 下的运营接口补齐方法权限,包括咨询、内容、服务预约、活动签到和红娘转介。
  4. 实现并验证 Counselor Assigned Service、ServiceStationOperator 站点/任务范围、ContentEditor 零用户婚恋数据权限、组织关系不自动继承权限。
  5. 权限拒绝写入审计;用户预约 userId 由 Principal 决定,修复可替他人创建/读取预约的 IDOR 风险。
  6. 运营登录改为数据库密码散列校验,补充失败锁定、刷新和审计;移除硬编码测试密码通道。
  7. 管理端路由、菜单和页面操作按服务端权限集合控制;前端隐藏仅作为体验层,后端仍强制校验。
  8. 新增 V028/V029 前向迁移,补齐服务站数据范围及签到/协助登记权限。

3. 测试执行记录

测试项 结果 实测
后端编译 通过 Maven compile exit 0
Phase 02 专项/相关回归 通过 38 tests,0 failure,0 error,0 skipped
PostgreSQL 16 Flyway 通过 V001–V029 全部迁移成功,当前版本 V029
角色权限实库核对 通过 counselor、counseling_manager、content_editor、service_station_operator 权限符合矩阵
Admin TypeScript 通过 npm run type-check exit 0
Admin Production Build 通过 npm run build exit 0;仅有既有大 chunk 警告
Backend 全量回归 未全绿 277 tests:4 failures、8 errors、3 skipped

专项用例覆盖正向授权、越权拒绝、行级范围、拒绝审计、Principal 注入、防止 Controller 回退解析 JWT、登录与健康检查。

4. 遗留缺陷与风险

等级 遗留项 处理建议
高 P0FixVerificationTest 8 个错误:H2 测试环境缺少旧核心业务表 在后续基线修复阶段建立完整测试 schema;不得跳过或删除用例
中 MigrationValidationTest 2 个旧文本断言与真实 V001–V029 迁移结构不一致 独立校正旧静态断言;真实 PostgreSQL Flyway 已通过
中 PermissionMatrixTest 1 个旧平台管理员权限数量断言与其矩阵定义冲突 在后续权限测试基线任务中统一期望
中 SecurityTests 1 个旧 XSS 输出编码断言未通过 后续按实际输出边界统一编码策略和断言
低 Admin 主包约 1.26 MB,Vite 给出 chunk 警告 非 Phase 02 阻断;后续按页面拆包

以上遗留项未被隐藏,因此项目总体继续 NO-GO;它们不否定本阶段 RBAC/DataScope 专项门禁结果。

5. 验收结论

Phase 02 的代码、数据库、专项测试和管理端构建达到本阶段验收条件。正式客户 UAT、性能、安全渗透、备份恢复、部署演练和签字材料尚未执行,不得据此宣称 V1.1 可上线。

下一步门禁:等待用户明确确认后,才可进入 Phase 03。