ops_window_stats.go 747 B

123456789101112131415161718192021222324
  1. package service
  2. import (
  3. "context"
  4. "time"
  5. infraerrors "github.com/Wei-Shaw/sub2api/internal/pkg/errors"
  6. )
  7. // GetWindowStats returns lightweight request/token counts for the provided window.
  8. // It is intended for realtime sampling (e.g. WebSocket QPS push) without computing percentiles/peaks.
  9. func (s *OpsService) GetWindowStats(ctx context.Context, startTime, endTime time.Time) (*OpsWindowStats, error) {
  10. if err := s.RequireMonitoringEnabled(ctx); err != nil {
  11. return nil, err
  12. }
  13. if s.opsRepo == nil {
  14. return nil, infraerrors.ServiceUnavailable("OPS_REPO_UNAVAILABLE", "Ops repository not available")
  15. }
  16. filter := &OpsDashboardFilter{
  17. StartTime: startTime,
  18. EndTime: endTime,
  19. }
  20. return s.opsRepo.GetWindowStats(ctx, filter)
  21. }