docs(ECR-013B): 启动 AccountLifecycle 契约定义

Human Start Authorization:UserStatus 状态机 Spec/BD/contract_diff;
禁止 coding,待 Approve + coding Start Authorization。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
jackyu66git
2026-08-07 17:23:04 +08:00
co-authored by Cursor
parent b5a05941d9
commit f75b42397f
17 changed files with 549 additions and 9 deletions
+68
View File
@@ -0,0 +1,68 @@
# ECR-013B
**Title:** AccountLifecycleUserStatus 状态机 · 运营启停/封禁 · C 端拒绝)
**Status:** Draft
**Date:** 2026-08-07
**Start Authorization:** 2026-08-07Human · Contract Definition
**Parent:** WAVE0-FROZEN (`27f27a1`)
**Predecessor:** ECR-013A **Closed**
**Change Level: L2**(行为:账户状态强制;栈与分层不变)
## Change
1. Active Feature Spec`.ai/product/feature-spec/ops-account-lifecycle.md`
2. Domain:落实 `UserStatus` · `AccountStateTransition`
3. API 意图:`POST /admin/users/:id/status` · `GET .../status-transitions`
4. C 端:非 `active` → DeviceAuth/Bearer **拒绝**
5. RBAC additive`admin.users.status.write`
6. **contract_diff**`docs/CONTRACT_DIFF/ECR-013B.yaml`P0
7. **不含** soft-delete / UGC / 真支付
## Motivation
`users.status` 已存在但无运营迁移与会话阻断;013A 权限门禁就绪后可落地最小风控闭环。
## Scope
### Allowed
- Spec L0L4 · Domain 对齐 · BD Draft · AC · feature-map §7 · TRACEABILITY · STATE · TASK
### ForbiddenNon-goals
- coding · migration 文件 · DeviceAuth 实现改动(待 Approve + coding Start Authorization
- soft-delete · GDPR 擦除
- 真支付 · UGC · Prompt · Crisis 深化
## Risk
| Risk | Mitigation |
|------|------------|
| 误封超级用户/自测号 | reason 必填;Audit + transitions;可回迁 active |
| 与 session 缓存不一致 | 每次请求读 User.status(本切片不引入长缓存) |
| 权限码遗漏种子 | migration 写入 super_adminintegration 覆盖 |
## Acceptance Criteria
见 Spec `ops-account-lifecycle.md` L4AC-F-01..04 · AC-S-01..04 · AC-P-01 · AC-O-01..02
契约轮完成标准:
- [x] L0L4 填满
- [x] contract_diff 已交
- [x] BD Draft + HANDOFF(禁 coding
- [ ] Human **Approve** ECR+BD → 方可 Start Authorization coding
## 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