Files
Holzleitner---Backend--aktu…/migrations/0017_seed_real_services.sql
Dennis Nemec 6a9b5872e1 Backend-Arbeitsstand: ERP-Sync, Lieferlebenszyklus, Reports + config.toml
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>
2026-06-01 17:52:58 +02:00

33 lines
2.2 KiB
SQL

-- 0017_seed_real_services.sql
--
-- Ersetzt den Platzhalter-Seed aus 0016 durch die **echten** Lieferoptionen
-- aus dem Altsystem. Quelle: DOCUframe-Makro
-- `_SV/_DF_APP/_initDelivery.dfm` (gegengeprüft in `_getOptionColumnByKey.dfm`)
-- — 8 Optionen, 2 numerisch (Stückzahlen), 6 boolean. Im Makro gibt es keine
-- min/max-Werte; für die Stückzahlen setzen wir fachlich `min = 0`, kein max.
--
-- (Migration 0016 wurde bereits angewandt und bleibt unangetastet — daher die
-- Korrektur in einer eigenen Migration statt eines Edits.)
-- Platzhalter-Seeds entfernen. Erst etwaige Pro-Lieferung-Werte lösen
-- (FK ON DELETE RESTRICT), dann die Definitionen.
DELETE FROM delivery_services
WHERE service_id IN (
SELECT id FROM services
WHERE key IN ('podium_setup', 'old_appliance_taken', 'commissioning', 'floor')
);
DELETE FROM services
WHERE key IN ('podium_setup', 'old_appliance_taken', 'commissioning', 'floor');
-- Echte Optionen (deterministische UUIDs für stabile Seeds/Tests).
-- sort_order = Reihenfolge wie in der alten App (numerische zuerst).
INSERT INTO services (id, key, name, kind, min_value, max_value, sort_order) VALUES
('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaa01', 'AMOUNT_OLD_DEVICES', 'Anzahl alter Geräte', 'numeric', 0, NULL, 1),
('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaa02', 'AMOUNT_MOUNTED_DEVICES', 'Anzahl montierter Geräte', 'numeric', 0, NULL, 2),
('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaa03', 'DEVICE_ALIGNED', 'Gerät ausgerichtet', 'boolean', NULL, NULL, 3),
('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaa04', 'ON_PLATFORM', 'Auf Podest gestellt', 'boolean', NULL, NULL, 4),
('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaa05', 'REVISIT_REQUIRED', 'Erneute Anfahrt notwendig', 'boolean', NULL, NULL, 5),
('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaa06', 'TEST_RUN_COMPLETE', 'Testdurchlauf durchgeführt', 'boolean', NULL, NULL, 6),
('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaa07', 'TIGHTNESS_TEST_DONE', 'Dichtigkeitstest durchgeführt','boolean', NULL, NULL, 7),
('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaa08', 'TUBE_EXTENSION_REQUIRED', 'Schlaucherweiterung notwendig','boolean', NULL, NULL, 8);