角色权限、RequirePermission、/me permissions 与 migration 000015; Reviewer Approve → Closed。Next:ECR-013B Contract Definition。 Co-authored-by: Cursor <cursoragent@cursor.com>
2.5 KiB
2.5 KiB
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
- Active Feature Spec:
.ai/product/feature-spec/ops-rbac.md - Domain:
AdminRole·AdminPermission;AdminAccount.role_id - API 意图:
GET/PUT /api/v1/admin/roles*· 扩展GET /mepermissions - 既有 admin 写路径挂 permission;缺权 403 + AuditLog
- contract_diff:
docs/CONTRACT_DIFF/ECR-013A.yaml(P0) - 不含 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(实现轮勾选)
契约 / 实现完成标准:
- L0–L4 填满
- contract_diff 已交
- BD Draft + HANDOFF
- Human Approve ECR+BD + Coding Start Authorization
- Migration + middleware + roles API + TEST_REPORT
- 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