Repository navigation
Commit a8186da
committed
fix(stats): 明细清理不得截断小时汇总(边界小时缩水)
purge_expired 按「now - 90天」精确切点删明细,而 rollup_hourly 对整行是
REPLACE 语义。边界那一小时被删掉一半后,下一轮 rollup 会把汇总行覆盖成
「剩下的那一半」,被删部分永久丢失(明细已不在,无从找回)。
实测(同一小时内 100+10 tokens):purge 后 usage_hourly 从 110/2 变成 10/1。
- purge_expired 切点向上对齐到小时边界,只删「整个小时都已过期」的明细,
保证「仍有明细的小时保有全部明细」,REPLACE 语义下重算才精确
- 代价:明细最多多留 1 小时
- rollup_hourly docstring 写明这个前提,避免以后有人改回精确切点
- 回归测试:同一小时一条过期一条未过期 → 汇总保持 110/21 parent f0b217b commit a8186da
2 files changed
Lines changed: 34 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
111 | 111 | | |
112 | 112 | | |
113 | 113 | | |
114 | | - | |
115 | | - | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
116 | 125 | | |
117 | 126 | | |
118 | 127 | | |
| |||
122 | 131 | | |
123 | 132 | | |
124 | 133 | | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
125 | 137 | | |
126 | 138 | | |
127 | 139 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1049 | 1049 | | |
1050 | 1050 | | |
1051 | 1051 | | |
| 1052 | + | |
| 1053 | + | |
| 1054 | + | |
| 1055 | + | |
| 1056 | + | |
| 1057 | + | |
| 1058 | + | |
| 1059 | + | |
| 1060 | + | |
| 1061 | + | |
| 1062 | + | |
| 1063 | + | |
| 1064 | + | |
| 1065 | + | |
| 1066 | + | |
| 1067 | + | |
| 1068 | + | |
| 1069 | + | |
| 1070 | + | |
| 1071 | + | |
1052 | 1072 | | |
1053 | 1073 | | |
1054 | 1074 | | |
| |||
0 commit comments