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

20 lines
1.7 KiB
Markdown

## 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_id``master_usage_id`、状态、购买创建时间、生效时间和原历史字段。
-`master_usage_id IS NULL` 的记录为主套餐;关联存在的加油包嵌入对应主项。已生效加油包先按生效时间正序,待生效加油包后按购买创建时间正序;排序字段相同再按 `package_usage_id` 正序,保证后台和 H5 一致。
- 主套餐只要有一个关联子项即 `expand_by_default=true`;无子项为 `false`。主套餐、子项失效、过期、用尽、退款或历史状态均不得删除或改写层级。
- 加油包的 `master_usage_id` 指向物理不存在记录时,返回顶层异常项:保留原字段、`relationship_status=master_missing``relationship_status_name=关联主套餐缺失``children=[]``expand_by_default=false`;不得猜测替代主套餐或丢弃该项。
## Verification
验证多主套餐、待生效/失效加油包、缺失主记录、后台/H5 数据范围和分页。