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) | |
| ```bash | |
| # 1. Verificar prerrequisitos | |
| python check_requirements.py | |
| # 2. Iniciar todo el ecosistema | |
| iniciar_melodix.bat | |
| ``` | |
| ### Opción Manual | |
| ```bash | |
| # 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 | |
| 1. **Asegúrate que tu IP está en el .env:** | |
| ``` | |
| ALLOWED_ORIGINS=http://localhost:8000,http://192.168.1.10:8000 | |
| ``` | |
| 2. **En tu app móvil, usa:** | |
| ``` | |
| http://192.168.1.10:8000 | |
| ``` | |
| 3. **El firewall de Windows puede pedir permiso** - permite el acceso | |
| ### Usando Cloudflare Tunnel (Recomendado para acceso remoto) | |
| 1. Inicia el túnel con `iniciar_melodix.bat` | |
| 2. Revisa `tunnel_url.txt` para la URL pública | |
| 3. Usa esa URL desde cualquier lugar del mundo | |
| --- | |
| ## 🧹 Mantenimiento Recomendado | |
| ### Diario (Automático) | |
| Programa el Task Scheduler de Windows para ejecutar: | |
| ```bash | |
| python C:\mfmm\cleanup.py --days 7 | |
| ``` | |
| ### Semanal (Manual) | |
| ```bash | |
| # Ver logs de errores | |
| notepad logs\melodix.log | |
| # Ver estadísticas de uso | |
| python cleanup.py --stats | |
| ``` | |
| ### Mensual | |
| ```bash | |
| # 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 `.db` supere 100MB | |
| Para migrar: | |
| ```env | |
| # 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 | |
| 1. **Probar la API:** | |
| ```bash | |
| python tests/integration_test.py | |
| ``` | |
| 2. **Conectar 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 | |
| 3. **Monitorear el primer procesamiento:** | |
| - Revisa `logs/melodix.log` para ver el progreso | |
| - Verifica que los archivos se limpian después de procesar | |
| 4. **Configurar limpieza automática:** | |
| - Abre el Programador de Tareas de Windows | |
| - Crea una tarea diaria para `cleanup.py` | |
| --- | |
| ## 📞 Soporte | |
| Si encuentras errores: | |
| 1. Revisa los logs: `logs/melodix.log` | |
| 2. Ejecuta el verificador: `python check_requirements.py` | |
| 3. 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. | | |