# Sistema di Schedulazione Avanzata - Riepilogo Rapido ## βœ… **Implementato con Successo** Il sistema di schedulazione di Data Coupler Γ¨ stato esteso per supportare schedulazioni a intervalli personalizzabili. --- ## 🎯 **Nuove FunzionalitΓ ** ### Schedulazione a Intervalli Ora Γ¨ possibile programmare l'esecuzione automatica dei profili ogni: - **N Secondi** (es. ogni 30 secondi) - per test/demo - **N Minuti** (es. ogni 5, 10, 15, 30 minuti) - **N Ore** (es. ogni 1, 2, 4, 6 ore) - **N Giorni** (es. ogni 2, 3, 7 giorni) - **N Settimane** (es. ogni 2, 4 settimane) - **N Mesi** (es. ogni 2, 3, 6 mesi) --- ## πŸ“‹ **Esempio di Configurazione** ```json { "Name": "Sincronizzazione Clienti Ogni 5 Minuti", "ProfileId": 1, "ScheduleType": "interval", "IntervalValue": 5, "IntervalUnit": "minutes", "IsEnabled": true } ``` --- ## πŸ”§ **Modifiche Tecniche** ### Database - βœ… Aggiunti campi `IntervalValue` e `IntervalUnit` alla tabella `ProfileSchedules` - βœ… Migration creata e pronta per l'applicazione ### Codice - βœ… `ProfileSchedule.cs` - Nuovi campi e metodi di calcolo intervalli - βœ… `ScheduledJobService.cs` - Background service ottimizzato: - Controllo ogni 30 secondi (invece di 1 minuto) - Esecuzione parallela delle schedulazioni - Tracking per prevenire duplicati - Tolleranza adattiva (30s per intervalli, 1m per altri) - βœ… `ProfileScheduleService.cs` - Gestione aggiornata calcolo NextExecutionTime --- ## ⚑ **Miglioramenti Performance** 1. **Esecuzione Parallela**: PiΓΉ schedulazioni possono essere eseguite contemporaneamente 2. **Controlli Frequenti**: Ogni 30 secondi per supportare intervalli brevi 3. **Prevenzione Duplicati**: Tracking automatico delle schedulazioni in esecuzione 4. **Cleanup Automatico**: Rimozione schedulazioni bloccate dopo 1 ora --- ## πŸ“Š **Esempi Pratici** ### Sincronizzazione Frequente ``` Intervallo: Ogni 5 minuti Esecuzione: 10:00, 10:05, 10:10, 10:15, 10:20, ... ``` ### Backup Orario ``` Intervallo: Ogni 1 ora Esecuzione: 08:00, 09:00, 10:00, 11:00, 12:00, ... ``` ### Test Rapido ``` Intervallo: Ogni 30 secondi Esecuzione: 14:30:00, 14:30:30, 14:31:00, 14:31:30, ... ``` --- ## ⚠️ **Raccomandazioni** ### Intervalli Minimi Consigliati - **Produzione**: Minimo 5-10 minuti - **Test/Staging**: 30 secondi - 2 minuti - **Sviluppo**: Qualsiasi intervallo **Motivazione**: Intervalli molto brevi aumentano il carico su database e API. --- ## πŸš€ **Deployment** ### Step Necessari 1. **Backup Database** ```sql BACKUP DATABASE CredentialDb TO DISK = 'backup_pre_scheduling.bak' ``` 2. **Esegui Migration** ```powershell cd CredentialManager dotnet ef database update --context CredentialDbContext ``` 3. **Restart Applicazione** ```powershell dotnet run --project Data_Coupler/Data_Coupler.csproj ``` --- ## πŸ“ **Compilazione** βœ… **Build Completata con Successo** ``` Compilazione completato con 25 avvisi in 4,7s 0 Errori ``` --- ## πŸ“– **Documentazione Completa** Per dettagli tecnici completi, consultare: - `ADVANCED_SCHEDULING_SYSTEM.md` - Documentazione tecnica dettagliata --- **Versione**: 2.0 **Data**: 2 Ottobre 2025 **Status**: βœ… Pronto per Deployment