Files
junhong_cmp_fiber/openspec/changes/fix-depleted-package-display/design.md
break 3c371ab88a
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m51s
修复已用完套餐展示
2026-09-08 17:19:30 +08:00

1.5 KiB

Context

现有资产信息组装只查询 status=1 的主套餐。套餐达到有效业务阈值会变为 status=2,但仍未到期;此时 C 端资产信息把套餐摘要投影为无套餐零值。

Goals / Non-Goals

Goals:

  • 让 C 端资产信息对 status IN (1,2) 的当前主套餐使用同一套摘要投影。
  • 维持既有主套餐选择顺序与空套餐响应形状。

Non-Goals:

  • 不改变虚流量耗尽阈值或任何套餐状态流转。
  • 不改变待生效、已过期、已失效套餐的展示规则。
  • 不修改套餐历史接口、价格、续费资格、Schema 或迁移。

Decisions

  • 将资产信息使用的主套餐查询语义扩展为 status IN (1,2),并仅限 master_usage_id IS NULL。两种状态都是当前生命周期内占位的主套餐;已有生命周期与到期扫描也以这两个状态共同处理。
  • 保留既有 priority ASC, activated_at ASC 排序,避免多记录异常时改变当前选择结果。
  • 套餐摘要继续直接使用选中的 PackageUsage 快照及统一流量指标计算,避免针对已用完状态复制或重算数据。

Risks / Trade-offs

  • B1 的 current_package_* 字段会从零值变为已用完套餐数据;这是用户要求的兼容性行为修正,前端需按已用完状态展示而非将有使用记录视为可继续使用。
  • 若存量数据同时存在多条 status IN (1,2) 主套餐,接口沿用既有排序选第一条;本变更不修复该数据不变量问题。