Module: Legion::Extensions::Metering::Runners::CostOptimizer

Extended by:
CostOptimizer
Included in:
CostOptimizer
Defined in:
lib/legion/extensions/metering/runners/cost_optimizer.rb

Instance Method Summary collapse

Instance Method Details

#analyze_costs(window_days: 7, top_n: 10) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/legion/extensions/metering/runners/cost_optimizer.rb', line 10

def analyze_costs(window_days: 7, top_n: 10)
  drivers = collect_cost_data(window_days: window_days)
  return { status: 'no_data', window_days: window_days, cost_drivers: [], recommendations: [] } if drivers.empty?

  top_drivers = drivers.sort_by { |d| -(d[:total_cost] || 0) }.first(top_n)
  recommendations = generate_recommendations(top_drivers)

  {
    status:          'analyzed',
    window_days:     window_days,
    cost_drivers:    top_drivers,
    recommendations: recommendations[:recommendations] || []
  }
end