Soluzione
ESITO: fatto
COSA: csv-export.js legge da m.subtask (descrizione, unità, nominale, tolleranze calcolate da utl/ltl); operatore = measured_by (l'unico campo reale). Test…
Soluzione
ESITO: fatto
COSA: Il riepilogo filtra per lotto, seriale e operatore corrente e pagina oltre 500. Il filtro per production_run_id manca al backend: issue nuova.
COMMIT (ramo…
Soluzione
ESITO: fatto
COSA: confirmCycle: se la produzione è aperta e il server rifiuta, cycleConfirmed torna false, l'overlay si riapre con l'errore; il ramo locale vale solo senza…
Soluzione
ESITO: fatto
COSA: _fitCanvasToImage riscalare ogni oggetto del fattore newScale/oldScale (posizione, dimensioni, font, estremi delle frecce); guardia beforeunload con modifiche…
Soluzione
ESITO: fatto COSA: numpad.js: all'inizio di una raffica HID le cifre digitate a mano prima vengono scartate; parte intera oltre il limite → lettura rifiutata con evento `numpad-erro…
Soluzione
ESITO: fatto COSA: Ordine ltl ≤ lwl ≤ nominale ≤ uwl ≤ utl validato alla creazione (modello) e all'update parziale sui valori risultanti (router) → 422. Prova originale…
Soluzione
ESITO: fatto
COSA: Il login riusa la api_key esistente (più postazioni convivono), il logout non la azzera salvo all_sessions, il cambio password la azzera, bcrypt a tempo…
Soluzione
ESITO: fatto
COSA: Backend: aprire/avanzare/pausa/ripresa/chiusura richiedono MeasurementTec, Supervisor o admin; open_run rifiuta ricetta non attiva o non assegnata alla…
Soluzione
ESITO: fatto
COSA: PUT /api/settings/ valida per chiave (csv_delimiter un carattere fra , ; TAB
Soluzione
ESITO: fatto
COSA: neutralise_csv_cell (backend, export di produzione ed export misure) e escapeCsvValue (csv-export.js): le celle di testo che iniziano con = + - @ TAB CR…
Soluzione
ESITO: fatto COSA: DELETE vietato sotto statistics/, reports/, logos/ (403) e sui file referenziati da versioni non correnti o con misure (409). GET di statistics/ e reports/…