## 0. 验收基线准备 - [x] 0.1 梳理后台 `asset-resolve / current-package / packages` 与 C 端 `asset/info / package-history` 的现有字段清单,并整理旧字段到新字段的替换矩阵,验证点包括逐接口比对返回 JSON 与 OpenAPI 文档。 - [x] 0.2 固化本次变更的手工验收基线:准备 PostgreSQL 核验 SQL、典型套餐样例(如 100/70/50→71.43、100/70/69→98.57)、接口回放样例,验证点包括所有样例都能复算出一致结果。 ## 1. 套餐流量语义与快照模型 - [x] 1.1 为 `tb_package_usage` 设计并新增虚总量/展示倍率/开关快照字段迁移,包含历史回填脚本,验证点包括迁移执行后新列存在、默认值正确、历史记录完成回填。 - [x] 1.2 更新 `internal/model/package.go` 与相关 DTO/注释,统一 `data_limit_mb=data real_total`、`data_usage_mb=real_used` 的内部语义,验证点包括模型字段、中文注释与 OpenSpec 设计文档一致。 - [x] 1.3 收紧套餐创建/更新校验,确保 `virtual_data_mb > 0 且 <= real_data_mb`,并同步统一内部展示倍率计算逻辑,验证点包括创建/更新接口对非法样例拒绝、合法样例正确落库。 ## 2. 写链路与耗尽阈值收口 - [x] 2.1 修改订单购包、自动购包、主套餐激活/排队激活路径,确保新建 `PackageUsage` 时同时写入虚总量与展示倍率快照,验证点包括主套餐、加油包、待实名激活三条路径的落库字段完整。 - [x] 2.2 重构 `package/usage_service` 的扣减逻辑,统一按 `effective_threshold_mb` 计算剩余额度和已用完状态,同时继续保持“加油包优先、主套餐兜底”,验证点包括 100/70 阈值样例和多加油包优先级样例都符合预期。 - [x] 2.3 重构 `stop_resume_service`、轮询触发和重置路径,统一按虚阈值/真总量判断耗尽与复机条件,验证点包括“主套餐达到虚阈值停机”“加油包仍有额度不停机”“新增有效加油包后自动复机”三类场景。 ## 3. 后台读链路与契约切换 - [x] 3.1 重构后台 `asset-resolve` 的流量摘要组装,仅返回当前主套餐的统一五字段与 `reduction_pct`,并返回 `current_package_usage_id`,验证点包括无主套餐返回空摘要、有主套餐返回新字段且不再混入旧字段。 - [x] 3.2 重构后台 `current-package` 与 `packages` 的 DTO 和 Service 组装逻辑,按 `package_usage_id` 返回统一五字段与 `reduction_pct`,并将无主套餐场景统一为 `200 + null`,验证点包括主套餐详情仅返回主套餐、历史列表包含主套餐和加油包的新字段集。 - [x] 3.3 更新后台 OpenAPI / 文档生成产物,移除 `package_total_mb`、`package_used_mb`、`virtual_limit_mb` 等旧字段描述,验证点包括 `docs/admin-openapi.yaml` 与新 DTO 一致且无遗留字段说明。 ## 4. C 端切换与范围约束 - [x] 4.1 重构 C 端 `asset/info` 的流量摘要字段,只返回当前主套餐的统一五字段、`reduction_pct` 与 `current_package_usage_id`,验证点包括旧字段移除后接口返回结构与 spec 一致。 - [x] 4.2 重构 C 端 `package-history` 的列表项字段,统一为 `package_usage_id + 五字段 + 比例字段`,验证点包括分页、generation 过滤和历史套餐展示都使用新语义。 - [x] 4.3 明确 customer-view total 聚合不属于本次 contract 收口范围,确保本次实现不新增 `total.virtual_used_mb` 或等价聚合字段,验证点包括 change 范围内无新 total 聚合契约、无相关 DTO 改造任务。 ## 5. 旧字段清理与最终验收 - [x] 5.1 删除后台/C 端读链路中对 `package_total_mb`、`package_used_mb`、`package_remain_mb`、`virtual_limit_mb`、`virtual_remain_mb`、旧式 `virtual_ratio` 展示语义以及确认废弃数据库旧列的依赖,验证点包括代码搜索结果不再存在这些旧展示字段的组装逻辑,迁移后数据库中对应旧列已被删除。 - [x] 5.2 更新 `docs/traffic-model-unification/流量模型统一改造方案.md`、相关功能总结和提案说明文档,使文字描述、公式和 DTO 名称与本次 OpenSpec 完全一致,验证点包括文档中的示例与接口返回公式一致。 - [ ] 5.3 执行最终手工验收:PostgreSQL 核对快照回填、轮询增量入套餐、虚已用公式、停复机逻辑和 B/C 端接口返回;验证点包括全部样例通过且无旧字段残留在最终 contract 中。