From 39ae3232691ed7a40b0e138f103aaa9a845129f6 Mon Sep 17 00:00:00 2001 From: alikia2x Date: Wed, 8 Oct 2025 04:43:53 +0800 Subject: [PATCH] fix: incorrect target for calculating eta --- packages/crawler/mq/exec/snapshotTick.ts | 5 ++++- packages/crawler/mq/exec/takeBulkSnapshot.ts | 2 +- packages/crawler/mq/scheduling.ts | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/crawler/mq/exec/snapshotTick.ts b/packages/crawler/mq/exec/snapshotTick.ts index 1bc1446..2f4b320 100644 --- a/packages/crawler/mq/exec/snapshotTick.ts +++ b/packages/crawler/mq/exec/snapshotTick.ts @@ -81,8 +81,11 @@ export const snapshotTickWorker = async (_job: Job) => { } }; -export const closetMilestone = (views: number) => { +export const closetMilestone = (views: number, strict: boolean = false) => { if (views < 100000) return 100000; if (views < 1000000) return 1000000; + if (views < 10000000) { + return strict ? 10000000 : Math.ceil(views / 1000000) * 1000000; + } return Math.ceil(views / 1000000) * 1000000; }; diff --git a/packages/crawler/mq/exec/takeBulkSnapshot.ts b/packages/crawler/mq/exec/takeBulkSnapshot.ts index 7b52ce6..097c088 100644 --- a/packages/crawler/mq/exec/takeBulkSnapshot.ts +++ b/packages/crawler/mq/exec/takeBulkSnapshot.ts @@ -51,7 +51,7 @@ export const takeBulkSnapshotForVideosWorker = async (job: Job) => { const viewsDiff = views - currentSnapshot.views; const hoursDiff = (new Date().getTime() - currentSnapshot.created_at) / HOUR; const speed = viewsDiff / (hoursDiff + DELTA); - const target = closetMilestone(views); + const target = closetMilestone(views, true); const viewsToIncrease = target - views; const eta = viewsToIncrease / (speed + DELTA); await updateETA(sql, aid, eta, speed, views); diff --git a/packages/crawler/mq/scheduling.ts b/packages/crawler/mq/scheduling.ts index 31066f0..ad428c6 100644 --- a/packages/crawler/mq/scheduling.ts +++ b/packages/crawler/mq/scheduling.ts @@ -65,7 +65,8 @@ export const getAdjustedShortTermETA = async (sql: Psql, aid: number) => { minETAHours = Infinity; } - const avgETAHours = viewsToIncrease / (avgSpeed + DELTA); + const remaining = closetMilestone(latestSnapshot.views, true) - latestSnapshot.views; + const avgETAHours = remaining / (avgSpeed + DELTA); await updateETA(sql, aid, avgETAHours, avgSpeed, latestSnapshot.views);