fix(analytics): shrink video efficiency and gate noisy boards by views
This commit is contained in:
1 parent
e7034cfb84
commit
bc3bef0743
12 files changed
+125
-40
No files matched your search
@@ -65,8 +65,8 @@ def test_video_listing_filters_and_sorting():
|
||||
heat = q.list_videos(sort="heat")
|
||||
aids = [item["aid"] for item in heat["items"]]
|
||||
assert 104 not in aids, "removed 视频不应进入榜单"
|
||||
assert aids[0] == 102, aids
|
||||
assert heat["items"][0]["heat"] > heat["items"][-1]["heat"]
|
||||
# 综合热度榜应用最小播放门槛 2000:101(1200)与 103(120)被排除
|
||||
assert aids == [102], aids
|
||||
assert heat["items"][0]["heat_percentile"] == 100.0
|
||||
|
||||
views = q.list_videos(sort="view")
|
||||
@@ -362,18 +362,27 @@ def test_duration_efficiency_queries():
|
||||
DASHBOARD_CACHE.clear()
|
||||
|
||||
efficiency = q.list_videos(sort="efficiency")
|
||||
assert [item["aid"] for item in efficiency["items"]] == [102, 101]
|
||||
assert [item["aid"] for item in efficiency["items"]] == [102]
|
||||
first = efficiency["items"][0]
|
||||
assert first["duration"] == 7200
|
||||
assert first["content_hours"] == 2.0
|
||||
assert first["efficiency"] == 2600.0
|
||||
assert first["efficiency"] == 2600.0 # 原始播放/小时,详情页口径
|
||||
assert abs(first["efficiency_score"] - 2207.5) < 0.1
|
||||
assert efficiency["duration_filter"] == {
|
||||
"min_duration_seconds": 600, "maturity_days": 2, "min_view": 0,
|
||||
"min_duration_seconds": 600, "maturity_days": 2,
|
||||
"min_view": 2000, "shrink_minutes": 60,
|
||||
}
|
||||
|
||||
# 播放不足 2000 的视频不进入效率榜(101 只有 1200)
|
||||
assert all(item["aid"] != 101 for item in efficiency["items"])
|
||||
|
||||
interaction = q.list_videos(sort="interaction_efficiency")
|
||||
assert [item["aid"] for item in interaction["items"]] == [102, 101]
|
||||
assert interaction["items"][0]["interaction_efficiency"] == 181.0
|
||||
assert [item["aid"] for item in interaction["items"]] == [102]
|
||||
assert abs(interaction["items"][0]["interaction_efficiency_score"] - 159.36) < 0.1
|
||||
|
||||
# 综合热度榜也应用最小播放门槛
|
||||
heat = q.list_videos(sort="heat")
|
||||
assert [item["aid"] for item in heat["items"]] == [102]
|
||||
|
||||
# 时长缺失不计入时长效率榜
|
||||
ups = q.list_ups(sort="efficiency")
|
||||
@@ -405,6 +414,7 @@ def test_duration_efficiency_queries():
|
||||
assert fresh["items"] == []
|
||||
assert fresh["available"] is False
|
||||
assert "发布满 2 天" in fresh["reason"]
|
||||
assert "播放 ≥ 2000" in fresh["reason"]
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
@@ -422,7 +432,8 @@ def test_about_payload():
|
||||
assert about["analytics"] == {
|
||||
"min_duration_seconds": 600,
|
||||
"maturity_days": 2,
|
||||
"min_view_for_efficiency": 0,
|
||||
"min_view_for_ranking": 2000,
|
||||
"video_shrink_minutes": 60,
|
||||
"shrink_minutes": None,
|
||||
}
|
||||
assert about["heat_weights"]["view"] == 0.30
|
||||
|
||||
Reference in new issue
Block a user