from fastapi import APIRouter, HTTPException, Depends from fastapi.responses import JSONResponse from typing import Dict, Any, List, Optional from api.api_v2.modules.authentication.services import get_current_user from .schemas import AcuseSchema, AcuseMasivoSchema from .tasks import process_acuse_request router = APIRouter() @router.post("/services/acuse/", response_model=Dict[str, Any]) async def obtener_acuse(acuse_request: AcuseSchema): """ Endpoint para obtener el acuse de recibo de un documento específico. """ acuse_dict = acuse_request.model_dump() # Ejecuta la tarea de Celery de forma asíncrona task = process_acuse_request.delay(acuse_dict) # Puedes devolver el ID de la tarea para consultar el estado después return {"task_id": task.id, "status": "submitted"} @router.post("/services/all/acuse/pedimento/", response_model=Dict[str, Any]) async def obtener_acuses(acuse_request: AcuseMasivoSchema): """ Endpoint para obtener acuses de recibo de documentos asociados a un pedimento. """ # Para cada edoc en la lista, dispara una tarea Celery task_ids = [] acuse_request_dict = acuse_request.model_dump() for edoc in acuse_request_dict.get('edocs', []): acuse_dict = { "edoc": edoc, "pedimento": acuse_request_dict.get('pedimento'), "credencial": acuse_request_dict.get('credencial') } task = process_acuse_request.delay(acuse_dict) task_ids.append(task.id) return {"task_ids": task_ids, "status": "submitted", "total": len(task_ids)}