# 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 ```bash 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 ```bash # 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 ```