积分消耗明细改版V1

This commit is contained in:
2026-08-12 11:49:53 +08:00
parent e3719eae09
commit eb7c60684e
39 changed files with 648 additions and 975 deletions
@@ -50,12 +50,12 @@ from app.services.generation.pipeline.db_lock_service import (
from app.services.generation.task_factory_service import create_chat_generation_task_for_module
from app.services.llm_billing import (
LlmBillingContext,
ensure_pre_deducted,
ensure_llm_charged,
log_provider_failure,
log_provider_start,
log_provider_success,
mark_business_success,
pre_deduct,
charge_llm_credits,
record_provider_exception,
finalize_llm_business_failure,
)
@@ -432,7 +432,7 @@ async def create_hot_opening_project_v2(
video_config=video_config,
target_platform=req.target_platform or "抖音",
)
await pre_deduct(
await charge_llm_credits(
db,
build_v2_video_prompt_billing_context(
user_id=str(current_user.id),
@@ -599,7 +599,7 @@ async def create_shot_replicate_project_v2(
urls=[req.material_image_url],
allow_common_migrate=True,
)
await pre_deduct(
await charge_llm_credits(
db,
build_v2_video_prompt_billing_context(
user_id=str(current_user.id),
@@ -723,7 +723,7 @@ async def rebuild_video_prompt_step_v2(
project.final_video_cover_url = None
project.completed_at = None
project.error_message = None
await pre_deduct(
await charge_llm_credits(
db,
build_v2_video_prompt_billing_context(
user_id=str(project.user_id),
@@ -887,10 +887,10 @@ async def run_video_prompt_optimize_v2(
description_prefix=f"{config.display_name}视频提词优化",
trace_id=f"module-v2-video-prompt:{project_snapshot['step_id']}",
)
pre_deduct_validation = await ensure_pre_deducted(db, llm_billing_context)
if not pre_deduct_validation.can_execute:
charge_validation = await ensure_llm_charged(db, llm_billing_context)
if not charge_validation.can_execute:
step.status = ModuleStepStatusEnum.FAILED.value
step.error_message = f"LLM账务状态异常({pre_deduct_validation.state.value}),已终止任务"
step.error_message = f"LLM账务状态异常({charge_validation.state.value}),已终止任务"
step.completed_at = utc_now()
project.status = ModuleProjectStatusEnum.FAILED.value
project.error_message = step.error_message