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

2.8 KiB

Ottimizzazione Discovery Entità REST - Completata

🎯 Obiettivo Raggiunto

Modificata la procedura di discovery delle entità Salesforce per utilizzare i nuovi metodi batch invece dell'estrazione uno-per-uno.

📋 Modifiche Implementate

1. Discovery Entities Ottimizzato

File modificato: Data_Coupler\Extensions\DataCoupler\RESTMethod.cs

Prima:

// Discovery delle entità disponibili
Logger.LogInformation("Iniziando discovery delle entità REST...");
var entities = await currentRestDiscovery.DiscoverEntitiesAsync();

restEntities = entities.Select(e => new RestEntitySummary
{
    Name = e.Name,
    Label = e.Name,
    Description = ""
}).ToList();
isRestConnected = true;

Logger.LogInformation("Discovery completato: trovate {EntityCount} entità REST", restEntities.Count);

Dopo:

// Discovery delle entità disponibili usando il metodo batch ottimizzato
Logger.LogInformation("Iniziando discovery batch delle entità REST...");
restEntities = await currentRestDiscovery.DiscoverEntitySummariesAsync();
isRestConnected = true;

Logger.LogInformation("Discovery batch completato: trovate {EntityCount} entità REST", restEntities.Count);

2. Vantaggi dell'Ottimizzazione

Performance

  • Prima: Chiamava DiscoverEntitiesAsync() che caricava tutti i dettagli di tutte le entità
  • Ora: Usa DiscoverEntitySummariesAsync() che carica solo i summary (nome, label) delle entità
  • Risultato: Discovery molto più veloce, specialmente per Salesforce con molte entità

🔧 Batch Operations

  • Sfrutta i nuovi metodi batch implementati in SalesforceServiceClient
  • Utilizza la Salesforce Composite API per operazioni parallele
  • Riduce significativamente il numero di chiamate API

📦 Caricamento Lazy

  • I dettagli delle entità vengono caricati solo quando l'utente seleziona una specifica entità
  • Metodo SelectRestEntity() continua a utilizzare DiscoverEntityDetailsAsync() per i dettagli specifici

🧹 Pulizia Completata

  • Rimosso il file di esempio batch
  • Verificata compatibilità con tutti i servizi REST (Salesforce, SAP B1)
  • Testata la compilazione - tutto funziona correttamente

🔄 Retrocompatibilità

Il vecchio metodo DiscoverEntitiesAsync() è ancora disponibile nell'interfaccia IRestMetadataDiscovery per eventuali implementazioni personalizzate, ma non viene più utilizzato dall'UI principale.

🎉 Risultato Finale

Ora quando l'utente fa il discovery delle entità Salesforce, il sistema:

  1. Carica rapidamente la lista delle entità disponibili (solo nomi/summary)
  2. Mostra subito l'elenco selezionabile delle entità
  3. Carica i dettagli solo quando l'utente seleziona una specifica entità
  4. Sfrutta i metodi batch per tutte le operazioni di estrazione dati successive