Files
junhong_cmp_fiber/openspec/changes/add-asset-package-hierarchy/design.md
break 370fd3e67f
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 10m49s
update
2026-09-03 09:28:28 +08:00

1.7 KiB

Context

套餐使用记录已有 master_usage_id,不能为展示重复存储关系。

Decisions

  • 查询批量读取资产全部套餐使用,按 master_usage_id 内存分组并稳定排序。
  • 不改变套餐状态、金额或生命周期;缺失主记录只形成读模型异常项。

查询与响应契约

  • 后台资产详情及 H5 GET /api/c/v1/asset/package-history 保持既有资产权限、分页和套餐字段;不新增写接口、迁移、关联表或状态变更。查询需在资产范围内一次读取该资产全部相关 PackageUsage,不能按每个主套餐逐条查询加油包。
  • 响应主项包含原套餐使用字段、children 加油包数组和 expand_by_default;主项 master_usage_id 必须为 null。子项保留自身 package_usage_idmaster_usage_id、状态、购买创建时间、生效时间和原历史字段。
  • master_usage_id IS NULL 的记录为主套餐;关联存在的加油包嵌入对应主项。已生效加油包先按生效时间正序,待生效加油包后按购买创建时间正序;排序字段相同再按 package_usage_id 正序,保证后台和 H5 一致。
  • 主套餐只要有一个关联子项即 expand_by_default=true;无子项为 false。主套餐、子项失效、过期、用尽、退款或历史状态均不得删除或改写层级。
  • 加油包的 master_usage_id 指向物理不存在记录时,返回顶层异常项:保留原字段、relationship_status=master_missingrelationship_status_name=关联主套餐缺失children=[]expand_by_default=false;不得猜测替代主套餐或丢弃该项。

Verification

验证多主套餐、待生效/失效加油包、缺失主记录、后台/H5 数据范围和分页。