Files
Data-Coupler/SCHEDULING_UI_GUIDE.md
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

437 lines
9.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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! 🚀