Documentacion

This commit is contained in:
2025-10-22 19:07:48 -06:00
parent c97007354a
commit 4ce3f9b2c6
9 changed files with 992 additions and 129 deletions

142
README.md
View File

@@ -1,120 +1,122 @@
# EFC Microservice
Un microservicio de ejemplo desarrollado con FastAPI que permite gestionar items con operaciones CRUD completas.
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 (Create, Read, Update, Delete)
- Filtrado por categoría
- Endpoint de health check
- 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
```
```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
```
```bash
pip install -r requirements.txt
```
3. Configurar variables de entorno en `.env` (ver ejemplo en `core/config.py`).
## Ejecutar el microservicio
```bash
python main.py
```
O usando uvicorn directamente:
```bash
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
```
El servidor estará disponible en: http://localhost:8000
Para ejecutar los workers de Celery:
```bash
celery -A celery_app.celery_app worker --loglevel=info
```
## Documentación API
Una vez que el servidor esté ejecutándose, puedes acceder a:
- **Swagger UI**: http://localhost:8000/docs
- **ReDoc**: http://localhost:8000/redoc
## Endpoints disponibles
## Endpoints principales (`api/api_v2`)
### Endpoints básicos
- `GET /` - Mensaje de bienvenida
- `GET /health` - Health check del servicio
### 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
### Gestión de items
- `GET /items` - Obtener todos los items
- `GET /items/{item_id}` - Obtener un item específico
- `POST /items` - Crear un nuevo item
- `PUT /items/{item_id}` - Actualizar un item existente
- `DELETE /items/{item_id}` - Eliminar un item
- `GET /items/category/{category}` - Obtener items por categoría
### 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
### Crear un item
### Procesar un pedimento
```bash
curl -X POST "http://localhost:8000/items" \
curl -X POST "http://localhost:8000/api/v2/services/pedimento/" \
-H "Content-Type: application/json" \
-d '{
"name": "Laptop",
"description": "Laptop para desarrollo",
"price": 1200.00,
"category": "electronics"
}'
-d '{ ... }'
```
### Obtener todos los items
### Consultar estado de una tarea
```bash
curl -X GET "http://localhost:8000/items"
```
### Obtener items por categoría
```bash
curl -X GET "http://localhost:8000/items/category/electronics"
curl -X GET "http://localhost:8000/api/v1/tasks/tasks/{task_id}/"
```
## Estructura del proyecto
```
EFC_microservice/
├── main.py # Aplicación principal
├── requirements.txt # Dependencias
└── README.md # Documentación
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
## Modelo de datos (ejemplo pedimento)
### Item
```json
{
"id": 1,
"name": "string",
"description": "string",
"price": 0.0,
"category": "string"
"pedimento_app": "string",
"organizacion_id": "string",
"partidas": [ ... ],
"remesas": [ ... ]
}
```
### ItemCreate
```json
{
"name": "string",
"description": "string",
"price": 0.0,
"category": "string"
}
```
# efc_microservices
# EFC_microservices
# EFC_microservices
## 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`.
---