link-it / govpay

Porta di accesso al sistema pagoPA
GNU General Public License v3.0
43 stars 22 forks source link

Tracciato CSV di esito con blank line in eccesso #316

Closed nardil closed 3 years ago

nardil commented 3 years ago

Descrizione del Bug Il tracciato CSV di esito di un caricamento massivo presenta i record correttamente, ma intervallati da una linea vuota che non dovrebbe essere presente.

pintorig commented 3 years ago

@simo-git nella sezione Impostazioni, quando si caricano i template delle trasformazioni per i tracciati csv, i file caricati vengono codificati in base64 per essere inviati al server. Il base64 ricevuto dal server (ho decodificato il contenuto della richiesta che fa il cruscotto), contiene una riga bianca in fondo che provoca la generazione del CSV di esito con le righe bianche.

simo-git commented 3 years ago

Ho fatto alcune prove di salvataggio e caricamento partendo dai file presenti su dev. Inizialmente il file corrispondente al template del "caricamento" presentava linee vuote al suo interno. Ho ripulito la struttura del file e caricato nuovamente il nuovo contenuto. Tracciando in console, il base64 decodificato, al momento del salvataggio, non mi risultano alterazioni dovute a linee vuote aggiuntive o intermedie. Il componente angular non modifica il contenuto (e ciò che si vede nel preview del browser è indipendente dal valore presente nel json). E' possibile che sia stato caricato in origine già con linee vuote al suo interno?

Screen Shot Screen Shot_1
pintorig commented 3 years ago

@simo-git ho fatto un nuovo tentativo, ho caricato il template da file system e poi ho salvato, il contenuto della richiesta visualizzato nel browser e' il seguente (ho fatto anche la decodifica del base64 inviato)

Screenshot from 2021-06-04 10-53-35

Screenshot from 2021-06-04 10-53-57

Il server riceve il file con la linea bianca aggiuntiva finale

pintorig commented 3 years ago

La riga in piu' e' presente in tutti i caricamenti di file della console, ho provato a caricare file in diversi punti e tutti arrivano al server con una riga bianca in fondo.

simo-git commented 3 years ago

@pintorig usando i file campione che mi hai passato ho notato che aprendoli in anteprima non presentavano la linea vuota in eccesso ma quelli salvati invece si. La comparsa della nuova riga in fondo ad un file di testo è automatica ed è derivata da una regola universale.

...according to POSIX, every text file... should end with a \n, or “newline” (not “a new line”) character. This acts as the eol, or the “end of line” character. It is a line “terminator”.

Ho impostato la rimozione del carattere di eol nella stringa codificata in base64. Questa modifca dovrebbe correggere il problema.