This commit is contained in:
2026-07-21 19:22:50 +08:00
parent b374a541ea
commit 7683ebb186
65 changed files with 5067 additions and 1741 deletions
@@ -26,6 +26,10 @@ from app.services.generation.ai.engine_service import (
parse_json_list as _parse_list,
)
from app.services.generation.billing_service import OWNER_CHAT_GENERATION_TASK, charge_generation_media_by_params
from app.services.generation.media_reference_service import (
calculate_media_reference_usage,
validate_media_reference_usage_for_engine,
)
from app.services.resource_capacity_service import assert_user_resource_capacity_available
from app.services.video_upscale.snapshot_service import build_video_upscale_snapshot
from app.services.private_portrait.reference_resolver import resolve_private_portrait_references
@@ -111,6 +115,8 @@ async def create_chat_generation_task_for_module(
raise HTTPException(status_code=400, detail=f"图片比例不支持: {proportion}")
px = px or normalize_px((sizes.get(size) or {}).get(proportion))
px = px or IMAGE_DEFAULT_PX
reference_usage = calculate_media_reference_usage(refs, include=True)
validate_media_reference_usage_for_engine(reference_usage, gen_type="image", engine=engine)
media_billing = await charge_generation_media_by_params(
db,
user_id=current_user.id,
@@ -118,6 +124,7 @@ async def create_chat_generation_task_for_module(
gen_type="image",
image_size=size,
engine_id=engine.id,
input_image_count=reference_usage.image_count or None,
project_name=billing_project_name,
description_prefix=billing_description_prefix,
owner_type=OWNER_CHAT_GENERATION_TASK,
@@ -174,6 +181,8 @@ async def create_chat_generation_task_for_module(
aspect_ratio=ratio,
supported_provider_resolutions=resolutions,
)
reference_usage = calculate_media_reference_usage(refs, include=True)
validate_media_reference_usage_for_engine(reference_usage, gen_type="video", engine=engine)
media_billing = await charge_generation_media_by_params(
db,
user_id=current_user.id,
@@ -182,6 +191,8 @@ async def create_chat_generation_task_for_module(
duration=selected_duration,
resolution=selected_resolution,
engine_id=engine.id,
input_video_duration=reference_usage.input_video_duration or None,
input_image_count=reference_usage.image_count or None,
project_name=billing_project_name,
description_prefix=billing_description_prefix,
owner_type=OWNER_CHAT_GENERATION_TASK,