fix(growth): rank the rate board by a smoothed score
Show the real percentage on the card, but sort with delta / (baseline + prior) so a small baseline cannot dominate. Same-day publishes stay off the rate board.
This commit is contained in:
1 parent
0f2ac612f5
commit
39a6537f67
14 files changed
+158
-16
No files matched your search
@@ -12,6 +12,7 @@ from reaction_board.analytics import ( # noqa: E402
|
||||
METRICS,
|
||||
age_days,
|
||||
compute_growth,
|
||||
smoothed_growth_rate,
|
||||
content_hours,
|
||||
eb_rate,
|
||||
effective_shrink_minutes,
|
||||
@@ -161,6 +162,19 @@ def test_compute_growth():
|
||||
assert negative.per_day == -5.0
|
||||
|
||||
|
||||
def test_smoothed_growth_rate():
|
||||
# 80→512:真实增速 5.4;prior=500 时排序分 432/580
|
||||
assert abs(smoothed_growth_rate(432, 80, 500) - 432 / 580) < 1e-12
|
||||
assert abs(smoothed_growth_rate(432, 5000, 500) - 432 / 5500) < 1e-12
|
||||
assert abs(smoothed_growth_rate(432, 80, 1000) - 432 / 1080) < 1e-12
|
||||
# prior=0 时排序分退回真实相对增速(基线 ≥ 1)
|
||||
assert smoothed_growth_rate(432, 80, 0) == 432 / 80
|
||||
assert smoothed_growth_rate(None, 80, 500) is None
|
||||
assert smoothed_growth_rate(432, None, 500) is None
|
||||
assert smoothed_growth_rate(10, 0, 0) is None
|
||||
assert smoothed_growth_rate(10, 80, -1) is None
|
||||
|
||||
|
||||
def test_normalize_cover_and_hosts():
|
||||
assert normalize_cover(None) is None
|
||||
assert normalize_cover("") is None
|
||||
@@ -251,6 +265,7 @@ def main_test():
|
||||
test_score_percentiles()
|
||||
test_interaction_rate_thresholds()
|
||||
test_compute_growth()
|
||||
test_smoothed_growth_rate()
|
||||
test_normalize_cover_and_hosts()
|
||||
test_content_efficiency_helpers()
|
||||
test_age_and_maturity()
|
||||
|
||||
Reference in new issue
Block a user