Skip to content

feat: 历史接口返回 step,即每个点覆盖的秒数 - #86

Merged
stqfdyr merged 3 commits into
mainfrom
feat/history-step
Oct 1, 2026
Merged

stqfdyr merged 3 commits into
mainfrom
feat/history-step

Conversation

@stqfdyr

@stqfdyr stqfdyr commented Oct 1, 2026 •

Copy link
Copy Markdown
Collaborator

/api/nodes/{id}/metrics 的响应加上 step:每个点覆盖的秒数。

  • 7 天以内是 60 的倍数,更宽的窗口是 3600 的倍数,与服务端分桶用的是同一个值
  • minutes 的满额是 step / 60,主题此前只能从相邻时间戳推算,窗口里只有一个点时推不出来
  • 窗口起点向下对齐到 step:分桶从 epoch 对齐,起点落在桶中间时首个点只覆盖一部分,minutes 达不到满额。点的时间戳不变,只是首个点的数据补全了
  • 最后一个点是进行中的时段,minutes 只算到当前
  • 新增字段,旧主题不受影响

测试

  • cargo fmt --check、cargo clippy --all-targets -- -D warnings、cargo test(132 个)通过
  • 保留期窗口的测试加断言:7 天窗口 step 为 420(1440 点预算下 7 分钟一个点),30 天窗口为 3600
  • 窗口预算的测试加断言:节点每分钟都有数据时,1 小时到 169 小时各窗口的首个点 minutes 都是满额,且没有点早于窗口起点;去掉对齐时它失败

配套:文档 monitor-probe/monitor-document#34

`/api/nodes/{id}/metrics` 的响应加上 `step`。`minutes` 的满额是 `step / 60`,主题此前只能从相邻时间戳推算,窗口里只有一个点时推不出来。新增字段,旧主题不受影响。
- 分桶按 `ts / step` 从 epoch 对齐,窗口起点改为向下对齐到 `step`,首个点覆盖完整的一段,满额 `minutes` 与 `step / 60` 一致
- 注明最后一个点是进行中的时段,`minutes` 只算到当前
@stqfdyr
stqfdyr merged commit d877d88 into main Oct 1, 2026
1 check passed
@stqfdyr
stqfdyr deleted the feat/history-step branch October 1, 2026 07:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant