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)
```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. |