2.0 KiB
2.0 KiB
cleaning
Microservicio Python (FastAPI) de limpieza y normalización de datos extraídos.
Recibe lotes de filas extraídas por el servicio extraction y aplica reglas configurables de transformación de columnas.
Puerto
8002
Endpoints
| Método | Ruta | Descripción |
|---|---|---|
GET |
/health |
Liveness |
GET |
/rules |
Lista de reglas de limpieza disponibles |
GET |
/batches/{batch_id}/analysis |
Análisis de columnas de un lote de extracción |
POST |
/jobs |
Crear job de limpieza |
GET |
/jobs/{job_id} |
Estado y detalle del job |
GET |
/jobs/{job_id}/rows |
Filas limpias del job |
Crear un job de limpieza
POST /jobs
{
"extraction_batch_id": "...",
"rules_per_column": {
"valor": ["to_integer"],
"fecha": ["date_to_ddmmyyyy"],
"codigo": ["strip_spaces"]
}
}
Las reglas disponibles se listan en GET /rules.
Reglas de limpieza
Definidas en domain/csv_cleaning.py. Cada regla es una función que transforma los valores de una columna. Se pueden encadenar múltiples reglas por columna.
Variables de entorno
| Variable | Descripción |
|---|---|
DATABASE_URL |
PostgreSQL (postgresql+psycopg://...) |
Modelo de datos
extraction_batches — lote de filas de extracción (leído, no modificado)
extraction_rows — filas originales
cleaning_jobs — job de limpieza (FK → extraction_batches)
cleaned_rows — filas transformadas
Estructura del código
api/
main.py — FastAPI app con todos los endpoints
domain/
csv_cleaning.py — reglas de limpieza y función de análisis
infrastructure/
database.py — modelos SQLAlchemy y sesión
Dockerfile
requirements.txt
Arrancar localmente
# Con Docker Compose (desde la raíz del repositorio):
docker compose up --build cleaning
# Sin Docker:
cd services/cleaning
pip install -r requirements.txt
uvicorn api.main:app --host 0.0.0.0 --port 8002