修复图片生成积分后台计算逻辑不对没有加上每张积分

This commit is contained in:
2026-07-28 11:43:15 +08:00
parent 9b3541264f
commit 570292266e
2 changed files with 17 additions and 0 deletions
+11
View File
@@ -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,