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
@@ -690,12 +690,17 @@ class Repository:
|
||||
src: str = "view",
|
||||
) -> None:
|
||||
values = metrics or {}
|
||||
ok_flag = 1 if ok else 0
|
||||
view_value = values.get("view")
|
||||
open_view = view_value if ok else None
|
||||
open_at = int(captured_at) if ok else None
|
||||
def run(conn: sqlite3.Connection) -> None:
|
||||
conn.execute(
|
||||
"""
|
||||
INSERT INTO snapshot(stat_date, aid, "view", "like", favorite, coin,
|
||||
share, reply, danmaku, captured_at, ok, err, src)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||
share, reply, danmaku, captured_at, ok, err, src,
|
||||
view_open, open_captured_at)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||
ON CONFLICT(stat_date, aid) DO UPDATE SET
|
||||
"view" = excluded."view",
|
||||
"like" = excluded."like",
|
||||
@@ -707,12 +712,22 @@ class Repository:
|
||||
captured_at = excluded.captured_at,
|
||||
ok = excluded.ok,
|
||||
err = excluded.err,
|
||||
src = excluded.src
|
||||
src = excluded.src,
|
||||
view_open = CASE
|
||||
WHEN excluded.ok = 1 AND snapshot.view_open IS NULL
|
||||
THEN excluded."view"
|
||||
ELSE snapshot.view_open
|
||||
END,
|
||||
open_captured_at = CASE
|
||||
WHEN excluded.ok = 1 AND snapshot.open_captured_at IS NULL
|
||||
THEN excluded.captured_at
|
||||
ELSE snapshot.open_captured_at
|
||||
END
|
||||
""",
|
||||
(
|
||||
stat_date,
|
||||
int(aid),
|
||||
values.get("view"),
|
||||
view_value,
|
||||
values.get("like"),
|
||||
values.get("favorite"),
|
||||
values.get("coin"),
|
||||
@@ -720,9 +735,11 @@ class Repository:
|
||||
values.get("reply"),
|
||||
values.get("danmaku"),
|
||||
int(captured_at),
|
||||
1 if ok else 0,
|
||||
ok_flag,
|
||||
err,
|
||||
src,
|
||||
open_view,
|
||||
open_at,
|
||||
),
|
||||
)
|
||||
self.db.write(run)
|
||||
@@ -741,18 +758,23 @@ class Repository:
|
||||
"""
|
||||
INSERT INTO snapshot(
|
||||
stat_date, aid, "view", "like", favorite, coin,
|
||||
share, reply, danmaku, captured_at, ok, err, src
|
||||
share, reply, danmaku, captured_at, ok, err, src,
|
||||
view_open, open_captured_at
|
||||
)
|
||||
SELECT
|
||||
?, aid, "view", "like", favorite, coin,
|
||||
share, reply, danmaku, ?, 1, NULL, ?
|
||||
share, reply, danmaku, ?, 1, NULL, ?,
|
||||
"view", ?
|
||||
FROM snapshot
|
||||
WHERE stat_date = ? AND ok = 1
|
||||
AND aid NOT IN (
|
||||
SELECT aid FROM snapshot WHERE stat_date = ?
|
||||
)
|
||||
""",
|
||||
(target_date, int(captured_at), src, source_date, target_date),
|
||||
(
|
||||
target_date, int(captured_at), src, int(captured_at),
|
||||
source_date, target_date,
|
||||
),
|
||||
)
|
||||
return int(cur.rowcount or 0)
|
||||
return self.db.write(run)
|
||||
|
||||
Reference in new issue
Block a user