Fuehre technische Shopify-Runpersistenz ein
This commit is contained in:
@@ -7,6 +7,9 @@
|
||||
3. `db/migrations/0003_phase1_inventory_forecast.sql`
|
||||
4. `db/migrations/0004_phase1_direct_sales.sql`
|
||||
5. `db/migrations/0005_phase1_auto_switch_fix.sql`
|
||||
6. `db/migrations/0006_phase1_otc_products.sql`
|
||||
7. `db/migrations/0007_phase1_excel_webhook.sql`
|
||||
8. `db/migrations/0008_shopify_sync_technical.sql`
|
||||
|
||||
## Beispielausfuehrung
|
||||
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
BEGIN;
|
||||
|
||||
CREATE TABLE process_runs (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
process_name TEXT NOT NULL,
|
||||
status TEXT NOT NULL DEFAULT 'running',
|
||||
scope_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||
result_json JSONB,
|
||||
requested_by TEXT,
|
||||
started_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
finished_at TIMESTAMP,
|
||||
error_code TEXT,
|
||||
error_message TEXT,
|
||||
CONSTRAINT chk_process_runs_status CHECK (status IN ('running', 'done', 'partial_success', 'failed'))
|
||||
);
|
||||
|
||||
CREATE INDEX idx_process_runs_name_started ON process_runs(process_name, started_at DESC);
|
||||
CREATE INDEX idx_process_runs_status_started ON process_runs(status, started_at DESC);
|
||||
|
||||
CREATE TABLE shopify_webhook_event (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
webhook_id TEXT NOT NULL,
|
||||
topic TEXT NOT NULL,
|
||||
shop_domain TEXT NOT NULL,
|
||||
payload_sha256 TEXT NOT NULL,
|
||||
payload JSONB NOT NULL,
|
||||
shopify_order_gid TEXT,
|
||||
status TEXT NOT NULL DEFAULT 'received',
|
||||
received_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
processed_at TIMESTAMP,
|
||||
error_code TEXT,
|
||||
error_message TEXT,
|
||||
CONSTRAINT chk_shopify_webhook_event_status CHECK (status IN ('received', 'processed', 'duplicate', 'failed'))
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX uq_shopify_webhook_event_webhook_id ON shopify_webhook_event(webhook_id);
|
||||
CREATE INDEX idx_shopify_webhook_event_order_gid ON shopify_webhook_event(shopify_order_gid);
|
||||
CREATE INDEX idx_shopify_webhook_event_received_at ON shopify_webhook_event(received_at DESC);
|
||||
CREATE INDEX idx_shopify_webhook_event_status ON shopify_webhook_event(status, received_at DESC);
|
||||
|
||||
COMMIT;
|
||||
@@ -43,6 +43,11 @@ Diese Referenz ordnet die aktuellen Tabellen, Views und technischen DB-Artefakte
|
||||
- `outbound_webhook_event`
|
||||
- `system_user`
|
||||
|
||||
### `erp/import-integration`
|
||||
|
||||
- `process_runs`
|
||||
- `shopify_webhook_event`
|
||||
|
||||
## 3. Hinweise
|
||||
|
||||
- Die Ownership ist fachlich und technisch bindend.
|
||||
|
||||
@@ -112,6 +112,15 @@ Fachliche Übergabe: `erp/bestellungen`
|
||||
- [x] Verbindlichen Sub-Prozess-Vertrag für technische Shopify-Eventpersistenz dokumentieren.
|
||||
- [x] Verbindlichen Sub-Prozess-Vertrag für die identifier-only Bestellübergabe dokumentieren.
|
||||
- [ ] Technische Eingangstabelle und DB-Ownership für Shopify-Events festlegen.
|
||||
- [x] `process_runs` als technische Laufpersistenz im Submodul `erp/import-integration` definiert.
|
||||
- [x] `shopify_webhook_event` als technische Eingangstabelle im Submodul `erp/import-integration` definiert.
|
||||
- [x] DB-Ownership für `process_runs` und `shopify_webhook_event` dokumentiert.
|
||||
- [x] ERP-Backupskript im Repository angelegt: `scripts/db/synology_db_backup.sh`.
|
||||
- [x] ERP-Backupskript auf DEV bereitgestellt.
|
||||
- [x] Backupziel festgelegt: `/volume1/naurua_db_backups/dev`.
|
||||
- [x] PostgreSQL-17-Clientcontainer für das ERP-Backup verwendet.
|
||||
- [x] Manuelles DEV-Backup erfolgreich erzeugt und mit `pg_restore --list` verifiziert.
|
||||
- [ ] Migration `0008_shopify_sync_technical.sql` auf DEV ausführen.
|
||||
- [x] ERP-Backupskript im Repository angelegt: `scripts/db/synology_db_backup.sh`.
|
||||
- [x] ERP-Backupskript auf DEV bereitgestellt.
|
||||
- [x] Backupziel im Skript festgelegt: `/volume1/naurua_db_backups/dev`.
|
||||
@@ -257,10 +266,11 @@ Aktueller Blocker:
|
||||
- Der vorgeschriebene DEV-DB-Wrapper `/volume2/webssd/erpnaurua/dev/scripts/db/psql.sh` ist auf Synology nicht vorhanden.
|
||||
- Auf ausdrückliche Anweisung wurde ein read-only-Direktzugriff über `/usr/bin/psql` verwendet.
|
||||
- Die vollständige Shopify-Bestandszählung und historische Zuordnung bleiben weiterhin offen.
|
||||
- Der Cron-Aufruf erreicht das Skript jetzt; der Lauf bricht kontrolliert ab, weil der Server PostgreSQL 17 und der verfügbare Client `pg_dump` 11 verwendet.
|
||||
- Der Cron-Aufruf erreicht das Skript und verwendet den PostgreSQL-17-Clientcontainer.
|
||||
- Das Backupziel ist `/volume1/naurua_db_backups/dev`.
|
||||
- Der Logpfad ist `/volume1/naurua_db_backups/dev/synology_db_backup.log`.
|
||||
- Es wurde kein gültiges Backup und keine DB-Änderung erzeugt.
|
||||
- Ein gültiger DEV-Dump wurde erzeugt und mit `pg_restore --list` verifiziert.
|
||||
- Die DB-Migration wurde nach dem Backup noch nicht ausgeführt.
|
||||
|
||||
## Abnahmeregel
|
||||
|
||||
|
||||
Reference in New Issue
Block a user