mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: Ignored flags should not count in your accuracy score
This commit is contained in:
parent
c463a04c3f
commit
5bf3a00328
@ -59,19 +59,14 @@ class ReviewableScore < ActiveRecord::Base
|
|||||||
user_stat = user&.user_stat
|
user_stat = user&.user_stat
|
||||||
return 0.0 if user_stat.blank?
|
return 0.0 if user_stat.blank?
|
||||||
|
|
||||||
calc_user_accuracy_bonus(
|
calc_user_accuracy_bonus(user_stat.flags_agreed, user_stat.flags_disagreed)
|
||||||
user_stat.flags_agreed,
|
|
||||||
user_stat.flags_disagreed,
|
|
||||||
user_stat.flags_ignored
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.calc_user_accuracy_bonus(agreed, disagreed, ignored)
|
def self.calc_user_accuracy_bonus(agreed, disagreed)
|
||||||
agreed ||= 0
|
agreed ||= 0
|
||||||
disagreed ||= 0
|
disagreed ||= 0
|
||||||
ignored ||= 0
|
|
||||||
|
|
||||||
total = (agreed + disagreed + ignored).to_f
|
total = (agreed + disagreed).to_f
|
||||||
return 0.0 if total <= 5
|
return 0.0 if total <= 5
|
||||||
|
|
||||||
(agreed / total) * 5.0
|
(agreed / total) * 5.0
|
||||||
|
@ -14,11 +14,7 @@ class ReviewableScoreExplanationSerializer < ApplicationSerializer
|
|||||||
)
|
)
|
||||||
|
|
||||||
def user_accuracy_bonus
|
def user_accuracy_bonus
|
||||||
ReviewableScore.calc_user_accuracy_bonus(
|
ReviewableScore.calc_user_accuracy_bonus(object.flags_agreed, object.flags_disagreed)
|
||||||
object.flags_agreed,
|
|
||||||
object.flags_disagreed,
|
|
||||||
object.flags_ignored
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -107,10 +107,11 @@ RSpec.describe ReviewableScore, type: :model do
|
|||||||
user_stat.flags_disagreed = 2
|
user_stat.flags_disagreed = 2
|
||||||
expect(ReviewableScore.user_accuracy_bonus(user).floor(2)).to eq(3.33)
|
expect(ReviewableScore.user_accuracy_bonus(user).floor(2)).to eq(3.33)
|
||||||
|
|
||||||
|
# Ignored flags don't count
|
||||||
user_stat.flags_agreed = 121
|
user_stat.flags_agreed = 121
|
||||||
user_stat.flags_disagreed = 44
|
user_stat.flags_disagreed = 44
|
||||||
user_stat.flags_ignored = 4
|
user_stat.flags_ignored = 4
|
||||||
expect(ReviewableScore.user_accuracy_bonus(user).floor(2)).to eq(3.57)
|
expect(ReviewableScore.user_accuracy_bonus(user).floor(2)).to eq(3.66)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -137,7 +138,7 @@ RSpec.describe ReviewableScore, type: :model do
|
|||||||
user_stat.flags_agreed = 12
|
user_stat.flags_agreed = 12
|
||||||
user_stat.flags_disagreed = 2
|
user_stat.flags_disagreed = 2
|
||||||
user_stat.flags_ignored = 2
|
user_stat.flags_ignored = 2
|
||||||
expect(ReviewableScore.user_flag_score(user)).to eq(6.75)
|
expect(ReviewableScore.user_flag_score(user).floor(2)).to eq(7.28)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user