Files
junhong_cmp_fiber/openspec/specs/traffic-query-service/spec.md
huang cebcada950
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m16s
refactor: 流量系统重构 — 增量累加算法 + 日粒度缓冲 + 旧详单清理
核心改造:
- 增量算法:流量计算从覆盖式改为增量累加(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字段、数据初始化、日流量表)
2026-03-30 09:59:30 +08:00

16 lines
816 B
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 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 和查询逻辑。