"""Background execution for unified generation workflows.""" import asyncio from app.core.celery_app import celery_app from app.core.logging import get_logger from app.db.database import _get_session_factory from app.services.story_service import run_generation_job_service from app.tasks.utils import run_with_disposed_engine logger = get_logger(__name__) @celery_app.task def run_generation_workflow_task(job_id: str): """Execute one accepted generation job in the Celery worker.""" logger.info("generation_workflow_task_started", job_id=job_id) async def _run(): session_factory = _get_session_factory() async with session_factory() as session: return await run_generation_job_service(job_id, session) try: result = asyncio.run(run_with_disposed_engine(_run())) logger.info( "generation_workflow_task_completed", job_id=job_id, executed=bool(result), ) return {"job_id": job_id, "executed": bool(result)} except Exception as exc: logger.error( "generation_workflow_task_failed", job_id=job_id, error=str(exc), ) raise