This commit is contained in:
2026-07-11 12:51:48 +08:00
parent 698626a15a
commit b9c0a31a4b
82 changed files with 2594 additions and 7930 deletions
@@ -15,7 +15,6 @@ from app.enums.generation_task import (
GenerationMode,
GenerationType,
)
from app.enums.model_pricing import PricingSnapshotStage, ProviderCostStatus
from app.models.base import async_session
from app.models.chat_generation_task import ChatGenerationTask
from app.services.error_codes import extract_error_message
@@ -23,11 +22,7 @@ from app.services.generation_log_service import log_task_event
from app.services.generation_poll_schedule_service import ensure_video_poll_fields
from app.services.generation_refund_service import mark_chat_generation_task_failed_and_refund_once
from app.services.generation_provider_service import create_provider_task
from app.services.image_gen import is_sync_image_provider_result_uncertain
from app.services.media_token_usage_snapshot_service import (
mark_media_provider_cost_status,
sync_chat_generation_task_media_token_snapshot,
)
from app.services.media_token_usage_snapshot_service import sync_chat_generation_task_media_token_snapshot
from app.services.redis_registry_service import ensure_aware_utc
from app.tasks.celery_app import celery_app
@@ -176,8 +171,6 @@ async def _run(task_id: str):
):
return
provider_call_started = False
provider_call_completed = False
try:
if not task.optimized_prompt:
old_stage = task.pipeline_stage
@@ -236,9 +229,7 @@ async def _run(task_id: str):
to_stage=ChatGenerationPipelineStage.CREATING_PROVIDER_TASK.value,
)
provider_call_started = True
created = await create_provider_task(db, task)
provider_call_completed = True
provider_task_id = created.get("task_id")
if provider_task_id:
@@ -255,13 +246,7 @@ async def _run(task_id: str):
ensure_ascii=False,
default=str,
)
if task.gen_type == GenerationType.IMAGE.value:
await sync_chat_generation_task_media_token_snapshot(
db,
task,
provider_response=task.provider_response_json,
stage=PricingSnapshotStage.PROVIDER_SYNC_COMPLETED.value,
)
await sync_chat_generation_task_media_token_snapshot(db, task, provider_response=task.provider_response_json)
if task.remote_result_url and not task.seedance_task_id:
# 同步图片路径:原 SDK 已经返回最终 URL。
@@ -317,19 +302,6 @@ async def _run(task_id: str):
if task:
error_message = extract_error_message(exc, "生成任务") if callable(extract_error_message) else str(exc)
if task.gen_type == GenerationType.IMAGE.value and provider_call_started:
uncertain = provider_call_completed or is_sync_image_provider_result_uncertain(exc)
await mark_media_provider_cost_status(
db,
owner=task,
status=(
ProviderCostStatus.PROVIDER_RESULT_UNCERTAIN.value
if uncertain
else ProviderCostStatus.NOT_INCURRED.value
),
reason=error_message,
usage_stage="provider_sync_exception",
)
await mark_chat_generation_task_failed_and_refund_once(
db,
task=task,