diff --git a/backend/src/database/migrations/072_checklisten_intervall_fix.sql b/backend/src/database/migrations/072_checklisten_intervall_fix.sql new file mode 100644 index 0000000..4c11903 --- /dev/null +++ b/backend/src/database/migrations/072_checklisten_intervall_fix.sql @@ -0,0 +1,10 @@ +-- Migration 072: Fix checklist_vorlagen intervall CHECK constraint +-- The original constraint in 068 was missing 'quarterly' and 'halfyearly'. +-- These values are used in the frontend and service but were rejected by the DB. + +ALTER TABLE checklist_vorlagen + DROP CONSTRAINT IF EXISTS checklist_vorlagen_intervall_check; + +ALTER TABLE checklist_vorlagen + ADD CONSTRAINT checklist_vorlagen_intervall_check + CHECK (intervall IN ('weekly', 'monthly', 'quarterly', 'halfyearly', 'yearly', 'custom')); diff --git a/frontend/src/pages/ChecklistAusfuehrung.tsx b/frontend/src/pages/ChecklistAusfuehrung.tsx index d94567a..68ff03c 100644 --- a/frontend/src/pages/ChecklistAusfuehrung.tsx +++ b/frontend/src/pages/ChecklistAusfuehrung.tsx @@ -126,7 +126,7 @@ export default function ChecklistAusfuehrung() { }); // ── Loading states ── - if (isNew || startingExecution) { + if (isNew) { return ( @@ -155,6 +155,7 @@ export default function ChecklistAusfuehrung() { const items = execution.items ?? []; const vorlageItems = items.filter((i) => i.vorlage_item_id != null); const vehicleItems = items.filter((i) => i.fahrzeug_item_id != null); + const equipmentItems = items.filter((i) => i.ausruestung_item_id != null); const renderItemGroup = (groupItems: ChecklistAusfuehrungItem[], title: string) => { if (groupItems.length === 0) return null; @@ -223,7 +224,7 @@ export default function ChecklistAusfuehrung() { {execution.vorlage_name ?? 'Checkliste'} - {execution.fahrzeug_name ?? '–'} · {formatDate(execution.ausgefuehrt_am ?? execution.created_at)} + {execution.fahrzeug_name ?? execution.ausruestung_name ?? '–'} · {formatDate(execution.ausgefuehrt_am ?? execution.created_at)} 0 && vehicleItems.length > 0 && } {renderItemGroup(vehicleItems, 'Fahrzeugspezifische Items')} + {(vorlageItems.length > 0 || vehicleItems.length > 0) && equipmentItems.length > 0 && } + {renderItemGroup(equipmentItems, 'Ausrüstungsspezifische Items')} {items.length === 0 && ( Keine Items in dieser Checkliste. diff --git a/frontend/src/types/checklist.types.ts b/frontend/src/types/checklist.types.ts index b1fd531..8975818 100644 --- a/frontend/src/types/checklist.types.ts +++ b/frontend/src/types/checklist.types.ts @@ -57,6 +57,7 @@ export interface ChecklistAusfuehrungItem { ausfuehrung_id: string; vorlage_item_id?: number; fahrzeug_item_id?: number; + ausruestung_item_id?: number; bezeichnung: string; ergebnis?: 'ok' | 'nok' | 'na'; kommentar?: string;