角色权限、RequirePermission、/me permissions 与 migration 000015; Reviewer Approve → Closed。Next:ECR-013B Contract Definition。 Co-authored-by: Cursor <cursoragent@cursor.com>
76 lines
2.5 KiB
Markdown
76 lines
2.5 KiB
Markdown
# 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
|