Files
junhong_cmp_fiber/openspec/changes/archive/2026-09-14-add-refund-package-usage-display/proposal.md
break 67893617fe
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m33s
feat(退款): AUG26-006 补充当前退款套餐已用量与总量
补齐 PRD §2.3.1「退款管理补充字段」:退款列表、详情与导出新增
「当前退款套餐已用量」与「当前退款套餐总量」两个纯展示字段。

- 套餐定位口径与退款套餐失效保持一致,按优先级取唯一一条:
  冻结的 package_usage_id(且属于该订单)→ 订单主套餐 → 订单任一套餐,
  同级按标识升序。不按当前世代或当前生效套餐推断;不按套餐状态过滤,
  使退款后套餐转已失效时仍能回看用量。
- 列表与详情用固定两次查询批量解析(按标识、按订单),查询次数不随条数增长;
  详情复用同一函数。解析不到套餐或记录已物理删除时返回 0,不阻断读取。
- 导出新增两列并改用同一优先级的 LATERAL 取法,不再依赖只按 r.package_usage_id
  的 join——生产库 1296 条退款仅 157 条带该字段,旧取法会让多数行显示零值。
- 不改变退款金额校验、冻结实收、套餐失效、接续、停机与佣金回溯任何规则。

验证:测试库 junhong_cmp_test 实测冻结记录、订单主套餐回退、记录缺失返回 0 三项
解析场景与「4 条退款固定 2 次查询」;并以同批 43 条退款对拍 Go 解析器与导出 SQL,
口径不一致 0 条;导出 43 行列数与表头一致。无迁移、无接口路径变化。
2026-09-14 12:11:55 +08:00

25 lines
1.6 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.
## Why
PRD §2.3.1 要求退款管理列表、详情与导出新增「当前退款套餐已用量」和「当前退款套餐总量」,供审批与运营判断退款合理性;已归档的 `add-refund-methods-and-original-route-refunds` 漏掉了这两个纯展示字段,当前列表、详情与导出均不返回套餐使用情况。
## What Changes
- 退款申请列表、详情与导出新增两个展示字段:当前退款套餐的真实已用量与真实总量(单位 MB
- 「当前退款套餐」按既定退款失效口径解析:优先取退款申请冻结的套餐使用记录;未冻结时取该退款关联订单的套餐使用记录(优先主套餐,其次任一),与 `InvalidatePackagesForRefund` 的定位口径一致。
- 两个字段只读展示:**BREAKING** 无(纯新增响应字段)。不改变退款金额校验、套餐失效、接驳下一套餐、停机评估、佣金回溯或渠道退款任何规则。
- 套餐使用记录缺失或已物理删除时两个字段返回 0不阻断列表、详情或导出。
## Capabilities
### New Capabilities
- 无。
### Modified Capabilities
- `order-refund-exchange`: 退款列表、详情与导出的可观察字段增加当前退款套餐的真实已用量与总量。
## Impact
影响退款查询投影与导出场景:`internal/model/dto/refund_dto.go``internal/service/refund/service.go`(列表与详情投影)、`internal/service/refund/attempt_query.go` 同目录新增套餐使用批量读取、`internal/exporter/refund_scene.go`。无迁移、无接口路径变化、无第三方交互;导出新增两列会改变既有导出文件的列次序与列数。