Bringt das Backend vom initialen Skeleton auf den aktuellen Arbeitsstand (Clean Architecture: domain → application → infrastructure → api). Wesentliche Bereiche: - ERP-Anbindung (MSSQL-Pull der Touren, Import-Scheduler, Rückschreiben) - Lieferlebenszyklus: Scan/Hold/Cancel/Complete, Gutschriften, Notizen, Bild-Anhänge, Unterschriften, PDF-Lieferreport → DOCUframe - Stammdaten: Kunden, Artikel, Lager, Zahlungsarten, Services - Keycloak-JWT-Gate + Fahrer-Provisionierung via Admin-API - Admin-API-Key-Gate (X-Admin-Api-Key) für Maschinen-Endpunkte Jüngste Änderungen dieser Session: - Belegspezifische Kontaktdaten: alle ERP-Adressen (Beleg-/Liefer-/ Rechnungsadresse, Ansprechpartner, Kundenstamm) mit Telefon/Mobil/ E-Mail werden gesynct (Migration 0029, MSSQL-Query, TourDetails) - Konfiguration von .env (envy/dotenvy) auf config.toml (toml/serde) umgestellt; Vorlage config.example.toml, Pfad via HOLZLEITNER_CONFIG Nicht im Repo (per .gitignore): config.toml (Secrets), data/ (Laufzeit-/ Kundendaten), demo.mp4, .claude/, variocontrol-ai/. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
41 lines
1.8 KiB
SQL
41 lines
1.8 KiB
SQL
-- 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()
|
|
);
|