Files
junhong_cmp_fiber/openspec/changes/package-price-fallback-and-platform-gift-policy/实施基线与手工验证清单.md
huang 37b4483183
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m55s
赠送套餐逻辑
2026-04-28 17:40:06 +08:00

99 lines
4.0 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.
# 实施基线与手工验证清单
## 一、当前受影响接口与链路
### 1. 后台套餐管理
- `GET /api/admin/packages`
- `GET /api/admin/packages/:id`
- `POST /api/admin/packages`
- `PUT /api/admin/packages/:id`
- `PUT /api/admin/packages/:id/shelf-status`
- `PUT /api/admin/packages/:id/retail-price`
### 2. C 端可购套餐与下单
- `GET /api/c/v1/asset/packages?identifier=xxx`
- C 端创建订单链路(`internal/service/client_order/service.go`
- 充值后自动购包链路(`internal/task/auto_purchase.go`
### 3. 后台订单与发放链路
- 后台创建订单(`internal/service/order/service.go`
- 套餐激活链路(`internal/service/order/service.go``internal/service/package/activation_service.go`
### 4. 代理授权与分配
- 系列授权创建/维护(`internal/service/shop_series_grant/service.go`
- 批量分配(`internal/service/shop_package_batch_allocation/service.go`
## 二、当前受影响数据表
- `tb_package`:套餐主数据,当前仅有 `cost_price``suggested_retail_price`
- `tb_shop_package_allocation`:代理分配记录,当前仅有 `cost_price``retail_price`
- `tb_order`:订单主表
- `tb_order_item`:订单价格快照
- `tb_package_usage`:套餐使用记录快照
- `tb_shop_package_allocation_price_history`:当前仅记录成本价变更历史
## 三、回滚点与历史数据来源
### 1. 回滚点
- 迁移文件回滚:撤销新增字段、清理人工复核清单表
- Service 层回滚:恢复到直接读取 `suggested_retail_price` / `retail_price` 的旧逻辑
- 发放策略回滚:撤销后台赠送订单专属分支,恢复统一后台订单逻辑
### 2. 历史数据判定来源
- `tb_package.suggested_retail_price`
- `tb_shop_package_allocation.retail_price`
- `tb_order_item.unit_price`
- `tb_order.total_amount` / `tb_order.actual_paid_amount`
- `tb_package_usage.paid_amount`
- 后台创建订单记录(用于识别“发放=后台创建订单”的赠送语义)
## 四、改动前诊断基线
### 1. 无阻塞诊断错误的核心文件
- `internal/model/package.go`
- `internal/service/purchase_validation/service.go`
- `internal/service/client_order/service.go`
- `internal/task/auto_purchase.go`
- `internal/service/shop_package_batch_allocation/service.go`
- `internal/service/shop_series_grant/service.go`
### 2. 已知基线提示(非本次改动引入)
- `internal/service/order/service.go` 存在若干 `QF1003` 提示、`unusedparams` 提示和既有 `nilness` warning作为改动前基线保留
- `internal/handler/app/client_asset.go` 存在 `unusedfunc` 基线提示
## 五、手工验证清单
### 1. 后台套餐配置
- 创建普通可售套餐,建议售价留空,保存成功
- 创建普通可售套餐,建议售价填 `0`,保存失败
- 创建赠送套餐,建议售价填 `0`,保存成功
- 编辑普通可售套餐将建议售价改成 `0`,保存失败
- 详情页/编辑页能区分“未配置价格”和“赠送 0 价”
### 2. C 端可购列表
- 平台渠道普通套餐未配置建议售价时,列表显示成本价
- 代理渠道分配记录未配置零售价时,列表显示成本价
- 赠送套餐不出现在可购列表
- 无主套餐时,加油包仍然不可见
### 3. 下单与自动购包
- C 端普通套餐下单按生效价落单
- H5/后台普通购买接口无法购买赠送套餐
- 自动购包命中赠送套餐时被拦截
- 同一订单仍禁止正式套餐和加油包混买
### 4. 后台发放(走创建订单)
- 平台后台可为目标资产创建赠送订单并激活套餐
- 赠送订单无需支付凭证,不产生正常购买语义
- 赠送加油包必须已有主套餐,否则发放失败
### 5. 代理授权与分配
- 代理授权列表不展示赠送套餐
- 系列授权新增赠送套餐失败
- 批量分配不会把赠送套餐分配给代理
### 6. 迁移与历史数据
- 迁移后能区分未配置价格、赠送 0 价、已配置非 0
- 历史模糊 0 数据进入人工复核清单
- 历史快照查询不再把普通未配置价格当成显式 0 售卖价