Spaces:
Running
Running
📋 Cambios Realizados - Mejoras de Melodix v2.0
✅ Resumen de Mejoras Implementadas
1. 🔐 Seguridad
| Archivo | Cambio |
|---|---|
start_tunnel.py |
Token de GitHub ahora usa variables de entorno |
.env / .env.example |
Secrets movidos a variables de entorno |
app/routers/auth.py |
Logging de intentos de login, validación mejorada |
app/routers/songs.py |
Autenticación real requerida en /upload |
2. 🗄️ Base de Datos
| Archivo | Cambio |
|---|---|
app/database.py |
Soporte PostgreSQL + SQLite fallback |
.env |
Variable DATABASE_URL configurable |
3. 📁 Validación de Archivos
| Archivo | Cambio |
|---|---|
app/routers/songs.py |
Validación de extensión, MIME type, tamaño máximo |
.env |
Configuración MAX_FILE_SIZE_MB y ALLOWED_EXTENSIONS |
4. 📝 Logging
| Archivo | Cambio |
|---|---|
main.py |
Logging rotativo configurado (10MB, 5 backups) |
tasks.py |
Logs detallados con task_id para tracking |
app/routers/*.py |
Logging de todas las operaciones importantes |
logs/ |
Directorio creado para logs |
5. 🧹 Limpieza Automática
| Archivo | Cambio |
|---|---|
cleanup.py |
Script nuevo para limpieza programada |
tasks.py |
Limpieza automática de archivos temporales post-procesamiento |
app/routers/songs.py |
Endpoint /cleanup/{task_id} para limpieza manual |
6. 🖥️ Manejo de Errores
| Archivo | Cambio |
|---|---|
tasks.py |
Fallback automático CPU si GPU falla |
tasks.py |
Reintento automático de tareas fallidas (max 1 retry) |
tasks.py |
Manejo explícito de errores de Demucs |
7. 🌐 CORS Mejorado
| Archivo | Cambio |
|---|---|
main.py |
CORS configurable desde .env |
.env |
ALLOWED_ORIGINS para controlar accesos |
8. 📱 Conexión Móvil
| Archivo | Cambio |
|---|---|
.env |
IP local configurada (192.168.1.10) |
iniciar_melodix.bat |
Muestra IP local automáticamente |
9. 📚 Documentación
| Archivo | Cambio |
|---|---|
README.md |
Documentación completa creada |
requirements.txt |
Dependencias listadas explícitamente |
.gitignore |
Archivos ignorados configurados |
10. 🧪 Testing
| Archivo | Cambio |
|---|---|
tests/integration_test.py |
Test completo actualizado con autenticación |
check_requirements.py |
Verificador de prerrequisitos creado |
📂 Archivos Nuevos Creados
c:\mfmm\
├── .env # Variables de entorno (activas)
├── .env.example # Plantilla de variables
├── .gitignore # Archivos ignorados por Git
├── requirements.txt # Dependencias Python
├── README.md # Documentación completa
├── cleanup.py # Limpieza automática programada
├── check_requirements.py # Verificador de prerrequisitos
└── logs/ # Directorio de logs (nuevo)
🔄 Archivos Modificados
c:\mfmm\
├── main.py # + Logging, + CORS configurable, + Health endpoint
├── tasks.py # + Fallback CPU, + Logging, + Limpieza, + Retry
├── start_tunnel.py # + Variables de entorno
├── iniciar_melodix.bat # + Verificaciones, + IP local
├── app/
│ ├── database.py # + PostgreSQL support
│ ├── routers/
│ │ ├── auth.py # + Logging, + Device management
│ │ └── songs.py # + Auth real, + Validaciones, + Endpoints nuevos
│ └── schemas/ # (sin cambios)
└── tests/
└── integration_test.py # + Autenticación completa
🚀 Cómo Iniciar el Sistema
Opción Rápida (Recomendada)
# 1. Verificar prerrequisitos
python check_requirements.py
# 2. Iniciar todo el ecosistema
iniciar_melodix.bat
Opción Manual
# Terminal 1 - API
venv_musical\Scripts\activate
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
# Terminal 2 - Worker Celery
venv_musical\Scripts\activate
celery -A tasks worker --loglevel=info -P solo
# Terminal 3 - Túnel Cloudflare
venv_musical\Scripts\activate
python start_tunnel.py
📱 Conectar desde tu Móvil
Usando la Red Local
Asegúrate que tu IP está en el .env:
ALLOWED_ORIGINS=http://localhost:8000,http://192.168.1.10:8000En tu app móvil, usa:
http://192.168.1.10:8000El firewall de Windows puede pedir permiso - permite el acceso
Usando Cloudflare Tunnel (Recomendado para acceso remoto)
- Inicia el túnel con
iniciar_melodix.bat - Revisa
tunnel_url.txtpara la URL pública - Usa esa URL desde cualquier lugar del mundo
🧹 Mantenimiento Recomendado
Diario (Automático)
Programa el Task Scheduler de Windows para ejecutar:
python C:\mfmm\cleanup.py --days 7
Semanal (Manual)
# Ver logs de errores
notepad logs\melodix.log
# Ver estadísticas de uso
python cleanup.py --stats
Mensual
# Limpieza profunda de archivos > 30 días
python cleanup.py --days 30
⚠️ Consideraciones Importantes
Seguridad del Token de GitHub
El token de GitHub está en .env pero NO está encriptado. Esto es intencional porque:
- No hay hosting pago disponible
- El túnel Cloudflare requiere sincronización automática
- Es un entorno de desarrollo/testing
Recomendación: Si algún día despliegas en producción real, rota el token inmediatamente.
Base de Datos SQLite
SQLite está bien para:
- ✅ Desarrollo local
- ✅ Testing
- ✅ Uso personal (1-5 usuarios)
Migra a PostgreSQL cuando:
- Tengas múltiples usuarios concurrentes
- Necesites mayor robustez
- El archivo
.dbsupere 100MB
Para migrar:
# En .env
DATABASE_URL=postgresql://usuario:password@localhost:5432/melodix_db
GPU vs CPU
Tu GPU (GTX 1650 4GB) es suficiente para Demucs. El sistema:
- Usa GPU por defecto (
DEFAULT_DEVICE=cuda) - Hace fallback automático a CPU si hay error
- Procesa ~2-3x más rápido con GPU
🎯 Próximos Pasos Sugeridos
Probar la API:
python tests/integration_test.pyConectar la App .NET MAUI:
- Actualiza la URL base en Melodix/ para usar
http://192.168.1.10:8000 - O usa la URL del túnel Cloudflare
- Actualiza la URL base en Melodix/ para usar
Monitorear el primer procesamiento:
- Revisa
logs/melodix.logpara ver el progreso - Verifica que los archivos se limpian después de procesar
- Revisa
Configurar limpieza automática:
- Abre el Programador de Tareas de Windows
- Crea una tarea diaria para
cleanup.py
📞 Soporte
Si encuentras errores:
- Revisa los logs:
logs/melodix.log - Ejecuta el verificador:
python check_requirements.py - Consulta el README:
notepad README.md
¡Todo está listo para usar Melodix v2.0! 🎵
📱 Sincronización y Caché Offline en Melodix Mobile (v2.1)
| Archivo | Cambio |
|---|---|
MelodixMobile/src/services/api.js |
Implementación de fallback en caché offline (búsqueda por prefijo si la clave exacta de parámetros falla) y soporte de peticiones silenciadas para evitar alertas molestas de conexión. |
MelodixMobile/src/screens/iglesia/FinanzasScreen.js |
Carga de caché usando los parámetros dinámicos de fechas del mes y actualizaciones silenciosas. |
MelodixMobile/src/screens/iglesia/InventarioScreen.js |
Carga de caché admitiendo listas vacías sin bloquear la interfaz y refresco automático silenciado. |
MelodixMobile/src/screens/iglesia/MomentosScreen.js |
Soporte de caché en momentos y miembros sin validaciones restrictivas de longitud, y refresco silencioso. |
MelodixMobile/src/components/OfflineSyncBanner.js |
Registro global del callback de conflictos de asistencia offline para alertar en cualquier pantalla. |
MelodixMobile/src/screens/iglesia/TomarAsistenciaScreen.js |
Remoción del callback de conflicto local para evitar race conditions al desmontar. |
MelodixMobile/src/navigation/AppNavigator.js |
Remoción del chequeo de torneos en el montaje inicial, evitando redirección no deseada al Quiz en Expo. |