d042863a56
- 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
437 lines
9.6 KiB
Markdown
437 lines
9.6 KiB
Markdown
# Guida all'Interfaccia di Schedulazione - Data-Coupler
|
||
|
||
## 📋 Overview
|
||
|
||
L'interfaccia di schedulazione di Data-Coupler permette di configurare esecuzioni automatiche dei profili di trasferimento dati con diverse modalità, inclusa la nuova funzionalità di **intervalli personalizzati**.
|
||
|
||
---
|
||
|
||
## 🎯 Accesso alla Pagina di Schedulazione
|
||
|
||
1. Avvia l'applicazione Data-Coupler
|
||
2. Nella barra di navigazione, clicca su **"Schedulazione Profili"** (icona orologio)
|
||
3. Vedrai la lista delle schedulazioni esistenti o un messaggio per crearne una nuova
|
||
|
||
---
|
||
|
||
## ➕ Creare una Nuova Schedulazione
|
||
|
||
### Passo 1: Aprire il Modal di Creazione
|
||
|
||
Clicca sul pulsante verde **"+ Nuova Schedulazione"** in alto a destra.
|
||
|
||
### Passo 2: Configurare i Campi Base
|
||
|
||
#### **Nome Schedulazione** (obbligatorio)
|
||
- Inserisci un nome descrittivo
|
||
- Esempio: `"Sync Clienti Salesforce"`, `"Import Ordini Ogni 5 Minuti"`
|
||
|
||
#### **Descrizione** (opzionale)
|
||
- Aggiungi note o dettagli aggiuntivi
|
||
- Esempio: `"Sincronizzazione automatica clienti da Salesforce a database locale"`
|
||
|
||
#### **Profilo** (obbligatorio)
|
||
- Seleziona dal dropdown il profilo di trasferimento da eseguire
|
||
- Verranno mostrati solo i profili attivi
|
||
|
||
### Passo 3: Scegliere il Tipo di Schedulazione
|
||
|
||
Seleziona una delle seguenti opzioni:
|
||
|
||
---
|
||
|
||
## ⏱️ Tipi di Schedulazione Disponibili
|
||
|
||
### 1. **Una Volta** (`once`)
|
||
Esecuzione singola in una data e ora specifica.
|
||
|
||
**Configurazione:**
|
||
- **Data e Ora di Esecuzione**: Seleziona data e ora usando il picker
|
||
- Formato: `GG/MM/AAAA HH:mm`
|
||
|
||
**Esempio:**
|
||
```
|
||
Tipo: Una volta
|
||
Data e Ora: 15/10/2025 14:30
|
||
```
|
||
|
||
---
|
||
|
||
### 2. **⭐ Intervallo Personalizzato** (`interval`) - NUOVO!
|
||
Esecuzione ripetuta ogni N unità di tempo.
|
||
|
||
**Configurazione:**
|
||
- **Intervallo**: Inserisci un numero (minimo 1)
|
||
- **Unità di Tempo**: Seleziona dal dropdown
|
||
- **Secondi** - Per test rapidi o requisiti real-time
|
||
- **Minuti** - Per sincronizzazioni frequenti
|
||
- **Ore** - Per aggiornamenti regolari
|
||
- **Giorni** - Per backup giornalieri
|
||
- **Settimane** - Per report settimanali
|
||
- **Mesi** - Per consolidamenti mensili
|
||
|
||
**Anteprima in Tempo Reale:**
|
||
Una volta configurati intervallo e unità, vedrai un'anteprima che mostra:
|
||
```
|
||
Esecuzione ogni 5 minuti
|
||
```
|
||
|
||
**Esempi Pratici:**
|
||
|
||
**Test/Sviluppo:**
|
||
```
|
||
Intervallo: 30
|
||
Unità: Secondi
|
||
Anteprima: Esecuzione ogni 30 secondi
|
||
```
|
||
|
||
**Sincronizzazione Frequente:**
|
||
```
|
||
Intervallo: 5
|
||
Unità: Minuti
|
||
Anteprima: Esecuzione ogni 5 minuti
|
||
```
|
||
|
||
**Aggiornamento Orario:**
|
||
```
|
||
Intervallo: 2
|
||
Unità: Ore
|
||
Anteprima: Esecuzione ogni 2 ore
|
||
```
|
||
|
||
**Backup Giornaliero:**
|
||
```
|
||
Intervallo: 1
|
||
Unità: Giorni
|
||
Anteprima: Esecuzione ogni 1 giorno
|
||
```
|
||
|
||
**Report Settimanale:**
|
||
```
|
||
Intervallo: 1
|
||
Unità: Settimane
|
||
Anteprima: Esecuzione ogni 1 settimana
|
||
```
|
||
|
||
**Consolidamento Mensile:**
|
||
```
|
||
Intervallo: 1
|
||
Unità: Mesi
|
||
Anteprima: Esecuzione ogni 1 mese
|
||
```
|
||
|
||
---
|
||
|
||
### 3. **Giornaliera** (`daily`)
|
||
Esecuzione ogni giorno alla stessa ora.
|
||
|
||
**Configurazione:**
|
||
- **Ora di Esecuzione**: Formato 24 ore (es: `14:30`)
|
||
|
||
**Esempio:**
|
||
```
|
||
Tipo: Giornaliera
|
||
Ora: 09:00
|
||
Risultato: Esegue ogni giorno alle 09:00
|
||
```
|
||
|
||
---
|
||
|
||
### 4. **Settimanale** (`weekly`)
|
||
Esecuzione in un giorno specifico della settimana.
|
||
|
||
**Configurazione:**
|
||
- **Ora di Esecuzione**: Formato 24 ore
|
||
- **Giorno della Settimana**: Seleziona dal dropdown
|
||
|
||
**Esempio:**
|
||
```
|
||
Tipo: Settimanale
|
||
Ora: 10:00
|
||
Giorno: Lunedì
|
||
Risultato: Esegue ogni Lunedì alle 10:00
|
||
```
|
||
|
||
---
|
||
|
||
### 5. **Mensile** (`monthly`)
|
||
Esecuzione in un giorno specifico del mese.
|
||
|
||
**Configurazione:**
|
||
- **Ora di Esecuzione**: Formato 24 ore
|
||
- **Giorno del Mese**: Numero da 1 a 31
|
||
|
||
**Esempio:**
|
||
```
|
||
Tipo: Mensile
|
||
Ora: 08:00
|
||
Giorno: 1
|
||
Risultato: Esegue il primo giorno di ogni mese alle 08:00
|
||
```
|
||
|
||
---
|
||
|
||
## 🎛️ Opzioni Avanzate
|
||
|
||
### Schedulazione Attiva
|
||
- **Checkbox "Schedulazione attiva"**
|
||
- Se spuntato: la schedulazione sarà abilitata e verrà eseguita
|
||
- Se non spuntato: la schedulazione sarà salvata ma non eseguita
|
||
|
||
### Override Database (Opzionale)
|
||
Se il profilo selezionato lo supporta, puoi sovrascrivere:
|
||
- **Database Sorgente**: Per eseguire su un database diverso
|
||
- **Database Destinazione**: Per scrivere su un database diverso
|
||
|
||
---
|
||
|
||
## 💾 Salvare la Schedulazione
|
||
|
||
1. Verifica che tutti i campi obbligatori siano compilati
|
||
2. Clicca sul pulsante **"💾 Salva"**
|
||
3. Vedrai un messaggio di conferma
|
||
4. La schedulazione apparirà nella lista principale
|
||
|
||
---
|
||
|
||
## 📊 Visualizzazione delle Schedulazioni
|
||
|
||
### Card Schedulazione
|
||
|
||
Ogni schedulazione è mostrata in una card con:
|
||
|
||
**Header:**
|
||
- Icona del tipo (🔁 per intervalli, 📅 per altre)
|
||
- Nome schedulazione
|
||
- Menu dropdown ⋮ per azioni
|
||
|
||
**Corpo:**
|
||
- **Profilo**: Nome del profilo associato
|
||
- **Descrizione**: Se presente
|
||
- **Tipo**: Descrizione leggibile del tipo di schedulazione
|
||
- Esempio per intervalli: `"INTERVALLO: Ogni 5 minuti"`
|
||
- **Prossima Esecuzione**: Data e ora della prossima esecuzione prevista
|
||
- **Ultima Esecuzione**: Data e ora dell'ultima esecuzione (se presente)
|
||
- **Status**: Badge colorato con risultato ultima esecuzione
|
||
- 🟢 Verde: Success
|
||
- 🔴 Rosso: Failed
|
||
- 🔵 Blu: Running
|
||
|
||
**Bordo Card:**
|
||
- 🟢 Verde: Schedulazione attiva
|
||
- ⚫ Grigio: Schedulazione disabilitata
|
||
|
||
---
|
||
|
||
## ⚙️ Azioni su Schedulazioni Esistenti
|
||
|
||
### Menu Dropdown (⋮)
|
||
|
||
**✏️ Modifica**
|
||
- Apre il modal di modifica
|
||
- Tutti i campi sono precompilati con i valori attuali
|
||
- Salva per applicare le modifiche
|
||
|
||
**▶️ Esegui Ora**
|
||
- Esegue immediatamente la schedulazione
|
||
- Non modifica la prossima esecuzione programmata
|
||
- Utile per test o esecuzioni fuori programma
|
||
|
||
**🗑️ Elimina**
|
||
- Richiede conferma
|
||
- Elimina permanentemente la schedulazione
|
||
- Non elimina il profilo associato
|
||
|
||
---
|
||
|
||
## 🔍 Monitoraggio Esecuzioni
|
||
|
||
### Pulsante "📜 Storico Esecuzioni"
|
||
In alto a destra, clicca per vedere:
|
||
- Tutte le esecuzioni passate
|
||
- Status (success/failed)
|
||
- Numero di record trasferiti
|
||
- Durata esecuzione
|
||
- Messaggi di errore (se presenti)
|
||
|
||
---
|
||
|
||
## 💡 Best Practices per Intervalli
|
||
|
||
### Ambienti Diversi
|
||
|
||
**Sviluppo/Test:**
|
||
- Usa intervalli brevi (30-60 secondi) per test rapidi
|
||
- Ricorda di disabilitare o eliminare dopo i test
|
||
|
||
**Staging:**
|
||
- Intervalli moderati (1-5 minuti)
|
||
- Simula il carico di produzione
|
||
|
||
**Produzione:**
|
||
- Intervalli consigliati: minimo 5-10 minuti
|
||
- Valuta il carico sul sistema e sulle API
|
||
- Monitora le performance
|
||
|
||
### Considerazioni Performance
|
||
|
||
**Intervalli Brevi (<1 minuto):**
|
||
- ⚠️ Usa solo se necessario
|
||
- Aumenta il carico su database e API
|
||
- Monitora CPU e memoria
|
||
- Considera limitazioni API rate limits
|
||
|
||
**Intervalli Ottimali (5-15 minuti):**
|
||
- ✅ Bilanciamento tra freschezza dati e performance
|
||
- ✅ Riduce carico sistema
|
||
- ✅ Permette completamento esecuzioni precedenti
|
||
|
||
**Intervalli Lunghi (>1 ora):**
|
||
- ✅ Ideale per grandi dataset
|
||
- ✅ Minimo impatto sistema
|
||
- ✅ Adatto per backup e consolidamenti
|
||
|
||
---
|
||
|
||
## 🎯 Esempi di Configurazione
|
||
|
||
### Caso d'Uso 1: Sincronizzazione Real-Time Salesforce
|
||
|
||
```
|
||
Nome: Sync Leads Salesforce Real-Time
|
||
Profilo: Salesforce to SQL - Leads
|
||
Tipo: Intervallo Personalizzato
|
||
Intervallo: 2
|
||
Unità: Minuti
|
||
Schedulazione Attiva: ✅
|
||
```
|
||
|
||
**Risultato**: Sincronizza leads ogni 2 minuti durante l'orario lavorativo.
|
||
|
||
---
|
||
|
||
### Caso d'Uso 2: Backup Database Notturno
|
||
|
||
```
|
||
Nome: Backup Database Notte
|
||
Profilo: Full Database Backup
|
||
Tipo: Giornaliera
|
||
Ora: 02:00
|
||
Schedulazione Attiva: ✅
|
||
```
|
||
|
||
**Risultato**: Backup completo ogni notte alle 02:00.
|
||
|
||
---
|
||
|
||
### Caso d'Uso 3: Report Settimanale
|
||
|
||
```
|
||
Nome: Report Vendite Settimanale
|
||
Profilo: Sales Report
|
||
Tipo: Settimanale
|
||
Ora: 09:00
|
||
Giorno: Lunedì
|
||
Schedulazione Attiva: ✅
|
||
```
|
||
|
||
**Risultato**: Genera report vendite ogni Lunedì mattina.
|
||
|
||
---
|
||
|
||
### Caso d'Uso 4: Test Incrementale
|
||
|
||
```
|
||
Nome: Test Sync Every 30s
|
||
Profilo: Test Profile
|
||
Tipo: Intervallo Personalizzato
|
||
Intervallo: 30
|
||
Unità: Secondi
|
||
Schedulazione Attiva: ✅
|
||
```
|
||
|
||
**Risultato**: Test con sincronizzazione ogni 30 secondi (ricorda di disabilitare dopo test!).
|
||
|
||
---
|
||
|
||
### Caso d'Uso 5: Consolidamento Mensile
|
||
|
||
```
|
||
Nome: Consolidamento Fine Mese
|
||
Profilo: Monthly Consolidation
|
||
Tipo: Mensile
|
||
Ora: 23:00
|
||
Giorno: 28
|
||
Schedulazione Attiva: ✅
|
||
```
|
||
|
||
**Risultato**: Consolidamento dati il 28 di ogni mese alle 23:00.
|
||
|
||
---
|
||
|
||
## 🛠️ Troubleshooting
|
||
|
||
### Schedulazione Non Si Esegue
|
||
|
||
**Verifica:**
|
||
1. ✅ Schedulazione è attiva (checkbox spuntato)
|
||
2. ✅ Profilo associato esiste ed è attivo
|
||
3. ✅ NextExecutionTime è impostato (visibile nella card)
|
||
4. ✅ Background service è in esecuzione (verifica log applicazione)
|
||
|
||
### Intervalli Troppo Frequenti
|
||
|
||
**Sintomi:**
|
||
- Alta CPU/Memoria
|
||
- Log pieni di esecuzioni
|
||
- Timeout o errori API
|
||
|
||
**Soluzione:**
|
||
1. Modifica schedulazione
|
||
2. Aumenta intervallo (es: da 30s a 5min)
|
||
3. Monitora per 30-60 minuti
|
||
|
||
### Esecuzioni Saltate
|
||
|
||
**Causa Possibile:**
|
||
- Esecuzione precedente ancora in corso
|
||
- Sistema sotto carico
|
||
|
||
**Soluzione:**
|
||
- Il sistema salta automaticamente se già in esecuzione
|
||
- Aumenta intervallo se succede spesso
|
||
- Verifica durata media esecuzioni nello storico
|
||
|
||
---
|
||
|
||
## 📞 Supporto
|
||
|
||
Per problemi o domande:
|
||
1. Controlla i log applicazione
|
||
2. Consulta la documentazione tecnica (`ADVANCED_SCHEDULING_SYSTEM.md`)
|
||
3. Verifica lo storico esecuzioni per errori specifici
|
||
|
||
---
|
||
|
||
## 🔄 Aggiornamenti Futuri
|
||
|
||
Funzionalità pianificate:
|
||
- Dashboard monitoraggio real-time
|
||
- Notifiche email su errori
|
||
- Pause/Resume schedulazioni
|
||
- Dependency chains tra schedulazioni
|
||
- Export/import configurazioni
|
||
|
||
---
|
||
|
||
**Versione**: 2.0
|
||
**Data**: Ottobre 2025
|
||
**Compatibile con**: Data-Coupler .NET 9.0
|
||
**Autore**: Alessio Dalsanto
|
||
|
||
---
|
||
|
||
## 🎉 Conclusione
|
||
|
||
La nuova interfaccia di schedulazione con intervalli personalizzati offre massima flessibilità per qualsiasi scenario di sincronizzazione dati. Utilizza gli esempi e le best practices per configurare schedulazioni ottimali per il tuo ambiente! 🚀
|