Skip to content

Commit 91c241c

Browse files
committed
Fix Prometheus metrics lint and specs
1 parent 89a99f5 commit 91c241c

7 files changed

Lines changed: 369 additions & 298 deletions

File tree

app/services/metrics/location_health_calculator.rb

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,50 +2,54 @@
22

33
module Metrics
44
class LocationHealthCalculator < ApplicationService
5-
def call(event)
6-
return 0 unless event.active?
5+
def initialize(event)
6+
@event = event
7+
end
8+
9+
def call
10+
return 0 unless @event.active?
711

812
factors = []
913

10-
factors << calculate_activity_frequency_factor(event)
11-
factors << calculate_volunteer_consistency_factor(event)
12-
factors << calculate_athlete_retention_factor(event)
13-
factors << calculate_results_quality_factor(event)
14+
factors << calculate_activity_frequency_factor
15+
factors << calculate_volunteer_consistency_factor
16+
factors << calculate_athlete_retention_factor
17+
factors << calculate_results_quality_factor
1418

15-
factors.sum.to_f / factors.size * 100
19+
factors.sum.to_f / factors.size
1620
end
1721

1822
private
1923

20-
def calculate_activity_frequency_factor(event)
24+
def calculate_activity_frequency_factor
2125
six_months_ago = Date.current - 6.months
22-
recent_activities = Activity.published.where(event: event, date: six_months_ago..).count
26+
recent_activities = Activity.published.where(event: @event, date: six_months_ago..).count
2327
(recent_activities.to_f / 26.0 * 100).clamp(0, 100)
2428
end
2529

26-
def calculate_volunteer_consistency_factor(event)
30+
def calculate_volunteer_consistency_factor
2731
recent_volunteers = Volunteer.joins(:activity)
28-
.where(activity: { event: event, published: true, date: (Date.current - 6.months).. })
32+
.where(activity: { event: @event, published: true, date: (Date.current - 6.months).. })
2933
.distinct.count(:athlete_id)
3034
total_volunteers = Volunteer.joins(:activity)
31-
.where(activity: { event: event, published: true })
35+
.where(activity: { event: @event, published: true })
3236
.distinct.count(:athlete_id)
3337

3438
return 0 if total_volunteers.zero?
3539

3640
(recent_volunteers.to_f / total_volunteers * 100).clamp(0, 100)
3741
end
3842

39-
def calculate_athlete_retention_factor(event)
43+
def calculate_athlete_retention_factor
4044
six_months_ago = Date.current - 6.months
41-
total_athletes = event.athletes.count
45+
total_athletes = @event.athletes.count
4246

4347
recent_athletes = Result.joins(:activity)
44-
.where(activity: { event: event, published: true, date: six_months_ago.. })
48+
.where(activity: { event: @event, published: true, date: six_months_ago.. })
4549
.distinct.count(:athlete_id)
4650

4751
returning_athletes = Result.joins(:activity)
48-
.where(activity: { event: event, published: true })
52+
.where(activity: { event: @event, published: true })
4953
.group(:athlete_id)
5054
.having('COUNT(*) > 1')
5155
.distinct.count(:athlete_id)
@@ -58,18 +62,15 @@ def calculate_athlete_retention_factor(event)
5862
).clamp(0, 100)
5963
end
6064

61-
def calculate_results_quality_factor(event)
65+
def calculate_results_quality_factor
6266
recent_results = Result.joins(:activity)
63-
.where(activity: { event: event, published: true, date: (Date.current - 3.months).. })
67+
.includes(:athlete)
68+
.where(activity: { event: @event, published: true, date: (Date.current - 3.months).. })
6469

6570
total = recent_results.count
6671
return 100 if total.zero?
6772

68-
incorrect = Result.joins(:activity)
69-
.where(activity: { event: event, published: true })
70-
.where(
71-
'total_time IS NULL OR athlete_id IS NOT NULL AND (name IS NULL OR gender IS NULL)',
72-
).count
73+
incorrect = recent_results.count { |result| !result.correct? }
7374

7475
(1.0 - (incorrect.to_f / total)) * 100
7576
end

0 commit comments

Comments
 (0)