diff --git a/migrations/012_failed_jobs_and_output_ext.sql b/migrations/012_failed_jobs_and_output_ext.sql new file mode 100644 index 0000000..adf5ba7 --- /dev/null +++ b/migrations/012_failed_jobs_and_output_ext.sql @@ -0,0 +1,11 @@ +-- Aufträge dürfen jetzt auch „failed" sein (alle Positionen fehlgeschlagen) → rot in der Übersicht. +ALTER TABLE jobs DROP CONSTRAINT IF EXISTS jobs_status_check; +ALTER TABLE jobs ADD CONSTRAINT jobs_status_check + CHECK (status IN ('queued','running','paused','done','cancelled','failed')); + +-- Ausgabeformat der Bilddatei: global (settings) + optionaler Rezept-Override. +-- „png" = verlustfrei (Standard, nötig für Transparenz), „jpg" = klein/Picdrop-freundlich. +ALTER TABLE settings ADD COLUMN IF NOT EXISTS output_ext text NOT NULL DEFAULT 'png' + CHECK (output_ext IN ('png','jpg')); +ALTER TABLE recipes ADD COLUMN IF NOT EXISTS output_ext text + CHECK (output_ext IN ('png','jpg')); diff --git a/src/components/AdminApp.tsx b/src/components/AdminApp.tsx index d1b2efb..a692bb8 100644 --- a/src/components/AdminApp.tsx +++ b/src/components/AdminApp.tsx @@ -76,6 +76,7 @@ export default function AdminApp() { picdrop_host: s.picdrop_host, picdrop_protocol: s.picdrop_protocol, picdrop_port: s.picdrop_port, picdrop_user: s.picdrop_user, picdrop_base_path: s.picdrop_base_path, picdrop_default_gallery: s.picdrop_default_gallery, default_dpi: s.default_dpi, default_crop_mode: s.default_crop_mode, concurrency: s.concurrency, + output_ext: s.output_ext || 'png', cricut_sheet_cm: s.cricut_sheet_cm, monthly_budget: s.monthly_budget, n8n_webhook_url: s.n8n_webhook_url, keep_sources: !!s.keep_sources, make_thumbnails: s.make_thumbnails !== false, retention_days: s.retention_days, picdrop_metadata_sidecar: !!s.picdrop_metadata_sidecar, nas_metadata_sidecar: !!s.nas_metadata_sidecar, @@ -204,6 +205,13 @@ export default function AdminApp() {