Files
LokiStack/frontend
opsx a14bdb5e07
CI / Backend (go vet + test) (push) Canceled after 0s
CI / Frontend (lint + build + test) (push) Canceled after 0s
fix(analysis): 每日量不再懒加载;按应用统计期间显示 loading(不再假装"没有数据")
用户的三个现象,对应三个独立缺陷:

=== 1. 每日日志量"一直没数据" ===
接口只读平台库,实测 **10ms**,却仍被 inView 懒加载门控。
ref 虽然挂在 DOM 上,但滚动判定在多层布局里不可靠 → enabled 一直 false
→ 请求根本不发 → 页面显示"暂无历史数据"。
改为:只要有数据源就加载(enabled = Boolean(sourceId))。
这个接口 10ms,没有任何理由懒加载。

=== 2. 排行/流图"打开没有数据,等很久也没 loading" ===
按应用统计要 10~15 秒(读日志内容,物理下限)。
但 loading 是**整页共用**的:索引类指标 100ms 就回来、
重查询还在跑时 loading 就已经变 false,
卡片于是渲染成"没有应用维度的数据"——用户以为查完了、没数据。
改为:
  - 新增 appsLoading,专门标记"按应用统计"这段重查询
  - 卡片在 appsLoading 期间显示 spinner + "正在按应用统计…"
  - loading 与 appsLoading 都在 finally 清理(成功/失败/取消都清)

=== 3. data 为 null 时整页空白 ===
原来 `) : !data || !sourceId ? null : (` 直接 return null,
首屏或重查询异常时是**整页空白**,和"没数据"无法区分。
改为显示 spinner + "正在按应用统计(需读取日志内容,通常 10~30 秒)"。

=== 关于"用 Go 定时任务统计每日总量"===
这个机制**早就存在**(services/daily_volume.go):
  - 启动 20s 后回补 + 每 30 分钟一次 ticker
  - 用 index/stats 取整天的条数与字节,**不读日志内容**,通常秒级
  - 快照写入平台库,保留 400 天
实测当前库内已有 4 天数据(10ms 返回):
  2026-10-27   32.5 GB
  2026-10-28   23.9 GB
  2026-10-29  133.6 GB
  2026-10-30  239.3 GB
问题只在"前端没去请求",不在采集侧。

实测(df3b477e6740):每日量接口 10ms 返回 4 天,Pod 1/1 Running。
2026-10-30 15:49:52 +00:00
..