MEGAINFRA-WEBAPP/scripts
DEls 658d83dcff fix(pb): allow PDF and image MIME on data_import_batches.original_file
The PO upload route (and the delivery-notes and xlsx import
paths) writes the uploaded file into the DATA_IMPORT_BATCHES.
original_file field. That field was bootstrapped with a CSV/Excel
allowlist only:

  text/csv, text/plain, application/vnd.ms-excel, application/csv

When the upload route was rewritten on 2026-08-19 (commit f0f7c82)
to write directly to PB instead of forwarding the file to n8n, every
PDF and image upload started failing PB field validation with
validation_invalid_mime_type, surfacing in the API as a 500 with
error='batch_create_failed' and the real cause buried in
pb_data.original_file. The 2026-08-24 migration that should have
added xlsx was also never applied to prod (verified in PB:
xlsx missing too).

Migration: scripts/migrations/2026-08-31-data-import-batches-allow-pdf-images.py
- Strictly additive: unions the new mimeTypes onto the existing
  allowlist, exits no-op if already applied (verified idempotent).
- Adds application/pdf, image/jpeg, image/png, image/webp (PDF /
  image support for the PO and delivery-note flows) and
  application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
  (xlsx, completing the missed 2026-08-24 migration).
- No code change in the upload routes required - they were already
  validating against ALLOWED_MIME in purchase-order-schema.ts and
  expecting PB to accept the same set.

Verification on https://pb.mega.infra.apphub.co.za:
  Before: POST /api/purchase-orders/upload (PDF) -> HTTP 500,
    pb_data.original_file.code = 'validation_invalid_mime_type'.
  After:  same POST -> HTTP 202 with batch_id, PB row created
    (batch_type=purchase_orders, status=pending, file_hash
    populated, original_file stored).
2026-08-31 12:20:41 +02:00
..
__pycache__ fix(vehicles): handle empty unit_type during updates 2026-08-29 19:17:14 +02:00
migrations fix(pb): allow PDF and image MIME on data_import_batches.original_file 2026-08-31 12:20:41 +02:00
build-icons.mjs refactor(pwa): address code review on build-icons.mjs 2026-08-30 22:18:25 +02:00
build-og-image.mjs Add Open Graph image + social link preview metadata 2026-08-09 20:01:13 +02:00
generate-plant-hours-template.ts fix(plant-hours-template): ESM-safe __dirname + freeze note 2026-08-28 12:55:08 +02:00
migrate-delivery-notes-ocr.py feat(delivery-notes): enhance delivery note upload and processing 2026-08-26 15:33:30 +02:00
patch-next-dev-blocker.cjs Fix Coolify build: skip postinstall in deps stage 2026-08-09 02:29:48 +02:00
pb-bootstrap-schema.py fix(pb): make vehicles.unit_type optional 2026-08-28 15:26:33 +02:00
pb-relax-rules.py Update package dependencies and remove unused API routes 2026-08-19 00:14:47 +02:00