# 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 1. Crear un entorno virtual: ```bash python -m venv venv source venv/bin/activate # En Linux/Mac # o venv\Scripts\activate # En Windows ``` 2. Instalar dependencias: ```bash pip install -r requirements.txt ``` 3. Configurar variables de entorno en `.env` (ver ejemplo en `core/config.py`). ## Ejecutar el microservicio ```bash uvicorn main:app --host 0.0.0.0 --port 8000 --reload ``` Para ejecutar los workers de Celery: ```bash 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 completo - `POST /api/v2/services/pedimento/partidas/` - Procesar partidas de pedimento - `POST /api/v2/services/pedimento/remesas/` - Procesar remesas de pedimento ### Acuses - `POST /api/v2/services/acuse/` - Procesar acuse de pedimento - `POST /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 ```bash curl -X POST "http://localhost:8000/api/v2/services/pedimento/" \ -H "Content-Type: application/json" \ -d '{ ... }' ``` ### Consultar estado de una tarea ```bash 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) ```json { "pedimento_app": "string", "organizacion_id": "string", "partidas": [ ... ], "remesas": [ ... ] } ``` ## Notas - Cada endpoint retorna un `task_id` para 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`. ---