from __future__ import annotations from app.enums.celery_queue import CeleryQueue from app.enums.generation_task import ChatGenerationTaskEventType from app.services.generation.log_service import log_task_event from app.services.generation.pipeline.owner_service import GenerationOwner, owner_type_of async def enqueue_generation_create( owner: GenerationOwner, *, reason: str, ) -> None: """Commit caller-owned state before invoking this function.""" from app.tasks.generation_create_tasks import chatapi_create_generation_task owner_type = owner_type_of(owner) attempt_no = int(getattr(owner, "generation_attempt_no", 1) or 1) try: chatapi_create_generation_task.apply_async( args=[str(owner.id)], kwargs={"owner_type": owner_type, "generation_attempt_no": attempt_no}, queue=CeleryQueue.GEN_CHATAPI_CREATE.value, task_id=f"generation-create:{owner_type}:{owner.id}:attempt:{attempt_no}", ) await log_task_event( owner, event_type=ChatGenerationTaskEventType.GENERATION_RECORD_ENQUEUE_SUCCESS.value, message="资源生成创建任务已投递", detail={"reason": reason, "queue": CeleryQueue.GEN_CHATAPI_CREATE.value}, ) except Exception as exc: await log_task_event( owner, event_type=ChatGenerationTaskEventType.GENERATION_RECORD_ENQUEUE_FAILED.value, message=str(exc), detail={"reason": reason, "queue": CeleryQueue.GEN_CHATAPI_CREATE.value}, ) raise