## 1. 验证准备

- [x] 1.1 梳理现有价格读取、赠送发放和分配链路，整理一份手工验证清单，覆盖后台配置、C 端列表、下单、自动购包和授权发放。
- [x] 1.2 记录当前会受影响的接口与数据表，确认回滚点和历史数据来源，避免后续迁移时把未配置价格、赠送 0 价和旧的模糊 0 数据混在一起。
- [x] 1.3 对涉及的现有实现文件先跑一次 `lsp_diagnostics`，保留基线结果，作为改动前对比。

## 2. 数据模型与迁移

- [x] 2.1 为套餐及相关价格快照补充价格状态、赠送语义和平台专属标记的迁移设计，保持原始价格字段不变，并明确普通可售套餐不能显式配置 0。
- [x] 2.2 编写 golang-migrate 迁移文件，先加字段，再回填存量数据，确保历史记录能区分未配置价格、可明确识别的赠送 0 价和需要人工复核的旧 0 数据。
- [x] 2.3 补齐历史回填逻辑和回滚脚本，完成后用数据库核验确认字段状态、默认值、人工复核清单和历史记录数量一致。
- [x] 2.4 对迁移相关文件和模型定义运行 `lsp_diagnostics`，确认没有语法或引用错误。

## 3. 价格回退与展示链路

- [x] 3.1 提炼统一的生效价解析方法，确保普通可售套餐在建议零售价未配置时回退到成本价，同时保留原始值供配置页使用。
- [x] 3.2 更新后台套餐配置、编辑和详情返回值，只展示原始价格与价格状态，不把生效价写回配置字段。
- [x] 3.3 更新 C 端可购套餐列表、订单创建和自动购包链路，统一使用生效价累加、展示和落单。
- [ ] 3.4 对价格回退链路做接口回放和手工验收，确认未配置价格回退正确、普通可售套餐显式 0 被拒绝、赠送 0 保持赠送语义。
- [x] 3.5 对改动后的价格相关服务、处理器和任务文件运行 `lsp_diagnostics`。

## 4. 赠送套餐政策与授权发放

- [x] 4.1 在套餐授权与分配链路加入赠送语义校验，禁止代理拿到、转发或分配赠送套餐。
- [x] 4.2 在 C 端可购列表和购买校验里隐藏并拦截赠送套餐，确保用户无法通过自购路径获取。
- [x] 4.3 保留后台发放入口的赠送套餐授予能力，确保赠送加油包只能通过后台 grant 进入资产，同时在后台创建、编辑时拒绝非赠送套餐的显式 0。
- [ ] 4.4 对赠送政策相关的服务、接口和任务文件运行 `lsp_diagnostics`，并用正反例手工核验平台专属与不可自购规则。

## 5. 文档与最终验收

- [x] 5.1 更新接口文档、字段说明和变更说明，明确原始值、生效值、未配置价格、赠送 0 价和普通套餐显式 0 被拒绝的区别。
- [x] 5.2 重新整理一份最终验收清单，覆盖价格回退、赠送拦截、平台发放和历史迁移四类核心场景。
- [ ] 5.3 对所有改动文件做最终 `lsp_diagnostics`，再执行一次完整手工回归，确认没有遗漏的旧口径入口。
