拆镜复刻开发完成
This commit is contained in:
@@ -44,7 +44,7 @@ from app.services.generation_billing_service import charge_module_prompt_usage
|
||||
from app.services.generation_refund_service import mark_chat_generation_task_failed_and_refund_once
|
||||
from app.services.generation_task_factory_service import create_chat_generation_task_for_module
|
||||
from app.services.hot_opening_video_prompt_service import build_final_video_prompt, optimize_hot_opening_video_prompt, patch_video_prompt_schema_from_client
|
||||
from app.services.module_generation_log_service import log_module_event_file, log_module_prompt_event
|
||||
from app.services.module_generation_log_service import log_module_error, log_module_event_file, log_module_prompt_event
|
||||
from app.services.llm import optimize_prompt
|
||||
from app.services.resource_accounting_service import soft_delete_chat_task_resources
|
||||
from app.services.resource_signed_url_service import build_resource_signed_url
|
||||
@@ -206,6 +206,28 @@ async def log_module_event(
|
||||
)
|
||||
|
||||
|
||||
|
||||
def _log_project_error(
|
||||
*,
|
||||
project: ModuleGenerationProject | None,
|
||||
event_type: str,
|
||||
message: str,
|
||||
exc: BaseException | None = None,
|
||||
step: ModuleGenerationStep | None = None,
|
||||
detail: dict[str, Any] | None = None,
|
||||
) -> None:
|
||||
log_module_error(
|
||||
module=(project.module if project else MODULE),
|
||||
event_type=event_type,
|
||||
project_id=(project.id if project else None),
|
||||
step_id=(step.id if step else None),
|
||||
user_id=(project.user_id if project else None),
|
||||
message=message,
|
||||
detail=detail,
|
||||
exc=exc,
|
||||
)
|
||||
|
||||
|
||||
async def _get_project_for_user(
|
||||
db: AsyncSession,
|
||||
*,
|
||||
@@ -1039,6 +1061,17 @@ async def run_image_prompt_optimize(db: AsyncSession, *, project_id: str, step_i
|
||||
step.completed_at = _now()
|
||||
project.status = ModuleProjectStatusEnum.FAILED.value
|
||||
project.error_message = f"图片 AI 提词生成失败: {exc}"
|
||||
log_module_prompt_event(
|
||||
event_type="module_prompt_error",
|
||||
project_id=project.id,
|
||||
step_id=step.id,
|
||||
user_id=project.user_id,
|
||||
module=project.module,
|
||||
prompt_type=ModulePromptTypeEnum.IMAGE_PROMPT.value,
|
||||
request=locals().get("request_log", {}),
|
||||
error=str(exc),
|
||||
)
|
||||
_log_project_error(project=project, step=step, event_type="IMAGE_PROMPT_FAILED", message=project.error_message, exc=exc)
|
||||
await log_module_event(db, project=project, step=step, event_type=ModuleEventTypeEnum.IMAGE_PROMPT_FAILED.value, message=project.error_message)
|
||||
return step
|
||||
|
||||
@@ -1317,6 +1350,17 @@ async def run_video_prompt_optimize(db: AsyncSession, *, project_id: str, step_i
|
||||
step.completed_at = _now()
|
||||
project.status = ModuleProjectStatusEnum.FAILED.value
|
||||
project.error_message = f"视频 AI 提词生成失败: {exc}"
|
||||
log_module_prompt_event(
|
||||
event_type="module_prompt_error",
|
||||
project_id=project.id,
|
||||
step_id=step.id,
|
||||
user_id=project.user_id,
|
||||
module=project.module,
|
||||
prompt_type=ModulePromptTypeEnum.VIDEO_PROMPT.value,
|
||||
request=locals().get("request_log", {}),
|
||||
error=str(exc),
|
||||
)
|
||||
_log_project_error(project=project, step=step, event_type="VIDEO_PROMPT_FAILED", message=project.error_message, exc=exc)
|
||||
await log_module_event(db, project=project, step=step, event_type=ModuleEventTypeEnum.VIDEO_PROMPT_FAILED.value, message=project.error_message)
|
||||
return step
|
||||
|
||||
@@ -1517,6 +1561,16 @@ async def mark_hot_opening_step_dispatch_failed(
|
||||
step.completed_at = _now()
|
||||
project.status = ModuleProjectStatusEnum.FAILED.value
|
||||
project.error_message = error_message
|
||||
log_module_error(
|
||||
module=project.module,
|
||||
event_type="CELERY_DISPATCH_FAILED",
|
||||
project_id=project.id,
|
||||
step_id=step.id,
|
||||
user_id=project.user_id,
|
||||
message=error_message,
|
||||
detail={"reason": "celery_dispatch_failed", "chat_task_id": step.chat_task_id},
|
||||
error=error_message,
|
||||
)
|
||||
await log_module_event(
|
||||
db,
|
||||
project=project,
|
||||
|
||||
Reference in New Issue
Block a user