Files
digital-psychology/.ai/product/feature-spec/ops-redemption-code.md
T
jackyu66gitandCursor 1eeb0b00e7 feat(ECR-015): RedemptionCode 兑换码并 Closed
批次生成/作废、C 端兑码延长会员;admin-h5 /codes。
Loop continuous。Next:ECR-016 UserIntelligence。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 18:16:13 +08:00

1.6 KiB
Raw Blame History

Feature Spec: 兑换码 RedemptionCodeOps · ECR-015

Status: ActiveLoop continuous · Approved · coding
Parent: WAVE0-FROZEN · Predecessor: ECR-014 Closed
Capability: CommerceEntitlement · BC: Membership_Orders
授权:docs/WAVE0/LOOP_AUTHORIZATION.md

Non-goals

真支付 · Entitlement 细权 · ask_pack 兑换 · UGC

L2

Entity 不变式
RedemptionBatch label · plan_code∈membership_plans · quantity 1..100
RedemptionCode code 唯一;status unused→redeemed|disabledredeemed 不可再兑

L3 API

Method Path Auth 语义
POST /admin/redemption-batches admin.membership.codes.write 批量生成
GET /admin/redemption-batches admin.membership.codes.read 批次列表
GET /admin/redemption-batches/:id/codes admin.membership.codes.read 码列表
POST /admin/redemption-codes/:id/disable admin.membership.codes.write 作废 unused
POST /membership/redeem DeviceAuth+已注册 兑码→延长会员

L4 AC

ID Then
AC-F-01 POST batch quantity=3 → 3 unused codes
AC-F-02 C端 redeem → membership active;码=redeemed
AC-F-03 再兑同一码 → 400
AC-F-04 disable unused → status=disabled;兑 → 400
AC-S-01 无 write → POST batch 403
AC-S-02 未登录兑码 → 401
AC-P-01 GET batches < 500ms
AC-O-01 生成 AuditLog redemption.batch.create
AC-O-02 兑换可追溯 redeemed_by

contract_diff: docs/CONTRACT_DIFF/ECR-015.yaml