-- 0020_delivery_completions.sql -- -- Abschluss-Beleg einer Lieferung: dokumentiert den Moment, in dem Kunde -- und Fahrer unterschreiben und die Lieferung auf `completed` geht. -- -- Genau EINE Zeile pro Lieferung (PK = delivery_id). Der Abschluss ist -- terminal — ein zweiter Versuch wird vom Use Case über das -- `state == active`-Gate abgelehnt; existiert die Zeile schon und steht -- die Lieferung auf `completed`, liefert der Server idempotent denselben -- Stand zurück. -- -- Die beiden Unterschriften liegen NICHT in der DB, sondern als PNG-Dateien -- lokal im Backend-Server (Pfad konfigurierbar). Hier stehen nur die -- relativen Datei-Referenzen. -- -- Die Checkbox-Bestätigungen des Kunden werden hier dauerhaft dokumentiert: -- * receipt_confirmed — „Ware ordnungsgemäß erhalten / Aufbau korrekt" -- * notes_acknowledged — „Anmerkungen zur Lieferung zur Kenntnis genommen" -- `acknowledged_note_ids` hält die konkreten Notiz-IDs fest, die zum -- Zeitpunkt des Abschlusses sichtbar waren und mit-bestätigt wurden -- (Audit-Robustheit, falls später Notizen dazukommen/wegfallen). CREATE TABLE delivery_completions ( delivery_id UUID PRIMARY KEY REFERENCES deliveries(id) ON DELETE CASCADE, -- Relative Pfade/Referenzen der lokal gespeicherten Signatur-PNGs. customer_signature_path TEXT NOT NULL, driver_signature_path TEXT NOT NULL, -- Dokumentierte Checkbox-Bestätigungen des Kunden. receipt_confirmed BOOLEAN NOT NULL, notes_acknowledged BOOLEAN NOT NULL, acknowledged_note_ids UUID[] NOT NULL DEFAULT '{}', -- Akteur: Personalnummer aus dem JWT (Pflicht), Fahrzeug optional. completed_by_personalnummer BIGINT NOT NULL, completed_by_car_id UUID, completed_at TIMESTAMPTZ NOT NULL DEFAULT now() );