- .gitea/workflows/ci.yml:后端 gofmt/vet/test + 前端 lint/test/build 双 job 门禁 - vitest + @testing-library + jsdom 落地,14 个命脉用例:useListQuery 乱序丢弃/卸载中止、 http.ts 401 单飞刷新+队列重放+失败登出+silent 直拒、审计防抖、StepDeploy 部署目标、query-utils - 版本注入断裂修复:main 补 buildTime/gitCommit 符号,build.sh/Dockerfile 注入 main.version, /health 返回真实版本,前端 package.json 版本对齐 2.0.0 - gofmt 清零(8 个存量未格式化文件)
31 lines
1.5 KiB
Go
31 lines
1.5 KiB
Go
package models
|
|
|
|
import "time"
|
|
|
|
// DailyVolumeSnapshot 每日日志量快照(平台自己留存的历史)。
|
|
//
|
|
// 为什么必须落库:
|
|
//
|
|
// Loki 的 retention_period 是 24 小时(运维可改,但默认就该短),
|
|
// 意味着「近 7 天每日日志量」直接查 Loki 时,只有最近 1 天有数据,
|
|
// 其余 6 天是空的 —— 界面上看着像坏了,实际是数据已经不在了。
|
|
// 想要 30 天 / 1 年趋势,只能在数据被删前每天抓一次存进平台库。
|
|
//
|
|
// 粒度说明:
|
|
// - 只按「数据源 + 命名空间」存。index/volume 系列接口只能按 selector 标签聚合,
|
|
// 拿不到按 app 的拆分(Loki 3.4 不支持 aggregateBy),
|
|
// 所以按 app 的历史量暂时无法落库,应用维度请看实时排行(有 20~30s 成本)。
|
|
// - 每天一条,日期用**本地时区**的 YYYY-MM-DD,避免跨时区对不上。
|
|
type DailyVolumeSnapshot struct {
|
|
ID uint `json:"id"`
|
|
Date string `json:"date"` // YYYY-MM-DD(本地时区)
|
|
SourceID uint `json:"sourceId"` // 数据源
|
|
Namespace string `json:"namespace"` // "" 表示该数据源全量
|
|
Bytes int64 `json:"bytes"` // 日志体积
|
|
Entries int64 `json:"entries"` // 日志条数
|
|
// Partial 该日期是否为"不完整的一天"(当天抓取时还没过完)。
|
|
// 前端用它区分"真实低峰"和"只统计到一半"。
|
|
Partial bool `json:"partial"`
|
|
CapturedAt time.Time `json:"capturedAt"`
|
|
}
|