melodix-api / CAMBIOS_REALIZADOS.md
GitHub Action
Despliegue limpio sin archivos pesados
be94759
|
Raw
History Blame Contribute Delete
8.39 kB

📋 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

  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:

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 .db supere 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

  1. Probar la API:

    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.