- SchedulingHistory.razor / .cs: iniettato IWebHostEnvironment per nascondere
lo stack trace (con percorsi di file) in produzione; in produzione viene
mostrato solo il messaggio di errore sanitizzato e un avviso che invita a
consultare i log dell'applicazione; in sviluppo il dettaglio completo resta
visibile invariato.
- Scheduling.razor.cs (ExecuteScheduleManually): isolata la notifica JS
(ShowSuccessMessage / ShowErrorMessage) in un blocco try-catch separato per
TaskCanceledException / OperationCanceledException. In questo modo una
disconnessione del browser durante un'esecuzione lunga non sovrascrive più
il risultato già salvato correttamente come 'success' con uno stato 'failed'
e lo stack trace di un'eccezione JSInterop. L'evento viene registrato come
avviso di log senza impatto sul record storico.
- ScheduledJobService.cs: aggiunto commento esplicativo sul motivo per cui
il dettaglio completo (ex.ToString) è salvato nel DB ma la UI ne mostra
solo la versione sanitizzata in produzione.
- 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