-- 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()
);
