Summary
Catalog CSV import accepts negative and partially parsed numeric values, silently accepts unclosed quoted fields, and reports reactivated add-ons as created. This can corrupt product/add-on financial fields and produce misleading import results.
Current behavior
main/routes/menu-csv.ts:271-292,388-434 uses permissive parseFloat handling and accepts negative monetary values.
main/routes/menu-csv.ts:13-49 does not reject EOF while inside a quoted field.
- Reactivated groups/add-ons are not reported separately from newly created records.
Expected behavior
Malformed CSV and invalid numeric values should be rejected with row-specific errors, and import result counters should accurately describe each operation.
Acceptance criteria
- Use strict full-string finite-number parsing and reject negative monetary values.
- Reject unterminated quoted fields and add focused malformed-input tests.
- Add explicit row/cell/value length limits within the existing request-body limit.
- Report created, updated, reactivated, skipped, and failed rows separately.
- Preserve the currently tested tax-column semantics unless intentionally changing the import contract.
Relevant files
main/routes/menu-csv.ts
Summary
Catalog CSV import accepts negative and partially parsed numeric values, silently accepts unclosed quoted fields, and reports reactivated add-ons as created. This can corrupt product/add-on financial fields and produce misleading import results.
Current behavior
main/routes/menu-csv.ts:271-292,388-434uses permissiveparseFloathandling and accepts negative monetary values.main/routes/menu-csv.ts:13-49does not reject EOF while inside a quoted field.Expected behavior
Malformed CSV and invalid numeric values should be rejected with row-specific errors, and import result counters should accurately describe each operation.
Acceptance criteria
Relevant files
main/routes/menu-csv.ts