Files
junhong_cmp_fiber/openspec/changes/refactor-traffic-model-semantics/tasks.md
huang fe4c545308
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m55s
修正数据
2026-04-27 18:10:08 +08:00

4.4 KiB
Raw Blame History

0. 验收基线准备

  • 0.1 梳理后台 asset-resolve / current-package / packages 与 C 端 asset/info / package-history 的现有字段清单,并整理旧字段到新字段的替换矩阵,验证点包括逐接口比对返回 JSON 与 OpenAPI 文档。
  • 0.2 固化本次变更的手工验收基线:准备 PostgreSQL 核验 SQL、典型套餐样例如 100/70/50→71.43、100/70/69→98.57)、接口回放样例,验证点包括所有样例都能复算出一致结果。

1. 套餐流量语义与快照模型

  • 1.1 为 tb_package_usage 设计并新增虚总量/展示倍率/开关快照字段迁移,包含历史回填脚本,验证点包括迁移执行后新列存在、默认值正确、历史记录完成回填。
  • 1.2 更新 internal/model/package.go 与相关 DTO/注释,统一 data_limit_mb=data real_totaldata_usage_mb=real_used 的内部语义,验证点包括模型字段、中文注释与 OpenSpec 设计文档一致。
  • 1.3 收紧套餐创建/更新校验,确保 virtual_data_mb > 0 且 <= real_data_mb,并同步统一内部展示倍率计算逻辑,验证点包括创建/更新接口对非法样例拒绝、合法样例正确落库。

2. 写链路与耗尽阈值收口

  • 2.1 修改订单购包、自动购包、主套餐激活/排队激活路径,确保新建 PackageUsage 时同时写入虚总量与展示倍率快照,验证点包括主套餐、加油包、待实名激活三条路径的落库字段完整。
  • 2.2 重构 package/usage_service 的扣减逻辑,统一按 effective_threshold_mb 计算剩余额度和已用完状态,同时继续保持“加油包优先、主套餐兜底”,验证点包括 100/70 阈值样例和多加油包优先级样例都符合预期。
  • 2.3 重构 stop_resume_service、轮询触发和重置路径,统一按虚阈值/真总量判断耗尽与复机条件,验证点包括“主套餐达到虚阈值停机”“加油包仍有额度不停机”“新增有效加油包后自动复机”三类场景。

3. 后台读链路与契约切换

  • 3.1 重构后台 asset-resolve 的流量摘要组装,仅返回当前主套餐的统一五字段与 reduction_pct,并返回 current_package_usage_id,验证点包括无主套餐返回空摘要、有主套餐返回新字段且不再混入旧字段。
  • 3.2 重构后台 current-packagepackages 的 DTO 和 Service 组装逻辑,按 package_usage_id 返回统一五字段与 reduction_pct,并将无主套餐场景统一为 200 + null,验证点包括主套餐详情仅返回主套餐、历史列表包含主套餐和加油包的新字段集。
  • 3.3 更新后台 OpenAPI / 文档生成产物,移除 package_total_mbpackage_used_mbvirtual_limit_mb 等旧字段描述,验证点包括 docs/admin-openapi.yaml 与新 DTO 一致且无遗留字段说明。

4. C 端切换与范围约束

  • 4.1 重构 C 端 asset/info 的流量摘要字段,只返回当前主套餐的统一五字段、reduction_pctcurrent_package_usage_id,验证点包括旧字段移除后接口返回结构与 spec 一致。
  • 4.2 重构 C 端 package-history 的列表项字段,统一为 package_usage_id + 五字段 + 比例字段验证点包括分页、generation 过滤和历史套餐展示都使用新语义。
  • 4.3 明确 customer-view total 聚合不属于本次 contract 收口范围,确保本次实现不新增 total.virtual_used_mb 或等价聚合字段,验证点包括 change 范围内无新 total 聚合契约、无相关 DTO 改造任务。

5. 旧字段清理与最终验收

  • 5.1 删除后台/C 端读链路中对 package_total_mbpackage_used_mbpackage_remain_mbvirtual_limit_mbvirtual_remain_mb、旧式 virtual_ratio 展示语义以及确认废弃数据库旧列的依赖,验证点包括代码搜索结果不再存在这些旧展示字段的组装逻辑,迁移后数据库中对应旧列已被删除。
  • 5.2 更新 docs/traffic-model-unification/流量模型统一改造方案.md、相关功能总结和提案说明文档,使文字描述、公式和 DTO 名称与本次 OpenSpec 完全一致,验证点包括文档中的示例与接口返回公式一致。
  • 5.3 执行最终手工验收PostgreSQL 核对快照回填、轮询增量入套餐、虚已用公式、停复机逻辑和 B/C 端接口返回;验证点包括全部样例通过且无旧字段残留在最终 contract 中。