diff --git a/apps/worker/worker_app/tasks/viral_video.py b/apps/worker/worker_app/tasks/viral_video.py index 8adc448c2..34d3fd54d 100644 --- a/apps/worker/worker_app/tasks/viral_video.py +++ b/apps/worker/worker_app/tasks/viral_video.py @@ -1615,13 +1615,26 @@ def _settle_viral_video(job: ViralVideoJob, usage: dict | None) -> None: getattr(job, "video_resolution", "720p") or "720p", getattr(job, "video_ratio", "9:16") or "9:16", ) + fps = 24 + duration = int(getattr(job, "duration", 15) or 15) + est_tokens = duration * w * h * fps // 1024 actual_tokens = None if isinstance(usage, dict): at = usage.get("completion_tokens") if isinstance(at, (int, float)) and at > 0: actual_tokens = int(at) + diff_pct = None + if actual_tokens and est_tokens > 0: + diff_pct = (actual_tokens - est_tokens) * 100.0 / est_tokens + logger.info( + "[爆款视频] tokens估算vs实际 job_id=%s duration=%s %sx%s model=%s est=%s actual=%s diff=%.1f%%", + job.id, duration, w, h, + getattr(job, "video_model", "seedance-2.5"), + est_tokens, actual_tokens, + diff_pct if diff_pct is not None else 0.0, + ) actual_credits = calculate_viral_video_credits( - int(getattr(job, "duration", 15) or 15), + duration, w, h, getattr(job, "video_model", "") or "seedance-2.5",