31 lines
1.3 KiB
Python
31 lines
1.3 KiB
Python
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}
|