feat(ECR-013A): Admin RBAC 实现并 Closed
角色权限、RequirePermission、/me permissions 与 migration 000015; Reviewer Approve → Closed。Next:ECR-013B Contract Definition。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
# ECR-013A
|
||||
|
||||
**Title:** Admin RBAC(角色 · 权限点 · API 强制鉴权)
|
||||
**Status:** **Closed**
|
||||
**Date:** 2026-08-07
|
||||
**Approved:** 2026-08-07(Human)
|
||||
**Coding Start Authorization:** 2026-08-07(Human)
|
||||
**Closed:** 2026-08-07(Reviewer Approve)
|
||||
**Parent:** WAVE0-FROZEN (`27f27a1`)
|
||||
**Change Level: L2**(行为:管理员授权模型;栈与分层不变)
|
||||
|
||||
## Change
|
||||
|
||||
1. Active Feature Spec:`.ai/product/feature-spec/ops-rbac.md`
|
||||
2. Domain:`AdminRole` · `AdminPermission`;`AdminAccount.role_id`
|
||||
3. API 意图:`GET/PUT /api/v1/admin/roles*` · 扩展 `GET /me` permissions
|
||||
4. 既有 admin 写路径挂 permission;缺权 403 + AuditLog
|
||||
5. **contract_diff**:`docs/CONTRACT_DIFF/ECR-013A.yaml`(P0)
|
||||
6. **不含** UserStatus / 账户启停(ECR-013B)
|
||||
|
||||
## Motivation
|
||||
|
||||
Ops-A 管理员权限扁平;进入多运营角色与 M1+ 前必须有可审计的最小权限模型。
|
||||
|
||||
## Scope
|
||||
|
||||
### Allowed
|
||||
|
||||
- 上列 Spec / Domain / API 意图 / BD Draft / AC(四类)
|
||||
- feature-map §7 · TRACEABILITY · STATE · TASK(architect)
|
||||
|
||||
### Forbidden(Non-goals)
|
||||
|
||||
- ECR-013B AccountLifecycle(另 Start Authorization)
|
||||
- 真支付 · UGC · Prompt · 兑换码 · Crisis · 完整角色编辑 UI(本切片 API-first + me 最小展示)
|
||||
|
||||
## Risk
|
||||
|
||||
| Risk | Mitigation |
|
||||
|------|------------|
|
||||
| 锁死全部管理员 | 种子 `super_admin` 不可删;bootstrap 保留 |
|
||||
| 权限码膨胀 | 本切片冻结 catalog;新增须新 ECR |
|
||||
| 与 Ops-B/C 路由遗漏挂权 | ENGINEERING_SPEC 列清单;integration 覆盖 grant/content |
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
见 Spec `ops-rbac.md` L4:AC-F-01..03 · AC-S-01..04 · AC-P-01 · AC-O-01..02(实现轮勾选)
|
||||
|
||||
契约 / 实现完成标准:
|
||||
|
||||
- [x] L0–L4 填满
|
||||
- [x] contract_diff 已交
|
||||
- [x] BD Draft + HANDOFF
|
||||
- [x] Human **Approve** ECR+BD + Coding Start Authorization
|
||||
- [x] Migration + middleware + roles API + TEST_REPORT
|
||||
- [x] Reviewer Approve → **Closed**
|
||||
|
||||
## Rollback
|
||||
|
||||
- down migration `000015` + 回退 permission middleware
|
||||
|
||||
## Risk Review
|
||||
|
||||
- Path: N/A
|
||||
|
||||
## Linked
|
||||
|
||||
- Feature Spec: `.ai/product/feature-spec/ops-rbac.md`
|
||||
- PRODUCT_SPEC: `docs/PRODUCT_SPEC/ECR-013A-admin-rbac.md`
|
||||
- ENGINEERING_SPEC: `docs/ENGINEERING_SPEC/ECR-013A-admin-rbac.md`
|
||||
- BACKEND_DESIGN: `docs/BACKEND_DESIGN/BD-2026-013A-admin-rbac.md`
|
||||
- CONTRACT_DIFF: `docs/CONTRACT_DIFF/ECR-013A.yaml`
|
||||
- TEST_REPORT: `docs/TEST_REPORT/ECR-013A.md`
|
||||
- CODE_REVIEW: `docs/CODE_REVIEW/ECR-013A.md`
|
||||
- Parent: WAVE0-FROZEN
|
||||
Reference in New Issue
Block a user