UserStatus 迁移、DeviceAuth 拒绝非 active、admin-h5 CTA; Reviewer Closed。Human 授权 LOOP_AUTHORIZATION(免逐闸确认)。 Co-authored-by: Cursor <cursoragent@cursor.com>
2.5 KiB
2.5 KiB
ECR-013B
Title: AccountLifecycle(UserStatus 状态机 · 运营启停/封禁 · C 端拒绝)
Status: Closed
Date: 2026-08-07
Approved: 2026-08-07(Human)
Coding Start Authorization: 2026-08-07(Human)
Closed: 2026-08-07(Reviewer · Loop continuous)
Parent: WAVE0-FROZEN (27f27a1)
Predecessor: ECR-013A Closed
Change Level: L2(行为:账户状态强制;栈与分层不变)
Change
- Active Feature Spec:
.ai/product/feature-spec/ops-account-lifecycle.md - Domain:落实
UserStatus·AccountStateTransition - API 意图:
POST /admin/users/:id/status·GET .../status-transitions - C 端:非
active→ DeviceAuth/Bearer 拒绝 - RBAC additive:
admin.users.status.write - contract_diff:
docs/CONTRACT_DIFF/ECR-013B.yaml(P0) - 不含 soft-delete / UGC / 真支付
Motivation
users.status 已存在但无运营迁移与会话阻断;013A 权限门禁就绪后可落地最小风控闭环。
Scope
Allowed
- Spec L0–L4 · Domain 对齐 · BD Draft · AC · feature-map §7 · TRACEABILITY · STATE · TASK
Forbidden(Non-goals)
- (实现轮已授权)soft-delete 仍禁;真支付 · UGC · Prompt
- soft-delete · GDPR 擦除
- 真支付 · UGC · Prompt · Crisis 深化
Risk
| Risk | Mitigation |
|---|---|
| 误封超级用户/自测号 | reason 必填;Audit + transitions;可回迁 active |
| 与 session 缓存不一致 | 每次请求读 User.status(本切片不引入长缓存) |
| 权限码遗漏种子 | migration 写入 super_admin;integration 覆盖 |
Acceptance Criteria
见 Spec ops-account-lifecycle.md L4:AC-F-01..04 · AC-S-01..04 · AC-P-01 · AC-O-01..02
契约轮完成标准:
- L0–L4 填满
- contract_diff 已交
- BD Draft + HANDOFF(禁 coding)
- Human Approve ECR+BD + Coding Start Authorization
- Implemented + TEST_REPORT
- Reviewer Closed
Rollback
- 契约轮:废弃 Draft
- 实现轮:down migration + 回退 DeviceAuth 检查
Linked
- Feature Spec:
.ai/product/feature-spec/ops-account-lifecycle.md - PRODUCT_SPEC:
docs/PRODUCT_SPEC/ECR-013B-account-lifecycle.md - ENGINEERING_SPEC:
docs/ENGINEERING_SPEC/ECR-013B-account-lifecycle.md - BACKEND_DESIGN:
docs/BACKEND_DESIGN/BD-2026-013B-account-lifecycle.md - CONTRACT_DIFF:
docs/CONTRACT_DIFF/ECR-013B.yaml - Parent: WAVE0-FROZEN · Predecessor: ECR-013A