Documentacion
This commit is contained in:
142
README.md
142
README.md
@@ -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`.
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user