Files
Data-Coupler/SCHEDULING_SUMMARY.md
T
Alessio d042863a56 feat: Implementazione completa sistema schedulazione con intervalli personalizzati
- Aggiunto supporto schedulazione con intervalli flessibili (secondi/minuti/ore/giorni/settimane/mesi)
- Esteso modello ProfileSchedule con campi IntervalValue e IntervalUnit
- Ottimizzato ScheduledJobService per controlli ogni 30s con esecuzione parallela
- Implementata interfaccia UI completa con anteprima real-time in italiano
- Aggiunta migrazione database AddIntervalSchedulingFields
- Implementati metodi calcolo NextExecutionTime per intervalli
- Aggiunta gestione tracking anti-duplicati e cleanup automatico
- Creata documentazione completa (6 file, 2500+ righe)

Modifiche tecniche:
- ProfileSchedule.cs: Nuovi campi e metodi CalculateNextInterval/GetScheduleDescription
- ScheduledJobService.cs: Ridotto check interval a 30s, aggiunto parallel processing
- ProfileScheduleService.cs: Supporto calcolo intervalli in UpdateNextExecutionTimeAsync
- Scheduling.razor: Aggiunta sezione UI per configurazione intervalli
- Scheduling.razor.cs: Implementato GetIntervalPreview() e gestione stato campi
2025-10-02 01:12:39 +02:00

3.2 KiB

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

{
    "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

    BACKUP DATABASE CredentialDb TO DISK = 'backup_pre_scheduling.bak'
    
  2. Esegui Migration

    cd CredentialManager
    dotnet ef database update --context CredentialDbContext
    
  3. Restart Applicazione

    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