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
This commit is contained in:
@@ -0,0 +1,140 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user