视频复刻积分规则优化
This commit is contained in:
@@ -646,6 +646,14 @@ def start_pending_free_video(task: AITask) -> AITask:
|
||||
team=task.team,
|
||||
)
|
||||
reserve_amount = video_reserve_amount(quote.points, rule=quote.meta.get("rule"))
|
||||
try:
|
||||
digest_points = Decimal(str(payload.get("digest_points") or 0))
|
||||
except Exception:
|
||||
digest_points = Decimal("0")
|
||||
if digest_points < 0:
|
||||
digest_points = Decimal("0")
|
||||
# 视频复刻·商品:拆镜 Gemini 挂牌已记在 digest_points,与 Seedance 一并预留
|
||||
reserve_amount = reserve_amount + digest_points
|
||||
|
||||
with transaction.atomic():
|
||||
locked = (
|
||||
@@ -671,8 +679,10 @@ def start_pending_free_video(task: AITask) -> AITask:
|
||||
next_payload["estimated_tokens"] = tokens
|
||||
next_payload["review_pending"] = False
|
||||
next_payload.update(video_quote_payload(quote))
|
||||
# 保留拆镜挂牌,结算时加回
|
||||
next_payload["digest_points"] = str(digest_points)
|
||||
locked.request_payload = next_payload
|
||||
locked.estimated_cost = quote.points
|
||||
locked.estimated_cost = quote.points + digest_points
|
||||
locked.status = AITask.Status.RESERVED
|
||||
locked.save(update_fields=["request_payload", "estimated_cost", "status", "updated_at"])
|
||||
|
||||
@@ -992,10 +1002,17 @@ def finalize_free_video(*, task: AITask) -> AITask:
|
||||
except (TypeError, ValueError):
|
||||
total_tokens = 0
|
||||
settle = settle_video_from_payload(actual_model, payload=payload, tokens=total_tokens)
|
||||
try:
|
||||
digest_points = Decimal(str(payload.get("digest_points") or 0))
|
||||
except Exception:
|
||||
digest_points = Decimal("0")
|
||||
if digest_points < 0:
|
||||
digest_points = Decimal("0")
|
||||
if settle.meta.get("rule") == "missing_usage":
|
||||
# estimated_cost 已含 digest_points
|
||||
actual, base_cost = locked.estimated_cost, locked.base_cost
|
||||
else:
|
||||
actual, base_cost = settle.points, settle.base_cost_yuan
|
||||
actual, base_cost = settle.points + digest_points, settle.base_cost_yuan
|
||||
if total_tokens > 0:
|
||||
payload["actual_tokens"] = total_tokens
|
||||
if settle.meta.get("rate"):
|
||||
|
||||
Reference in New Issue
Block a user