Files
junhong_cmp_fiber/.scratch/ur40-off-shelf-package-renewal/issues/03-current-package-renewal-projection.md
2026-07-22 17:49:25 +09:00

19 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 03 — 当前套餐提供下架续费入口
**What to build:** 当前资产所有人查看资产信息时,可以获得当前套餐的稳定套餐 ID 和服务端购买资格。当前渠道已下架但存在真实有效历史时,当前套餐明确显示为仅限该资产续费;资格不成立时返回不可购买及稳定中文原因。
**Blocked by:** 01 — 建立统一套餐可售决策与真实历史资格
**Status:** ready-for-agent
**架构通道:** Query。
**完整业务边界:** 本票只迁移和收口 `GET /api/c/v1/asset/info` 中当前套餐的读取与 DTO 投影,新增稳定 `current_package_id` 及购买资格契约。明确不修改资产实时状态、钱包、Gateway 刷新或订单流程,不实现前端页面。
- [ ] 查询继续执行个人客户认证、资产解析、当前有效绑定和当前 generation 校验,不允许上一世代或其他客户的套餐事实进入投影。
- [ ] 当前套餐区域增加稳定 `current_package_id``can_purchase``purchase_mode``disabled_reason`;续费命令依赖套餐 ID不使用 `current_package_usage_id` 作为授权凭证。
- [ ] 当前渠道正常在售且满足既有规则时返回 `can_purchase=true, purchase_mode=normal`;渠道下架且历史资格成立时返回 `can_purchase=true, purchase_mode=renew_only`
- [ ] 套餐禁用、历史资格不存在、渠道未授权、价格异常或既有组合规则不成立时返回 `can_purchase=false, purchase_mode=disabled` 及稳定中文原因。
- [ ] 无当前套餐时保持现有空值兼容语义,不伪造套餐 ID 或续费入口,并返回明确不可购买决策。
- [ ] HTTP 集成测试覆盖在售当前套餐、平台与代理渠道下架续费、禁用、无历史、退款、解绑、转手及 generation 变化,验证统一响应和字段枚举。