Aggiornamento main #12

Merged
Alessio merged 25 commits from staging into main 2026-03-20 17:20:29 +01:00

25 Commits

Author SHA1 Message Date
Alessio Dal Santo 335d587c89 [Feature] Salesforce: batch describe metadati, discovery parallela e fix scheduler External ID
Build and Push Docker Images / Build Linux Container (push) Successful in 6m56s
Build and Push Docker Images / Build Windows Container (push) Has been cancelled
Build and Push Docker Images / Create Multi-Platform Manifest (push) Has been cancelled
- Salesforce Composite Batch API per describe SObject: le describe sono ora
  raggruppate in chunk da 25 e inviate come singole POST a /composite/batch,
  riducendo le chiamate API da N a ceil(N/25); per 200 SObject: da 201 a 9 chiamate.

- Discovery entita' REST in parallelo: DiscoverEntitySummariesAsync e
  DiscoverEntitiesAsync avviate simultaneamente; la lista entita' diventa
  interattiva subito dopo le summaries, i dettagli completano in background
  con StateHasChanged() per aggiornare l'UI istantaneamente.

- Fix scheduler - preservazione ExternalIdRelationshipsJson e DefaultValuesJson:
  in DataCoupler.razor.cs entrambi i blocchi di update profilo esistente
  (riattivazione profilo inattivo e sovrascrittura profilo attivo) omettevano
  questi campi nella copia, causandone l'azzeramento silenzioso ad ogni
  re-salvataggio. Ora entrambi i percorsi propagano correttamente i campi JSON.

- Fix scheduler - esclusione campi sorgente External ID dal mapping normale:
  in ScheduledProfileExecutionService.TransformRecordForRest i campi sorgente
  usati nelle External ID Relationships venivano inclusi anche nel loop di
  field mapping standard, generando dati duplicati nell'entita' destinazione.
  Ora il comportamento e' allineato alla UI manuale (TransformRecordToRestEntity).

- Aggiornata documentazione: README.md, AGENTS.md, copilot-instructions.md
2026-02-20 14:59:13 +01:00
Alessio Dal Santo b1f83aa7ab [Fix] Corretto sistema di versioning per container Docker
- Disabilitato target MSBuild GenerateVersionJson durante build CI/CD

- Aggiunta condizione: non esegue se ContinuousIntegrationBuild=true

- Aggiornato Dockerfile per usare /p:ContinuousIntegrationBuild=true

- Previene sovrascrittura del version.json generato dal workflow Gitea

- Risolve problema: container mostra v1.0.0-dev invece della versione da git tag
2026-02-17 14:32:05 +01:00
Alessio Dal Santo 20ca84e4f7 [Fix] Risolto problema SQLite in container Docker Linux
- Cambiato immagine base da Alpine a Debian per migliore compatibilità SQLite

- Aggiunto SQLitePCLRaw.bundle_e_sqlite3 per librerie native cross-platform

- Installato sqlite3 e libsqlite3-dev in Debian

- Risolve definitivamente: 'Error loading shared library libe_sqlite3.so'
2026-02-17 12:34:44 +01:00
Alessio Dal Santo 91704eb944 [Fix] Aggiunta libreria SQLite nativa al container Docker Linux
- Installato sqlite-libs in Alpine per supportare Microsoft.Data.Sqlite

- Aggiunto curl per healthcheck

- Risolve errore: 'Error loading shared library libe_sqlite3.so'
2026-02-17 12:19:17 +01:00
Alessio Dal Santo 3abfed91e1 [Feature] Implementato sistema di generazione automatica version.json
- Aggiunto MSBuild target che genera version.json automaticamente prima di ogni build

- Versione estratta dal tag git più recente (git describe --tags)

- Rimosso version.json dal tracking git (file generato automaticamente)

- Aggiornato .gitignore per escludere version.json

- Il file viene ora rigenerato ad ogni build con versione, commit SHA, branch e timestamp corretti
2026-02-17 11:20:57 +01:00
Alessio Dal Santo 9d146d521e [Fix] Risolto errore NETSDK1047 nella build Docker Windows
- Aggiunto --runtime win-x64 al comando restore

- Specificato -r win-x64 --self-contained false nella publish

- Il restore ora genera project.assets.json per net9.0/win-x64

- Sintassi corretta: --self-contained false invece di /p:SelfContained=false
2026-02-16 16:04:36 +01:00
Alessio Dal Santo 2e25b451c9 [Fix] Risolto errore NETSDK1067 nella build Docker Windows
- Sostituito /p:UseAppHost=false con /p:SelfContained=false in entrambi i Dockerfile

- .NET 9.0 richiede AppHost per applicazioni self-contained

- SelfContained=false è appropriato per container Docker con runtime separato

- Fix applicato sia a Dockerfile (Linux) che Dockerfile.windows
2026-02-16 15:56:02 +01:00
Alessio Dal Santo 201a15de1f Test auto-aggiornamento container 2026-02-16 15:48:40 +01:00
Alessio Dal Santo b9670ae426 [Feature] Implementato sistema di valori default per campi mapping
- Creato modello FieldMappingEntry per gestione unificata di field mapping e default values

- Aggiunta colonna DefaultValuesJson alla tabella DataCouplerProfile (max 4000 caratteri)

- Implementata UI con toggle per selezionare modalità Mapping o Default

- Supporto per 9 tipi di dati: string, int, long, decimal, double, float, boolean, datetime, datetimeoffset

- Aggiornata logica TransformRecordToRestEntity per applicare valori default dopo field mapping

- Implementata serializzazione/deserializzazione DefaultValues in DataCouplerProfileService

- Sistema completo di salvataggio/caricamento valori default nei profili

- Migrazione database AddDefaultValuesJsonToProfile creata e applicata
2026-02-16 14:42:03 +01:00
Alessio 483eb7b407 Fix: Risolto double-mapping negli External ID Relationships per Salesforce
- Implementata funzionalità completa External ID Relationships nell'interfaccia di mapping
- Corretto bug double-mapping: i campi sorgente usati per External ID non vengono più inclusi nei mapping normali
- Risolto errore MALFORMED_ID causato dall'invio duplicato di campi come proprietà dirette e nested objects
- Implementata logica corretta per relationship names: oggetti standard usano il nome diretto, custom objects usano suffisso __r
- Aggiunta UI a 3 colonne (Object, External ID Field, Source Field) per configurazione External ID Relationships
- Migrazione database per supporto External ID Relationships nei profili
- Aggiornato ProfileSaver.razor.cs per salvare/caricare External ID Relationships
- Aggiornato ScheduledProfileExecutionService.cs per gestire External ID nelle esecuzioni schedulate
- Formato JSON output corretto: { 'Account': { 'CardCode__c': 'V50000' } }

Documentazione: EXTERNAL_ID_RELATIONSHIPS_IMPLEMENTATION.md
2026-02-15 18:44:15 +01:00
Alessio Dal Santo ed5316fbdf [Fix] Risolti problemi pubblicazione e validazione query ODBC
- Disabilitato trimming per compatibilità con Blazor Server (risolve crash TypeLoadException)
- Configurati PublishSingleFile e ReadyToRun per deployment ottimizzato
- Rimosso controllo eccessivamente restrittivo sui commenti SQL in validazione query
- Ora permessi commenti -- e /* */ nelle query SELECT ODBC
2026-02-13 10:28:47 +01:00
Alessio Dal Santo 3a1c8da3cd [Cleanup] Rimosso pannello debug ODBC - Mapping ora funziona correttamente 2026-02-03 09:47:38 +01:00
Alessio Dal Santo 791f2cdc1f [Debug] Aggiunto pannello debug ODBC per diagnosticare visibilità mapping
- Mostra stato di tutte le variabili che controllano la visibilità del mapping
- Indica quale condizione non è soddisfatta (isSourceReady, isRestConnected, selectedRestEntity)
- Pannello visibile solo per connessioni ODBC
- Aiuta a identificare rapidamente il problema
2026-02-03 09:42:18 +01:00
Alessio Dal Santo d25d7cfd6d [Fix] Sezione mapping ora visibile per connessioni ODBC con query validata
- Modificata condizione isSourceReady in DataCoupler.razor
- Per ODBC: richiede solo useCustomQuery && isQueryValid (non isDatabaseConnected)
- Per altri DB: comportamento invariato (richiede isDatabaseConnected)
- Risolto: mapping non appariva dopo validazione query ODBC
2026-02-03 09:33:44 +01:00
Alessio Dal Santo 9e48666306 [Docs] Documentazione implementazione ODBC query custom only 2026-02-03 09:27:23 +01:00
Alessio Dal Santo 8a8ccec170 [Feature] ODBC connections ora utilizzano solo query custom, nascosto discovery tabelle
- Modificato OnDatabaseCredentialChanged per rilevare connessioni ODBC e forzare useCustomQuery = true
- Aggiunto metodo helper IsOdbcConnection() per verificare tipo credenziale
- Modificata UI DataCoupler.razor:
  * Nascosto pulsante 'Connetti e Scopri Schema' per ODBC
  * Mostrato messaggio esplicativo per ODBC
  * Resa sezione Query Custom sempre visibile per ODBC (senza discovery)
  * Nascosta sezione Lista Tabelle per ODBC
- Modificato ValidateCustomQuery per creare temporaneamente DatabaseManager per ODBC
- ODBC ora bypassa completamente il discovery e va diretto a query custom
2026-02-03 09:26:00 +01:00
Alessio Dal Santo f270a4a434 [Version] Aggiornato version.json a v2.2.0 2026-02-02 18:28:22 +01:00
Alessio Dal Santo 01f78466df [Feature] Implementazione completa supporto ODBC
- Aggiunta persistenza campi ODBC (OdbcDsnName, OdbcMode) in CredentialEntity
- Creata migration EF Core per nuovi campi database
- Aggiornato mapping credenziali per caricare/salvare dati ODBC
- Creato OdbcDatabaseManager dedicato (bypass EF Core che non supporta ODBC)
- Aggiornato DataConnectionFactory per usare OdbcDatabaseManager con connessioni ODBC
- Fix auto-load DSN: sostituito @onchange con @bind-Value:after in dropdown tipo database
- Fix test connessione SAP HANA: rimossa query SELECT 1 che causava errori sintassi
- Implementati tutti i metodi IDatabaseManager in OdbcDatabaseManager
- Supporto completo per discovery schema, tabelle e query ODBC

Risolve problema DbContext non configurato per ODBC e abilita connessioni ODBC complete.
2026-02-02 18:24:44 +01:00
Alessio Dal Santo e7fb9a5cc7 fix: Corretto caricamento version.json con percorso robusto e copia automatica in output 2026-02-02 12:27:38 +01:00
Alessio Dal Santo e1f7f919a2 fix: Configurato MinVer con tag prefix e verbosity per calcolo corretto versione 2.1.2 2026-02-02 12:18:10 +01:00
Alessio Dal Santo 593c0b686c fix: Tag latest solo per branch main
- Rimosso tag 'latest' da branch development, staging e dev
- Tag 'latest' ora riservato esclusivamente al branch main
- Altri branch mantengono tag specifici (development-latest, staging-latest, dev-latest)
- Modificati workflow GitHub Actions e Gitea Actions
- Semplifica la gestione delle versioni in produzione vs sviluppo
2026-02-02 12:08:52 +01:00
Alessio Dal Santo ae16f99776 feat: Implementato sistema di versioning automatizzato con MinVer e Gitea Actions
Build and Push Docker Images / Build Linux Container (push) Successful in 6m54s
Build and Push Docker Images / Build Windows Container (push) Has been cancelled
Build and Push Docker Images / Create Multi-Platform Manifest (push) Has been cancelled
- Aggiunto MinVer per calcolo automatico versione da git tags
- Creato modello VersionInfo e servizio VersionService
- Integrato display versione nel NavMenu (Data_Coupler v2.1.0)
- Aggiornato workflow Gitea Actions (Linux e Windows) per generare version.json
- Risolto problema inconsistenza versioning tra container Linux e Windows
- Documentazione completa: VERSIONING_SYSTEM.md e MINVER_SETUP.md
- Versione ora calcolata automaticamente da git tags (Semantic Versioning)
2026-02-02 12:00:05 +01:00
Alessio 81fce773a9 Fix: Ottimizzato Dockerfile e risolto timeout push registry Gitea
Build and Push Docker Images / Build Windows Container (push) Successful in 7s
Build and Push Docker Images / Create Multi-Platform Manifest (push) Has been cancelled
Build and Push Docker Images / Build Linux Container (push) Has been cancelled
- Migrato immagine runtime da Debian a Alpine (riduzione ~60% dimensione)
- Aggiunto suffisso -linux ai tag per manifest multi-platform
- Disabilitate attestations/provenance per ridurre overhead push
- Implementato retry automatico in caso di fallimento push
- Corretto utilizzo apk invece di apt-get per Alpine Linux

Risolve: HTTP 524 timeout durante push immagini al registry
2026-01-25 17:16:53 +01:00
Alessio 5cdad7fb7d Fix: Corretto manifest multi-platform per Gitea Actions
Build and Push Docker Images / Build Windows Container (push) Successful in 8s
Build and Push Docker Images / Build Linux Container (push) Failing after 15m38s
Build and Push Docker Images / Create Multi-Platform Manifest (push) Has been skipped
- Aggiunto suffisso -linux ai tag delle immagini Linux per distinguerli
- Aggiornati i comandi del manifest per usare tag espliciti -linux e -windows
- Risolto errore 'not found' durante creazione manifest su branch staging
- Applicato fix a tutti i branch (main, development, dev, staging)
2026-01-25 16:26:21 +01:00
Alessio Dal Santo a5f8943c72 [Feature] Implementata schedulazione completa per file CSV/Excel
Build and Push Docker Images / Build Linux Container (push) Successful in 8m59s
Build and Push Docker Images / Build Windows Container (push) Successful in 9m35s
Build and Push Docker Images / Create Multi-Platform Manifest (push) Failing after 25s
- Aggiunta validazione percorsi file prima del salvataggio profili
- Implementati metodi di lettura file CSV e Excel per schedulazioni
- Supporto doppia modalità: caricamento browser (preview) e percorso manuale (schedulazione)
- Gestione completa deletion sync anche per file CSV/Excel
- Rilevamento automatico separatori CSV (virgola, punto e virgola, tab, pipe)
- Supporto formati Excel legacy (.xls) e moderni (.xlsx)
- Abilitati profili file nella UI di schedulazione
- Logging dettagliato per troubleshooting
- Documentazione completa in CSV_SCHEDULING_IMPLEMENTATION.md
- Aggiornati README.md e copilot-instructions.md con nuove feature
- Rimosso testo 'TEST' dalla pagina di login
2026-01-25 12:45:32 +01:00