Database Migrations
Reihenfolge
db/migrations/0001_phase1_core.sqldb/migrations/0002_phase1_seed_methods.sqldb/migrations/0003_phase1_inventory_forecast.sqldb/migrations/0004_phase1_direct_sales.sqldb/migrations/0005_phase1_auto_switch_fix.sql
Beispielausfuehrung
psql "$DATABASE_URL" -f db/migrations/0001_phase1_core.sql
psql "$DATABASE_URL" -f db/migrations/0002_phase1_seed_methods.sql
psql "$DATABASE_URL" -f db/migrations/0003_phase1_inventory_forecast.sql
psql "$DATABASE_URL" -f db/migrations/0004_phase1_direct_sales.sql
psql "$DATABASE_URL" -f db/migrations/0005_phase1_auto_switch_fix.sql
Enthaltene Kernlogik in 0001
- Phase-1 Tabellen, Indizes und Constraints
- Bestands-View
v_stock_lot_balance - Trigger fuer:
- Negativbestand-Schutz
- Auto-Anlage von
current+openbei neuem Produkt - Auto-Status fuer Bestellpositionen (
allocated/partially_cancelled/cancelled) - Auto-Chargenwechsel bei leerer
current-Charge - Outbox-Events fuer Outbound-Webhook
Hinweis
ENV-Werte fuer Outbound-Zustellung (n8n URL/Secret) werden spaeter von der Applikation/Worker genutzt. Die DB-Migration legt dafuer die Outbox-Struktur bereits an.
Abverkaufdatum und Warnung
Die Migration 0003 fuehrt die interne Prognosefunktion ein:
SELECT fn_refresh_sellout_forecast(60, 60);
UI-Read-Modell:
SELECT * FROM v_stock_lot_ui_alerts ORDER BY product_name, status DESC, lot_number;
Direktverkauf (Migration 0004)
0004 erweitert Bestellungen um order_source (wix | direct) und erlaubt Direktverkaeufe ohne Kontaktzuordnung (party_id = NULL). Zusaetzlich:
- Guardrail: Direktbestellungen muessen
external_refmitDIR--Praefix haben. - Generator-Funktion:
fn_next_direct_sales_order_ref(...). - Trigger: automatische Vergabe einer
DIR-...Nummer, falls leer. - Zahlungsarten fuer Direktverkauf:
cash,paypal(zus. zu bestehenden Methoden).