Injection di formule nei CSV (export di produzione e export dal browser) #22
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
GRAVITÀ: media
FILE: src/backend/services/production_export_service.py:110-136 ; src/backend/api/routers/measurements.py:337-350 ; src/frontend/flask_app/static/js/csv-export.js:210-224
COSA:
lot_number,serial_number,subtask.descriptionscritti così come arrivano; il file è pensato per Excel (BOM).escapeCsvValuequota solo;,\n,".INPUT:
lot_number='=HYPERLINK("http://x","y")'.VERIFICATO: script pytest → riga CSV
1,ST-PROD,A,1,"=HYPERLINK(""http://x"",""y"")",....ORIGINE: revisione fable del 21/09/2026 su ramo
V3.0.0, commit8cc5e82. Documento completo:_output/2026-09-21-TieMeasureFlow-revisione.mdsu Wasabi.⚡ jeeg — preso in carico 2026-09-21T20:22:59Z
ramo:
lavoro/jeeg· capacità: docker, gpu, systemdANALISI (passo 1) — ramo
lavoro/jeeg, worktree~/lavoro/TieMeasureFlowsu jeeg, lotto A3+B2MODIFICHE backend (A3): funzione unica
neutralise_csv_cell(s)(in src/backend/services/production_export_service.py, importata da src/backend/api/routers/measurements.py): se la stringa, tolti gli spazi iniziali, comincia con=,+,-,@, TAB o CR → anteponi'. Applicala a TUTTI i campi testuali (lotto, seriale, descrizioni, nomi, codici), non ai numeri.MODIFICHE frontend (B2): src/frontend/flask_app/static/js/csv-export.js
escapeCsvValue— stessa regola, e quota anche i valori con\r.TEST: lotto
=HYPERLINK(...)→ cella'=HYPERLINK(...); valore numerico negativo −1.25 nella colonna valore resta numero.Soluzione
ESITO: fatto
COSA:
neutralise_csv_cell(backend, export di produzione ed export misure) eescapeCsvValue(csv-export.js): le celle di testo che iniziano con = + - @ TAB CR ricevono un apice; i numeri negativi restano numeri.COMMIT (ramo lavoro/jeeg, unito su V3.0.0 a
d483fa1): c0583da;0dce229PROVA:
uv run --extra server --extra client --extra dev pytest -q→ 622 passed, 4 skipped (erano 391); visione su Python 3.13 → 16 passed (erano 8).