Skip to content

smarinx15/ingenio-manuelito

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🍬 Ingenio Manuelito - Sistema de Registro de Producción

Python Flask NumPy License

Sistema web desarrollado en Flask para el registro, seguimiento y análisis de producción de azúcar en las plantas industriales de Palmira y Buga del Ingenio Manuelito.


📋 Tabla de Contenidos


✨ Características

Funcionalidades Principales

  • 📝 Registro de Producción: Captura de datos por planta, turno y tipo de azúcar
  • 📊 Reportes Detallados: Visualización completa de la producción del día
  • 💰 Cálculos Automáticos: Estimación de recursos y costos en tiempo real
  • 🔢 Matrices NumPy: Procesamiento eficiente de datos multidimensionales
  • 🎨 Interfaz Moderna: Diseño responsivo y fácil de usar
  • 💾 Persistencia de Sesión: Los datos se mantienen durante la sesión activa
  • Validación de Datos: Validación en cliente y servidor
  • 🖨️ Reportes Imprimibles: Formato optimizado para impresión

Parámetros de Producción

Categoría Opciones
Plantas Palmira, Buga
Turnos Mañana, Tarde
Tipos de Azúcar Cruda, Blanca, Orgánica

Cálculos Automáticos

  • Caña de azúcar necesaria: 10 toneladas de caña por tonelada de azúcar producida
  • Costo por tonelada de caña: $180,000 COP
  • Totales por: Planta, turno, tipo de azúcar
  • Producción total del día

🛠️ Tecnologías

Backend

  • Flask 3.0.0 - Framework web minimalista y poderoso
  • NumPy 1.26.2 - Procesamiento numérico y matrices
  • Werkzeug 3.0.1 - Utilidades WSGI
  • Python-dotenv 1.0.0 - Gestión de variables de entorno

Frontend

  • HTML5 - Estructura semántica
  • CSS3 - Estilos modernos con gradientes y animaciones
  • JavaScript Vanilla - Validaciones del lado del cliente
  • Jinja2 - Motor de plantillas

Producción

  • Gunicorn 21.2.0 - Servidor WSGI para producción

🚀 Instalación

Requisitos Previos

  • Python 3.8 o superior
  • pip (gestor de paquetes de Python)
  • Git

Pasos de Instalación

1. Clonar el repositorio

git clone https://github.com/smarinx15/ingenio-manuelito.git
cd ingenio-manuelito

2. Crear y activar entorno virtual

Windows:

python -m venv venv
venv\Scripts\activate

Linux/Mac:

python3 -m venv venv
source venv/bin/activate

3. Instalar dependencias

pip install -r requirements.txt

4. Configurar variables de entorno

Crea un archivo .env en la raíz del proyecto:

SECRET_KEY=tu-clave-secreta-super-segura-aqui
DEBUG=True
PORT=5000

⚠️ Importante: Genera una clave secreta segura. Puedes usar:

python -c "import secrets; print(secrets.token_hex(32))"

5. Ejecutar la aplicación

python app.py

6. Abrir en el navegador

Visita: http://localhost:5000


💡 Uso

1️⃣ Registrar Producción

  1. Selecciona la planta de producción (Palmira o Buga)
  2. Elige el turno (Mañana o Tarde)
  3. Selecciona el tipo de azúcar (Cruda, Blanca u Orgánica)
  4. Ingresa la cantidad en toneladas (ej: 25.5)
  5. Haz clic en "Registrar Producción"

2️⃣ Ver Reportes

Haz clic en "Ver Reporte Completo" para visualizar:

  • ✅ Producción total del día
  • 📍 Producción por planta
  • 🍬 Producción por tipo de azúcar
  • ⏰ Producción por turno
  • 🌾 Caña de azúcar necesaria
  • 💰 Costo total estimado
  • 📋 Matriz completa de producción

3️⃣ Imprimir Reportes

Desde la vista de reportes, haz clic en "Imprimir Reporte" para generar una versión lista para impresión.

4️⃣ Limpiar Datos

Para reiniciar el sistema y borrar todos los registros, usa el botón "Limpiar Datos".


🗂️ Estructura del Proyecto

ingenio-manuelito/
│
├── 📄 app.py                      # Aplicación principal Flask
├── 📄 requirements.txt            # Dependencias del proyecto
├── 📄 .env                        # Variables de entorno (NO incluido en Git)
├── 📄 .gitignore                  # Archivos ignorados por Git
├── 📄 README.md                   # Este archivo
│
├── 📁 templates/                  # Plantillas HTML
│   ├── base.html                 # Plantilla base con estilos globales
│   ├── index.html                # Formulario de registro
│   ├── reporte.html              # Vista de reportes
│   ├── 404.html                  # Página de error 404
│   └── 500.html                  # Página de error 500
│
├── 📁 static/                     # Archivos estáticos (si se agregan)
│   ├── css/                      # Hojas de estilo
│   ├── js/                       # Scripts JavaScript
│   └── img/                      # Imágenes
│
└── 📁 venv/                       # Entorno virtual (NO incluido en Git)

📸 Capturas de Pantalla

Formulario de Registro

Interfaz intuitiva para registrar la producción

Reporte Completo

Vista detallada con todos los cálculos y totales

Vista Móvil

Diseño responsivo para tablets y smartphones


🔌 API y Endpoints

Método Endpoint Descripción
GET / Página principal con formulario de registro
POST /registrar Procesa el registro de producción
GET /reporte Muestra el reporte completo de producción
GET /limpiar Limpia todos los datos de la sesión

Estructura de la Matriz de Producción

La aplicación utiliza una matriz NumPy 3D con las siguientes dimensiones:

matriz[planta][turno][tipo]
# Dimensiones: (2, 2, 3)
# - 2 plantas: Palmira (0), Buga (1)
# - 2 turnos: Mañana (0), Tarde (1)
# - 3 tipos: Cruda (0), Blanca (1), Orgánica (2)

⚙️ Configuración

Variables de Entorno

Variable Descripción Valor por Defecto
SECRET_KEY Clave secreta para sesiones Flask dev-secret-key-change-in-production
DEBUG Modo de depuración False
PORT Puerto del servidor 5000

Configuración para Desarrollo

SECRET_KEY=desarrollo-no-usar-en-produccion
DEBUG=True
PORT=5000

Configuración para Producción

SECRET_KEY=clave-super-secura-generada-aleatoriamente
DEBUG=False
PORT=8000

🚀 Despliegue

Despliegue Local con Gunicorn

gunicorn app:app --bind 0.0.0.0:8000 --workers 4

Despliegue en Heroku

  1. Crear archivo Procfile:
web: gunicorn app:app
  1. Desplegar:
heroku create ingenio-manuelito
git push heroku main
heroku config:set SECRET_KEY=tu-clave-secreta

Despliegue en PythonAnywhere

  1. Sube los archivos al servidor
  2. Crea un entorno virtual
  3. Instala las dependencias
  4. Configura WSGI con Flask

Despliegue en Render

  1. Conecta tu repositorio de GitHub
  2. Configura las variables de entorno
  3. Render detectará automáticamente Flask

🤝 Contribuir

¡Las contribuciones son bienvenidas! Si deseas mejorar este proyecto:

Proceso de Contribución

  1. Fork el proyecto
  2. Crea una rama para tu feature:
    git checkout -b feature/AmazingFeature
  3. Commit tus cambios:
    git commit -m 'Add: Nueva funcionalidad increíble'
  4. Push a la rama:
    git push origin feature/AmazingFeature
  5. Abre un Pull Request

Guías de Estilo

  • Usa docstrings en español para funciones
  • Sigue PEP 8 para el código Python
  • Comenta código complejo
  • Escribe mensajes de commit descriptivos

Reportar Bugs

Si encuentras un error, por favor abre un Issue con:

  • Descripción del problema
  • Pasos para reproducirlo
  • Comportamiento esperado vs actual
  • Capturas de pantalla (si aplica)

🧪 Testing

Para ejecutar las pruebas (cuando se implementen):

python -m pytest tests/

📊 Roadmap

Versión 2.0 (Planificado)

  • Base de datos persistente (SQLite/PostgreSQL)
  • Autenticación de usuarios
  • Exportación a Excel y PDF
  • Gráficos interactivos con Chart.js
  • Historial de producción por fechas
  • Dashboard administrativo
  • API RESTful
  • Tests unitarios y de integración
  • Modo oscuro

🔒 Seguridad

Buenas Prácticas Implementadas

  • ✅ Variables sensibles en .env (no versionado)
  • ✅ Secret key para sesiones seguras
  • ✅ Validación de entrada en cliente y servidor
  • ✅ Manejo robusto de errores
  • ✅ Sin exposición de información sensible

Recomendaciones Adicionales para Producción

  • Usar HTTPS
  • Implementar rate limiting
  • Agregar autenticación y autorización
  • Sanitizar inputs adicionales
  • Usar base de datos en lugar de sesiones

📝 Licencia

Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.

MIT License

Copyright (c) 2025 Ingenio Manuelito

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction...

👥 Autor

Santiago Marín


🙏 Agradecimientos

  • Flask por su simplicidad y elegancia
  • NumPy por el procesamiento numérico eficiente
  • La comunidad de Python por las excelentes herramientas

📞 Soporte

Si tienes preguntas o necesitas ayuda:


⭐ Si este proyecto te fue útil, considera darle una estrella en GitHub ⭐

Made with ❤️ and ☕ in Colombia

Releases

No releases published

Packages

No packages published