69 lines
2.5 KiB
Python
69 lines
2.5 KiB
Python
# microservice\api\api_v2\modules\pedimentos\routers.py
|
|
from fastapi import APIRouter, BackgroundTasks, status, HTTPException
|
|
from fastapi.responses import JSONResponse
|
|
from .schemas import PedimentoCompletoRequestSchema
|
|
from .tasks import process_pedimento_completo_request
|
|
from .services import put_pedimento_data_vu
|
|
from api.api_v2.modules.tasks.services import register_task
|
|
import logging
|
|
logger = logging.getLogger("app.api")
|
|
|
|
router = APIRouter()
|
|
|
|
@router.post("/services/pedimento_completo", status_code=status.HTTP_202_ACCEPTED)
|
|
async def download_pedimento_completo(Pedimento: PedimentoCompletoRequestSchema):
|
|
"""
|
|
Endpoint para iniciar la descarga completa de un pedimento.
|
|
"""
|
|
pedimento_dict = Pedimento.model_dump()
|
|
|
|
# Ejecuta la tarea de Celery de forma asíncrona
|
|
task = process_pedimento_completo_request.delay(pedimento_dict)
|
|
return {
|
|
"status": "submitted",
|
|
"detail": "La solicitud de descarga del pedimento completo ha sido enviada.",
|
|
"task_id": task.id
|
|
}
|
|
|
|
@router.post("/services/auditar_pedimento_completo", status_code=status.HTTP_202_ACCEPTED)
|
|
async def auditar_pedimento_completo(Pedimento: PedimentoCompletoRequestSchema):
|
|
"""
|
|
Endpoint para auditar la descarga completa de un pedimento vu.
|
|
|
|
Versión sincrónica que llama directamente al servicio.
|
|
"""
|
|
|
|
try:
|
|
# Convertir el modelo Pydantic a diccionario
|
|
pedimento_dict = Pedimento.model_dump()
|
|
|
|
# Llamar directamente al servicio
|
|
result = await put_pedimento_data_vu(**pedimento_dict)
|
|
|
|
return {
|
|
"status": "completed",
|
|
"detail": "La descarga del pedimento completo se ha completado exitosamente.",
|
|
"result": {
|
|
"documento": result.get("documento"),
|
|
"xml_content": result.get("xml_content"),
|
|
}
|
|
}
|
|
# return {
|
|
# "status": "completed",
|
|
# "detail": "La descarga del pedimento completo se ha completado exitosamente.",
|
|
# "result": {
|
|
# "documento": "Simulated Documento Content",
|
|
# "xml_content": "Simulated XML Content",
|
|
# }
|
|
# }
|
|
except HTTPException as e:
|
|
raise e
|
|
except Exception as e:
|
|
logger.error(f"Error inesperado en auditar_pedimento_completo: {e}")
|
|
raise HTTPException(
|
|
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
|
detail=f"Error interno del servidor auditar pedimento completo: {str(e)}"
|
|
)
|
|
|
|
|