feat(growth): same-day 1-day baselines for new videos
Let 1-day view growth use a zero baseline for videos published today, and the first successful sample for older videos ingested today, without mixing those into 7/30-day rankings.
This commit is contained in:
1 parent
8e7ead1669
commit
c5b7185675
21 files changed
+411
-59
No files matched your search
@@ -296,6 +296,59 @@ def test_pending_snapshot_aids():
|
||||
db.close()
|
||||
|
||||
|
||||
def test_upsert_snapshot_preserves_view_open():
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
db, repo = setup(tmp)
|
||||
try:
|
||||
metrics = {
|
||||
"view": 10, "like": 1, "favorite": 0, "coin": 0,
|
||||
"share": 0, "reply": 0, "danmaku": 0,
|
||||
}
|
||||
repo.upsert_snapshot(
|
||||
"2026-10-31", 1, metrics=metrics, ok=True, err=None, captured_at=10,
|
||||
)
|
||||
first = repo.get_snapshot("2026-10-31", 1)
|
||||
assert first["view"] == 10
|
||||
assert first["view_open"] == 10
|
||||
assert first["open_captured_at"] == 10
|
||||
|
||||
metrics["view"] = 40
|
||||
repo.upsert_snapshot(
|
||||
"2026-10-31", 1, metrics=metrics, ok=True, err=None, captured_at=20,
|
||||
)
|
||||
second = repo.get_snapshot("2026-10-31", 1)
|
||||
assert second["view"] == 40
|
||||
assert second["view_open"] == 10
|
||||
assert second["open_captured_at"] == 10
|
||||
assert second["captured_at"] == 20
|
||||
|
||||
repo.upsert_snapshot(
|
||||
"2026-10-31", 2, metrics=None, ok=False, err="x", captured_at=1,
|
||||
)
|
||||
failed = repo.get_snapshot("2026-10-31", 2)
|
||||
assert failed["view_open"] is None
|
||||
metrics["view"] = 7
|
||||
repo.upsert_snapshot(
|
||||
"2026-10-31", 2, metrics=metrics, ok=True, err=None, captured_at=5,
|
||||
)
|
||||
recovered = repo.get_snapshot("2026-10-31", 2)
|
||||
assert recovered["view"] == 7
|
||||
assert recovered["view_open"] == 7
|
||||
assert recovered["open_captured_at"] == 5
|
||||
|
||||
copied = repo.copy_ok_snapshots(
|
||||
"2026-10-31", "2026-11-01", captured_at=30, src="seed",
|
||||
)
|
||||
assert copied == 2
|
||||
seeded = repo.get_snapshot("2026-11-01", 1)
|
||||
assert seeded["view"] == 40
|
||||
assert seeded["view_open"] == 40
|
||||
assert seeded["open_captured_at"] == 30
|
||||
assert seeded["src"] == "seed"
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
def test_up_follower_snapshot_and_backfill():
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
db, repo = setup(tmp)
|
||||
@@ -367,6 +420,7 @@ def main():
|
||||
test_primary_folder_is_order_independent()
|
||||
test_dropped_invalid_preserves_original_title()
|
||||
test_pending_snapshot_aids()
|
||||
test_upsert_snapshot_preserves_view_open()
|
||||
test_up_follower_snapshot_and_backfill()
|
||||
print("OK: 收藏夹/视频状态机与黑名单测试全部通过")
|
||||
|
||||
|
||||
Reference in new issue
Block a user