成本查询限窗过滤;桶级 PAR 放开列举
CI / test (push) Successful in 35s

This commit is contained in:
2026-07-21 19:26:33 +08:00
parent f40f2a20e8
commit 33e92a65e2
9 changed files with 93 additions and 19 deletions
+22 -1
View File
@@ -45,7 +45,28 @@ func (s *OciConfigService) Costs(ctx context.Context, id uint, q oci.CostQuery)
if err != nil {
return nil, err
}
return s.client.SummarizeCosts(ctx, cred, q)
items, err := s.client.SummarizeCosts(ctx, cred, q)
if err != nil {
return nil, err
}
return filterCostWindow(items, q.StartTime, q.EndTime), nil
}
// filterCostWindow 只保留落在请求窗口 [start, end) 内的行:Usage API 的
// HOURLY 粒度会把起点下扩到 UTC 日零点,返回窗口之外的整日数据。
func filterCostWindow(items []oci.CostItem, start, end time.Time) []oci.CostItem {
out := items[:0]
for _, it := range items {
if it.TimeStart == nil {
continue
}
ts := it.TimeStart.UTC()
if ts.Before(start) || !ts.Before(end) {
continue
}
out = append(out, it)
}
return out
}
// applyCostDefaults 填充缺省值并把时间对齐到粒度边界(Usage API 要求)。