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
|