refactor: 流量系统重构 — 增量累加算法 + 日粒度缓冲 + 旧详单清理
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m16s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m16s
核心改造: - 增量算法:流量计算从覆盖式改为增量累加(gateway - lastReading),支持上游运营商重置检测 - 日流量缓冲:insertDataUsageRecord 改为 Redis INCRBYFLOAT,每日凌晨落盘到 tb_card_daily_usage - 运营商:新增 data_reset_day 字段(联通=27,其余=1) - IoT卡:新增 last_gateway_reading_mb 字段存储上次网关读数 - 查询层:新建 TrafficQueryService 合并 Redis(今日)+ DB(历史)数据源 - 清理:删除 DataUsageRecord model/store,移除 polling_handler 旧引用 迁移:000094-000097(carrier字段、iot_card字段、数据初始化、日流量表)
This commit is contained in:
15
openspec/specs/traffic-query-service/spec.md
Normal file
15
openspec/specs/traffic-query-service/spec.md
Normal file
@@ -0,0 +1,15 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: 统一流量查询服务
|
||||
`TrafficQueryService.GetDailyUsage()` SHALL 合并 Redis(今日)和 DB(历史)两段数据,返回指定日期范围内的每日流量列表。
|
||||
|
||||
#### Scenario: 查询含今日的日期范围
|
||||
- **WHEN** 查询 2026-03-25 到 2026-03-28(今天)
|
||||
- **THEN** 系统 SHALL 从 `tb_card_daily_usage` 查 3/25~3/27,从 Redis 查 3/28,合并排序后返回
|
||||
|
||||
#### Scenario: 查询纯历史日期范围
|
||||
- **WHEN** 查询 2026-03-01 到 2026-03-20
|
||||
- **THEN** 系统 SHALL 仅从 `tb_card_daily_usage` 查询,不访问 Redis
|
||||
|
||||
### Requirement: CardDailyUsageStore 共用
|
||||
落盘任务(`daily_traffic_flush.go`)和查询服务(`TrafficQueryService`)SHALL 共用同一个 `CardDailyUsageStore`,避免重复实现 UPSERT 和查询逻辑。
|
||||
Reference in New Issue
Block a user