## Why 当前线上存在“卡流量已同步但套餐流量不变化”的问题,导致计费与停复机判断失真。该问题集中出现在绑定设备的卡和小流量高频上报场景,已经影响流量扣减准确性,需要优先修复。 ## What Changes - feature-001-traffic-deduction-carrier-routing:修正轮询流量扣减时的载体路由逻辑,避免固定按 `iot_card` 扣减导致设备级套餐无法命中。 - feature-002-traffic-deduction-fractional-precision:修正流量扣减精度,消除 `float64 -> int64` 截断造成的 `<1MB` 增量长期丢失。 - feature-003-traffic-field-semantics-clarify:明确字段语义与展示口径: - `current_month_usage_mb`:系统自然月累计流量(卡维度) - `last_gateway_reading_mb`:运营商当前周期累计读数(卡维度) - 保持现有分层架构与任务链路不变(Handler → Service → Store → Model),仅调整扣减判定与数据口径说明;无 BREAKING API 变更。 ## Capabilities ### New Capabilities - 无 ### Modified Capabilities - `polling-task-handlers`:`polling_carddata_handler` 在触发套餐扣减时,需支持“卡绑定设备时按设备载体命中套餐”而非固定卡载体。 - `package-usage-priority`:`DeductDataUsage` 需支持小数 MB 增量累计后扣减,保证小流量高频上报场景下扣减准确。 - `asset-queries`:资产流量字段语义说明补充,避免将 `current_month_usage_mb` 误用为运营商周期口径。 ## Impact - 受影响代码: - `internal/task/polling_carddata_handler.go` - `internal/service/package/usage_service.go` - `internal/service/iot_card/service.go` - `internal/model/dto/asset_dto.go`(描述语义) - 受影响数据: - `tb_package_usage.data_usage_mb` 的增长将更贴近上游真实增量(尤其是 <1MB 高频增量场景) - API 兼容性: - 无接口路径和结构变更 - 前端展示口径建议改为读取 `last_gateway_reading_mb` 表达“运营商周期累计流量” - 依赖与基础设施:无新增外部依赖、无数据库迁移。