Merge branch 'main' of https://gitee.com/wg123/video-gen
This commit is contained in:
@@ -6,6 +6,8 @@ from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from app.models.user import User
|
||||
from app.models.credit_record import CreditRecord
|
||||
from app.models.system_config import SystemConfig
|
||||
from app.models.video_engine import VideoEngine
|
||||
from app.models.image_engine import ImageEngine
|
||||
from app.models.credit_ratio import CreditRatio
|
||||
from app.utils.id_gen import generate_id
|
||||
from app.utils.exceptions import InsufficientCreditsError
|
||||
@@ -70,6 +72,14 @@ async def calc_video_credits(
|
||||
2. gen_type=video + resolution 下 base_credits/per_second_credits 最高规则;
|
||||
3. 原硬编码默认算法。
|
||||
"""
|
||||
# 如果engine_id为空,默认查询权重最高的视频引擎积分规则
|
||||
if not engine_id:
|
||||
video_engines_result = await db.execute(
|
||||
select(VideoEngine.id)
|
||||
.where(VideoEngine.is_active == True)
|
||||
.order_by(VideoEngine.priority.desc())
|
||||
)
|
||||
engine_id = video_engines_result.scalar_one_or_none()
|
||||
ratio = await _get_credit_ratio(
|
||||
db,
|
||||
gen_type="video",
|
||||
@@ -82,7 +92,7 @@ async def calc_video_credits(
|
||||
# Fallback
|
||||
base = 60.0
|
||||
duration_cost = duration * 2.0
|
||||
multiplier = {"4K": 2.5, "1080p": 1.5, "720p": 1.0}.get(resolution, 1.0)
|
||||
multiplier = {"480p": 1, "1080p": 2, "720p": 1.5}.get(resolution, 1.0)
|
||||
return round((base + duration_cost) * multiplier, 2)
|
||||
|
||||
|
||||
@@ -90,7 +100,7 @@ def calc_credits(duration: int, resolution: str) -> float:
|
||||
"""Legacy: hardcoded credit calculation. Prefer calc_video_credits for new code."""
|
||||
base = 60.0
|
||||
duration_cost = duration * 2.0
|
||||
multiplier = {"4K": 2.5, "1080p": 1.5, "720p": 1.0}.get(resolution, 1.0)
|
||||
multiplier = {"480p": 2.5, "1080p": 1.5, "720p": 1.0}.get(resolution, 1.0)
|
||||
return round((base + duration_cost) * multiplier, 2)
|
||||
|
||||
|
||||
@@ -106,6 +116,14 @@ async def calc_image_credits(
|
||||
2. gen_type=image + image_size 下 base_credits/per_second_credits 最高规则;
|
||||
3. 原硬编码默认算法。
|
||||
"""
|
||||
# 如果engine_id为空,默认查询权重最高的图片引擎积分规则
|
||||
if not engine_id:
|
||||
image_engines_result = await db.execute(
|
||||
select(ImageEngine.id)
|
||||
.where(ImageEngine.is_active == True)
|
||||
.order_by(ImageEngine.priority.desc())
|
||||
)
|
||||
engine_id = image_engines_result.scalar_one_or_none()
|
||||
ratio = await _get_credit_ratio(
|
||||
db,
|
||||
gen_type="image",
|
||||
|
||||
Reference in New Issue
Block a user