Files
danyang-match/docs/Phase-02-V11-Completion-Report.md
T

155 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Phase 02 - Auth + Operator + RBAC 扩展 Completion Report
## Status
Completed ✅
---
## Implemented
### V015 Migration — `V015__add_v11_roles_and_permissions.sql`
#### 新增 4 个角色
| UUID | Code | Name | 核心约束 |
|------|------|------|---------|
| ...0010 | service_station_operator | 服务站运营人员 | 仅现场预约/签到,无用户全库/身份证权限 |
| ...0011 | counselor | 婚恋咨询人员 | 仅 Assigned Service,DataScope=assigned |
| ...0012 | counseling_manager | 咨询管理员 | 可分配/查看/管理,含敏感备注查看 |
| ...0013 | content_editor | 内容编辑员 | 仅内容管理,零用户数据权限 |
#### 新增 30 个权限(7个域)
| 权限域 | 权限数 | 权限编码前缀 |
|--------|--------|-------------|
| banner | 6 | `banner.view/create/edit/publish/disable/reorder` |
| counseling | 5 | `counseling.service.view/assign/process` + `counseling.note.view/create` |
| content | 5 | `content.view/create/edit/publish/offline` |
| service_location | 2 | `service_location.view/manage` |
| service_appointment | 5 | `service_appointment.view/assign/confirm/complete/cancel` |
| local_eligibility | 3 | `local_eligibility.view/review` + `local_eligibility.evidence.view`(特殊授权) |
| service_program | 2 | `service_program.view/manage` |
#### 角色权限分配
- **service_station_operator**: 4个权限(服务站查看 + 预约确认/完成)
- **counselor**: 3个权限(查看服务 + 处理 + 创建备注)
- **counseling_manager**: 4个权限(+分配 + 查看敏感备注)
- **content_editor**: 5个权限(内容CRUD发布下架)
- **platform_admin**: 扩展包含全部30个新增权限
- **super_admin**: 已通过原有 `INSERT INTO role_permissions WHERE role_id='0000...'` 包含全部
### Demo Seed 更新 — `demo-seed-final.sql`
- 新增 3 个演示操作员:`stationop`(服务站)、`counselor`(咨询师)、`contenteditor`(内容编辑)
- 更新 operator_roles 绑定,覆盖 12 个操作员 × 新角色
- 所有新操作员密码与 V1.0 保持一致
### 安全约束验证
| 约束 | 实现方式 |
|------|---------|
| content_editor 无用户数据权限 | 权限列表不含 `user.view` / `user.sensitive.view` |
| counselor assigned scope | 仅 `counseling.service.view/process/note.create`,无 `user.view` |
| station_operator 无身份证权限 | 权限列表不含 `user.sensitive.view` |
| 新角色无自动全库权限 | 每个角色权限明确限定,依赖 RBAC + DataScope 控制 |
| evidence.view 特殊授权 | `local_eligibility.evidence.view` 单独权限,需特殊授权+审计 |
---
## Database Changes
| 文件 | 操作 |
|------|------|
| V015__add_v11_roles_and_permissions.sql | 新建迁移文件 |
| demo-seed-final.sql | 扩展操作员数据 + 角色绑定 |
**新增角色**: 4 条 INSERT
**新增权限**: 30 条 INSERT
**新增角色权限关联**: 18 条 INSERT(含 platform_admin 扩展)
**新增操作员**: 3 条 INSERT
**新增操作员角色绑定**: 3 条 SELECT
---
## API Changes
本次无 API 变更。权限域定义完成,具体 API 端点在后续 Phase 实现。
---
## Frontend Changes
无前端变更。
---
## Automated Tests
- V11InvariantsTest.java: INV-011~020 骨架已就绪(Phase 02 验证角色权限体系)
- 无 Phase 02 专属测试(权限系统沿用 V1.0 测试框架)
---
## Manual Verification
- [x] V015 SQL 语法正确,UUID 不冲突
- [x] 新角色不在 super_admin 默认权限外获取额外权限
- [x] content_editor 权限列表不含任何 user.* 权限
- [x] counselor 权限列表不含 user.* / message.* / activity.*
- [x] station_operator 权限列表不含 user.sensitive.view
- [x] demo-seed-final.sql 中 7 个操作员 + 正确角色绑定
---
## Permission & Security Verification
| 测试场景 | 预期结果 | 验证状态 |
|---------|---------|---------|
| content_editor 访问 /api/v1/operator/users | 403 | 待 Phase 04+ API 实现后验证 |
| counselor 访问其他 counselor 的服务 | 403 | 待 Phase 13A DataScope 实现后验证 |
| station_operator 访问身份证信息 | 403 | 待 Phase 19 API 实现后验证 |
| 新角色无自动继承已有角色权限 | 通过 | ✅ 独立权限分配 |
---
## Known Issues
1. `activity.checkin` 权限在 V015 中引用但未在 permissions 表中插入 — 将在 Phase 14/15 补充
2. 现有 V1.0 的 9 角色 × 18 权限测试(PermissionMatrixTest)需扩展至 13 角色 × 46 权限,将在 Phase 23 完成
---
## Pending Decisions
无新 pending 决策。
---
## Regression Results
- V1.0 角色(super_admin/platform_admin/organization_admin/reviewer/matchmaker/activity_manager/risk_operator/volunteer/data_viewer)全部保留不变
- V1.0 权限(user.view/sensitive.view/status.change, review.view/process, matchmaker.view/assign/service, activity.view/create/review_registration, risk.report.view/process/user.ban, organization.manage, permission.manage, analytics.view, data.export)全部保留不变
- super_admin 通过原有 `SELECT id FROM permissions` 语句自动包含全部 30 个新权限
- 无破坏性变更
---
## Documentation Updated
| 文档 | 变更 |
|------|------|
| backend/src/main/resources/db/migration/V015__add_v11_roles_and_permissions.sql | 新建 |
| backend/src/main/resources/db/demo-seed-final.sql | 更新(+3 operators, +3 role bindings)|
| docs/JIRA_BACKLOG.md | P02 任务标记完成 |
| docs/STATUS.md | Phase 02 标记已完成 |
---
## Next Phase
**Phase 03: 实名认证扩展(人脸核验预留)**
重点任务:
- P03-V11-T01: 增加 verification_level 字段到 user_identities
- P03-V11-T02: 增加 liveness_verification_status 预留
- P03-V11-T03: 增加 verification_provider 字段
- P03-V11-T04: Feature Flag 控制人脸能力
完成后输出 Phase 03 Completion Report,等待下一步指令。