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

9.6 KiB
Raw Blame History

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! 🚀