3cadcbd86ff397fae0025aa7e46c0dd0383da44f
Reviewed-on: #6
EFC Microservice
Microservicio desarrollado con FastAPI y Celery para la gestión y procesamiento de pedimentos, partidas, remesas, acuses, coves y edocs en operaciones aduaneras.
Características
- API RESTful con FastAPI
- Procesamiento asíncrono de tareas con Celery y Redis
- Seguimiento de estado de tareas (submitted, processing, completed, failed)
- Validación de datos con Pydantic
- Documentación automática con Swagger UI
- Operaciones CRUD y endpoints especializados por módulo
- Integración con servicios externos (SOAP, VUCEM)
- Registro y actualización de tareas vía endpoints
/tasks/tasks/
Instalación
-
Crear un entorno virtual:
python -m venv venv source venv/bin/activate # En Linux/Mac # o venv\Scripts\activate # En Windows -
Instalar dependencias:
pip install -r requirements.txt -
Configurar variables de entorno en
.env(ver ejemplo encore/config.py).
Ejecutar el microservicio
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
Para ejecutar los workers de Celery:
celery -A celery_app.celery_app worker --loglevel=info
Documentación API
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
Endpoints principales (api/api_v2)
Pedimentos
POST /api/v2/services/pedimento/- Procesar pedimento completoPOST /api/v2/services/pedimento/partidas/- Procesar partidas de pedimentoPOST /api/v2/services/pedimento/remesas/- Procesar remesas de pedimento
Acuses
POST /api/v2/services/acuse/- Procesar acuse de pedimentoPOST /api/v2/services/acuse/cove/- Procesar acuse de COVE
Coves
POST /api/v2/services/cove/- Procesar COVE
Edocs
POST /api/v2/services/edoc/- Procesar E-Document
Estado de tareas
GET /api/v1/tasks/tasks/{task_id}/- Consultar estado de una tarea
Ejemplo de uso
Procesar un pedimento
curl -X POST "http://localhost:8000/api/v2/services/pedimento/" \
-H "Content-Type: application/json" \
-d '{ ... }'
Consultar estado de una tarea
curl -X GET "http://localhost:8000/api/v1/tasks/tasks/{task_id}/"
Estructura del proyecto
microservice/
├── api/
│ └── api_v2/
│ ├── modules/
│ │ ├── pedimentos/
│ │ ├── partidas/
│ │ ├── remesas/
│ │ ├── acuses/
│ │ ├── coves/
│ │ └── edocs/
│ └── tasks/
├── core/
│ └── config.py
├── celery_app.py
├── main.py
├── requirements.txt
└── README.md
Modelo de datos (ejemplo pedimento)
{
"pedimento_app": "string",
"organizacion_id": "string",
"partidas": [ ... ],
"remesas": [ ... ]
}
Notas
- Cada endpoint retorna un
task_idpara consultar el estado de procesamiento. - El seguimiento de tareas se realiza vía los endpoints
/tasks/tasks/. - Los estados posibles son:
submitted,processing,completed,failed.
Description
Languages
Python
99.6%
Dockerfile
0.4%