mirror of
https://github.com/brockar/ml-converter.git
synced 2026-01-11 15:01:01 -03:00
main
ML Converter
Aplicación web en Python para procesar archivos Excel, convirtiendo automáticamente valores numéricos almacenados como texto al formato numérico apropiado.
Especialmente útil para resúmenes de Mercado Pago.
Características
- Detección y Conversión Inteligente de Números: Identifica columnas con valores numéricos en formato texto (ej: "$1,234.56", "1.234,56", "(123.45)") y los convierte a números reales, manejando formatos internacionales, símbolos de moneda y negativos en paréntesis.
- Preserva Datos de Texto: Columnas de texto (nombres, categorías, fechas) permanecen sin cambios.
- Interfaz Web Simple: UI responsiva en español, con soporte drag & drop, mensajes claros de éxito/error y resumen de totales, ingresos y egresos tras el procesamiento.
- Manejo Seguro de Archivos: Almacenamiento temporal en
/tmp/ml-converter/y limpieza automática tras 30 minutos. - Validación Real de Archivos: Verifica que el archivo subido sea realmente Excel, no solo por extensión.
- Soporte de Formatos: Acepta
.xlsxy.xls(máx. 16MB). - Pruebas Automáticas: Incluye tests para endpoints y validaciones.
- Headers de Seguridad: Cabeceras HTTP adicionales (HSTS, CSP, etc).
Tech Stack
- Backend: Flask (Python), pandas, openpyxl
- Frontend: HTML5, Tailwind CSS, Jinja2
- File Cleanup: APScheduler
- Containerización: Docker Compose
Configuración del Entorno
-
Copia y edita el archivo de entorno:
cp env.example .env nvim .env -
Genera un SECRET_KEY seguro:
python3 -c "import secrets; print('SECRET_KEY=' + secrets.token_urlsafe(32))"Actualiza
SECRET_KEYyDOMAINen.env. -
Variables importantes:
FLASK_ENV: 'production' para producciónMAX_CONTENT_LENGTH: Tamaño máximo de archivo (por defecto: 16MB)
Quick Start
Opción 1: Entorno Virtual Python
./run.sh
O manualmente:
cd ml-converter
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python src/app.py
Visita http://localhost:5000
Opción 2: Docker
docker-compose up --build
Visita http://localhost:5000
Flujo de Uso
- Subi tu archivo Excel (.xlsx/.xls) arrastrando o seleccionando.
- Procesa: Haz clic en "Procesar Archivo". Las columnas numéricas en texto se convierten automáticamente.
- Descarga el archivo procesado.
- Limpieza: Los archivos temporales se eliminan automáticamente tras 30 minutos.
API Endpoints
GET /– Página principal de cargaPOST /upload– Subida y procesamiento de archivosGET /download/<filename>– Descarga del archivo procesado
Despliegue en Producción
Gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 src.app:app
Docker
docker compose up -d
Estructura de Archivos
ml-converter/
├── src/
│ ├── app.py # Aplicación principal Flask
│ ├── converters.py # Helpers
│ └── templates/
│ ├── index.html # Página de carga
│ └── download.html # Página de descarga
├── tests/ # Tests automáticos
├── requirements.txt # Dependencias
├── Dockerfile
├── compose.yml
└── README.md
Seguridad
- Nombres de archivo seguros (
secure_filename) - Validación de tipo de archivo (.xlsx/.xls y firma interna)
- Límites de tamaño (16MB)
- Limpieza automática (30 minutos)
- Nombres de archivo únicos (UUIDs para prevenir conflictos)
Languages
Python
67.7%
HTML
28.5%
Dockerfile
1.6%
CSS
1.2%
Shell
1%