from fastapi import APIRouter, BackgroundTasks, status, HTTPException from fastapi.responses import JSONResponse from .schemas import RemesaBaseSchema from .tasks import process_remesa_request from api.api_v2.modules.tasks.services import register_task import logging logger = logging.getLogger("app.api") router = APIRouter() @router.post("/services/remesas/", status_code=status.HTTP_202_ACCEPTED) async def download_remesa(remesa_request: RemesaBaseSchema): """ Endpoint para iniciar la descarga completa de un pedimento. """ remesa_dict = remesa_request.model_dump() # Ejecuta la tarea de Celery de forma asíncrona task = process_remesa_request.delay(remesa_dict) # Registrar la tarea en el servicio de seguimiento await register_task( task_id=task.id, message=f"Procesando descarga de remesa {remesa_dict.get('remesa', 'N/A')}", status="submitted", pedimento_id=remesa_dict.get('pedimento', {}).get('id'), organizacion_id=remesa_dict.get('pedimento', {}).get('organizacion'), servicio=5 # 5 corresponde a "Pedimento Remesas" ) # Puedes devolver el ID de la tarea para consultar el estado después return {"status": "submitted", "detail": "La solicitud de descarga de la remesa ha sido enviada.", "task_id": task.id}