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>
This commit is contained in:
70
tool/reseed_today.sh
Executable file
70
tool/reseed_today.sh
Executable file
@ -0,0 +1,70 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Datiert ALLE vorhandenen Touren auf den heutigen Tag um.
|
||||
#
|
||||
# Zweck: nach `seed_demo_data.sh 2026-06-01` (oder Touren aus dem ERP-Sync
|
||||
# mit anderem Datum) holt dieses Skript alle Touren auf CURRENT_DATE, damit
|
||||
# die App sie als „heutige Tour" anzeigt.
|
||||
#
|
||||
# WICHTIG: ersetzt, fügt nichts hinzu.
|
||||
# * Es werden KEINE neuen Touren angelegt.
|
||||
# * Bestehende Lieferungen / Items / Notizen / Scans bleiben erhalten —
|
||||
# nur `tour_date` (und `synced_at`) der Tour selbst wandert auf heute.
|
||||
#
|
||||
# Sonderfall mehrere Touren pro Account: die Tabelle hat
|
||||
# `UNIQUE (account_id, tour_date)`. Hätte ein Account mehrere Touren an
|
||||
# verschiedenen Tagen, würde ein pauschales Umdatieren den Constraint
|
||||
# verletzen. Deshalb behalten wir pro Account die jüngste Tour
|
||||
# (tour_date, dann synced_at, dann id als Tie-Break) und löschen die
|
||||
# älteren Duplikate (CASCADE räumt deren Lieferungen).
|
||||
#
|
||||
# Aufruf:
|
||||
# ./tool/reseed_today.sh
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
CONTAINER="${CONTAINER:-holzleitner-postgres}"
|
||||
DB_USER="${DB_USER:-holzleitner}"
|
||||
DB_NAME="${DB_NAME:-holzleitner}"
|
||||
|
||||
if ! docker inspect "$CONTAINER" >/dev/null 2>&1; then
|
||||
echo "✗ Container '$CONTAINER' läuft nicht. Starte docker compose up -d." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "→ Alle Touren auf heute (CURRENT_DATE) umdatieren …"
|
||||
|
||||
docker exec -i "$CONTAINER" psql -U "$DB_USER" -d "$DB_NAME" -v ON_ERROR_STOP=1 -q <<'SQL'
|
||||
BEGIN;
|
||||
|
||||
-- ── 1. Duplikate pro Account abräumen ────────────────────────────────
|
||||
-- Pro account_id genau die jüngste Tour behalten; ältere löschen, damit
|
||||
-- das anschließende Umdatieren nicht in die UNIQUE(account_id, tour_date)-
|
||||
-- Constraint läuft. CASCADE räumt deliveries → items → scans → notes.
|
||||
DELETE FROM tours t
|
||||
USING tours newer
|
||||
WHERE t.account_id = newer.account_id
|
||||
AND (newer.tour_date, newer.synced_at, newer.id)
|
||||
> (t.tour_date, t.synced_at, t.id);
|
||||
|
||||
-- ── 2. Verbleibende Touren auf heute datieren ────────────────────────
|
||||
-- Nach Schritt 1 gibt es pro Account genau eine Tour → kein Constraint-
|
||||
-- Konflikt. Touren, die bereits heute liegen, sind ein No-Op.
|
||||
UPDATE tours
|
||||
SET tour_date = CURRENT_DATE,
|
||||
synced_at = NOW();
|
||||
|
||||
COMMIT;
|
||||
|
||||
\echo
|
||||
\echo --- TOUREN (jetzt alle heute) ---
|
||||
SELECT t.account_id,
|
||||
t.tour_date,
|
||||
COUNT(d.id) AS lieferungen
|
||||
FROM tours t
|
||||
LEFT JOIN deliveries d ON d.tour_id = t.id
|
||||
GROUP BY t.account_id, t.tour_date
|
||||
ORDER BY t.account_id;
|
||||
SQL
|
||||
|
||||
echo "✓ Alle Touren auf heute umdatiert."
|
||||
Reference in New Issue
Block a user