opsx
63dd491c5b
fix(daily-volume): 历史快照的 partial 自动修正 + 三个回归测试
=== 现象 ===
仓库里 6 条快照 partial 全是 true(10-27 到 10-30),前端把昨天的柱子
也画成虚线空心,看着像"每天都在采样中"。
=== 根因 ===
早期实现把两件事都塞进 partial:「今天还没过完」和「起点超出 24h」。
10-27/10-28 的数据现在已经被 retention 删掉、永远不会再被抓一次,
所以这两条错误标记会永久留在库里。
=== 修法 ===
prune 里加幂等修正:过去的天,只有快照是**在那天结束之后**才抓的
(说明抓到的是完整一天)才改成 partial=false;当天中途抓的继续保持 partial
(那时确实只有半天,不能伪装成完整数据)。
=== 测试(3/3 PASS)===
TestPruneDailyVolumeNormalizesPartialAndDropsExpired
· 昨天结束之后抓的 → partial=false
· 前天中途抓的 → 保持 partial=true
· 今天 → 保持 partial=true
· 超留存期 → 被清理
· 条数不被清理流程清空
TestUpsertVolumeSnapshotKeepsEntries 刷新体积不清空已抓到的条数
TestGetDailyVolumeHistoryReturnsAllDaysWithMissing 始终返回 days 个点,缺的标 Missing 不伪造 0
go vet ./services/ ./models/ 干净;go test ./services/ 全绿。
2026-10-30 16:56:39 +00:00
..
2026-10-29 03:38:30 +00:00
2026-10-30 03:42:03 +00:00
2026-10-30 16:35:35 +00:00
2026-10-29 04:16:52 +00:00
2026-10-27 17:11:38 +08:00
2026-10-27 17:11:38 +08:00
2026-10-29 04:16:52 +00:00
2026-10-27 17:11:38 +08:00
2026-10-30 01:17:26 +08:00
2026-10-28 20:27:48 +00:00
2026-10-28 20:01:38 +00:00
2026-10-28 20:01:38 +00:00
2026-10-30 16:10:51 +00:00
2026-10-30 16:10:51 +00:00
2026-10-25 21:28:32 +08:00
2026-10-25 21:28:32 +08:00
2026-10-29 04:16:52 +00:00
2026-10-30 16:03:24 +00:00
2026-10-29 04:16:52 +00:00
2026-10-30 16:56:39 +00:00
2026-10-30 16:56:39 +00:00
2026-10-28 17:05:57 +00:00
2026-10-27 17:11:38 +08:00
2026-10-27 17:11:38 +08:00
2026-10-25 21:28:32 +08:00
2026-10-29 15:16:18 +08:00
2026-10-29 13:02:11 +08:00
2026-10-30 15:28:30 +00:00
2026-10-29 16:36:21 +08:00
2026-10-28 18:41:39 +00:00
2026-10-28 20:01:38 +00:00
2026-10-30 01:17:26 +08:00
2026-10-27 17:11:38 +08:00
2026-10-25 21:28:32 +08:00
2026-10-27 17:11:38 +08:00
2026-10-29 04:16:52 +00:00
2026-10-29 04:16:52 +00:00
2026-10-27 17:11:38 +08:00
2026-10-27 17:11:38 +08:00
2026-10-28 22:43:57 +08:00
2026-10-27 17:11:38 +08:00
2026-10-27 17:11:38 +08:00
2026-10-30 16:46:40 +00:00
2026-10-30 15:28:30 +00:00
2026-10-29 13:02:11 +08:00
2026-10-30 15:41:38 +00:00
2026-10-30 15:41:38 +00:00
2026-10-29 13:29:25 +08:00
2026-10-27 17:11:38 +08:00
2026-10-27 17:11:38 +08:00
2026-10-28 17:58:30 +00:00
2026-10-27 17:11:38 +08:00
2026-10-28 21:27:01 +00:00
2026-10-27 17:11:38 +08:00
2026-10-28 22:54:12 +00:00
2026-10-30 16:03:24 +00:00
2026-10-29 13:02:11 +08:00
2026-10-29 13:02:11 +08:00
2026-10-28 18:41:39 +00:00
2026-10-27 04:16:55 +00:00
2026-10-28 20:27:48 +00:00
2026-10-28 20:27:48 +00:00
2026-10-29 04:16:52 +00:00
2026-10-29 04:16:52 +00:00
2026-10-29 14:48:25 +08:00
2026-10-28 17:58:30 +00:00
2026-10-27 17:11:38 +08:00
2026-10-29 04:16:52 +00:00
2026-10-27 17:11:38 +08:00
2026-10-30 01:17:26 +08:00