修复图片生成积分后台计算逻辑不对没有加上每张积分
This commit is contained in:
@@ -52,6 +52,7 @@ from app.services.generation.billing_service import (
|
|||||||
)
|
)
|
||||||
from app.services.generation.history_delete_service import batch_delete_generation_history_items
|
from app.services.generation.history_delete_service import batch_delete_generation_history_items
|
||||||
from app.services.generation.log_service import log_task_event
|
from app.services.generation.log_service import log_task_event
|
||||||
|
from app.services.generation.media_reference_service import calculate_media_reference_usage
|
||||||
from app.services.resource_capacity_service import assert_user_resource_capacity_available
|
from app.services.resource_capacity_service import assert_user_resource_capacity_available
|
||||||
from app.services.operation_log_service import log_operation_event
|
from app.services.operation_log_service import log_operation_event
|
||||||
from app.tasks.celery_app import celery_app
|
from app.tasks.celery_app import celery_app
|
||||||
@@ -804,6 +805,14 @@ async def retry_task(
|
|||||||
quantity = int(target.generation_count or 1) if (
|
quantity = int(target.generation_count or 1) if (
|
||||||
target.generation_mode == GenerationMode.CHATAPI_MAIN.value and target.gen_type == "image"
|
target.generation_mode == GenerationMode.CHATAPI_MAIN.value and target.gen_type == "image"
|
||||||
) else 1
|
) else 1
|
||||||
|
refs = target.media_references or "[]"
|
||||||
|
if isinstance(refs, str):
|
||||||
|
import json
|
||||||
|
try:
|
||||||
|
refs = json.loads(refs)
|
||||||
|
except Exception:
|
||||||
|
refs = []
|
||||||
|
reference_usage = calculate_media_reference_usage(refs, include=True)
|
||||||
media_billing = await charge_generation_media_by_params(
|
media_billing = await charge_generation_media_by_params(
|
||||||
db,
|
db,
|
||||||
user_id=target.user_id,
|
user_id=target.user_id,
|
||||||
@@ -813,6 +822,8 @@ async def retry_task(
|
|||||||
duration=target.duration,
|
duration=target.duration,
|
||||||
resolution=target.resolution,
|
resolution=target.resolution,
|
||||||
engine_id=target.engine_id,
|
engine_id=target.engine_id,
|
||||||
|
input_video_duration=reference_usage.input_video_duration or None,
|
||||||
|
input_image_count=reference_usage.image_count or None,
|
||||||
project_name="AI生成任务",
|
project_name="AI生成任务",
|
||||||
description_prefix="Chat任务重试",
|
description_prefix="Chat任务重试",
|
||||||
owner_type=OWNER_CHAT_GENERATION_TASK,
|
owner_type=OWNER_CHAT_GENERATION_TASK,
|
||||||
|
|||||||
@@ -281,6 +281,7 @@ async def create_generation_task_group(
|
|||||||
gen_type=GenerationType.IMAGE.value,
|
gen_type=GenerationType.IMAGE.value,
|
||||||
image_size=size,
|
image_size=size,
|
||||||
engine_id=engine.id,
|
engine_id=engine.id,
|
||||||
|
input_image_count=reference_image_count if reference_image_count > 0 else None,
|
||||||
project_name="AI生成任务",
|
project_name="AI生成任务",
|
||||||
description_prefix="AI创作-",
|
description_prefix="AI创作-",
|
||||||
owner_type=OWNER_CHAT_GENERATION_TASK,
|
owner_type=OWNER_CHAT_GENERATION_TASK,
|
||||||
@@ -340,6 +341,9 @@ async def create_generation_task_group(
|
|||||||
raise HTTPException(status_code=400, detail=f"视频时长不能超过 {engine.max_duration} 秒")
|
raise HTTPException(status_code=400, detail=f"视频时长不能超过 {engine.max_duration} 秒")
|
||||||
|
|
||||||
input_video_duration = _validate_video_references(refs, max_audio_count=engine.max_audio_count)
|
input_video_duration = _validate_video_references(refs, max_audio_count=engine.max_audio_count)
|
||||||
|
reference_image_count = sum(
|
||||||
|
1 for ref in refs if (ref.get("type") or "").lower() == GenerationType.IMAGE.value
|
||||||
|
)
|
||||||
provider_generation_resolution, upscale_enabled_snapshot, upscale_snapshot_json = await build_video_upscale_snapshot(
|
provider_generation_resolution, upscale_enabled_snapshot, upscale_snapshot_json = await build_video_upscale_snapshot(
|
||||||
db,
|
db,
|
||||||
target_resolution=resolution,
|
target_resolution=resolution,
|
||||||
@@ -363,6 +367,7 @@ async def create_generation_task_group(
|
|||||||
resolution=resolution,
|
resolution=resolution,
|
||||||
engine_id=engine.id,
|
engine_id=engine.id,
|
||||||
input_video_duration=input_video_duration if input_video_duration > 0 else None,
|
input_video_duration=input_video_duration if input_video_duration > 0 else None,
|
||||||
|
input_image_count=reference_image_count if reference_image_count > 0 else None,
|
||||||
project_name="AI生成任务",
|
project_name="AI生成任务",
|
||||||
description_prefix="AI创作-",
|
description_prefix="AI创作-",
|
||||||
owner_type=OWNER_CHAT_GENERATION_TASK,
|
owner_type=OWNER_CHAT_GENERATION_TASK,
|
||||||
@@ -437,6 +442,7 @@ async def create_generation_task_group(
|
|||||||
resolution=resolution,
|
resolution=resolution,
|
||||||
engine_id=engine.id,
|
engine_id=engine.id,
|
||||||
input_video_duration=input_video_duration if input_video_duration > 0 else None,
|
input_video_duration=input_video_duration if input_video_duration > 0 else None,
|
||||||
|
input_image_count=reference_image_count if reference_image_count > 0 else None,
|
||||||
project_name="AI生成任务",
|
project_name="AI生成任务",
|
||||||
description_prefix=f"AI创作-第{generation_index}份-",
|
description_prefix=f"AI创作-第{generation_index}份-",
|
||||||
owner_type=OWNER_CHAT_GENERATION_TASK,
|
owner_type=OWNER_CHAT_GENERATION_TASK,
|
||||||
|
|||||||
Reference in New Issue
Block a user