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

1.6 KiB
Raw Blame History

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.gointernal/service/refund/service.go(列表与详情投影)、internal/service/refund/attempt_query.go 同目录新增套餐使用批量读取、internal/exporter/refund_scene.go。无迁移、无接口路径变化、无第三方交互;导出新增两列会改变既有导出文件的列次序与列数。