Files
skrift-programme/Docker/directus/bootstrap/README.md
Lucas Orth 2dbbc4611a Directus als Daten-/Auth-Schicht + Backend-Anbindung
Directus (Postgres, hinter NPM) wird die zentrale Datenquelle für Kunden,
Aufträge, Produkte, Preise und Gutscheine; das skrift-backend bleibt reine
Generierungs-Engine.

- Docker/directus: docker-compose (Directus 11 + Postgres), Bootstrap-Skript
  legt Collections, Rollen/Policies/Rechte und Seed idempotent an.
- Extension skrift-auth: passwortloser Login per E-Mail-Code (Codes nur als
  Hash, Ablauf, Versuchslimit) sowie Kontoanlage aus dem Checkout.
- Extension skrift-orders: kontrollierter Bestell-Endpunkt für Gäste und
  eingeloggte Kunden; Preis wird immer serverseitig berechnet (editierbare
  Formel via sicherem Interpreter, Werte aus price_items).
- skrift-backend: neuer Endpunkt /api/order/from-directus erzeugt SVGs aus
  einem Directus-Auftrag und schreibt Status + artifact_path zurück. Dafür
  wurde die Kernlogik aus generateOrder als runGeneration herausgelöst
  (Verhalten unverändert); generateOrder ist jetzt ein HTTP-Wrapper.
- compose: NPM-Netz ergänzt, API_TOKEN/DIRECTUS_* werden durchgereicht.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 19:13:35 +02:00

53 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Directus Bootstrap
Legt das Skrift-Datenmodell (Collections, Beziehungen, Rollen/Rechte, Seed) idempotent in einer laufenden Directus-Instanz an. Mehrfach ausführbar – Vorhandenes wird übersprungen.
## Voraussetzungen
- Directus läuft (siehe `../docker-compose.yml`) und ist erreichbar.
- Node ≥ 18 (kein `npm install` nötig – nutzt nur Bordmittel).
- Ein Admin-Zugang: entweder ein **statischer Admin-Token** oder Admin-E-Mail/Passwort.
## Ausführen
Mit Token (empfohlen – Token im Directus-Admin unter dem Admin-Nutzer erzeugen):
```bash
DIRECTUS_URL=https://admin.skrift.de \
DIRECTUS_TOKEN=<admin-static-token> \
node bootstrap.mjs
```
Alternativ mit Login:
```bash
DIRECTUS_URL=https://admin.skrift.de \
ADMIN_EMAIL=admin@skrift.de \
ADMIN_PASSWORD=... \
node bootstrap.mjs
```
Nur Schema + Seed, ohne Rollen/Rechte (zum stufenweisen Testen):
```bash
SKIP_PERMISSIONS=1 DIRECTUS_URL=... DIRECTUS_TOKEN=... node bootstrap.mjs
```
## Was es anlegt
- **Collections:** customers, products, formats, motifs, price_items, pricing_settings,
vouchers, voucher_redemptions, orders, order_entries, order_addons, jobs, status_history.
- **Rollen/Policies:** Staff (volle Verwaltung), Customer (nur Eigenes + Katalog lesen),
Public (aktive Kataloge lesen), Service (Backend/Produktion: lesen + Status schreiben).
- **Seed:** Produkte (inkl. Kontakt-Produkte), Formate, `price_items` mit den
Konfigurator-Preisen, `pricing_settings` inkl. Zeichen-Whitelist (1:1 aus job-manager).
## Nach dem Lauf – manuell
- **Service-Token:** Nutzer in Rolle *Service* anlegen, statischen Token erzeugen und in
die `.env` von skrift-backend und skrift-produktion eintragen.
- **Preise prüfen:** `price_items` mit Preis `0` (Schreib-/Gestaltungsservice, Motiv-Upload)
und die Produkt-Basispreise im Admin auf die echten Werte setzen.
- **Preisformel:** `pricing_settings.formula` ist ein Platzhalter – hier die reale Formel hinterlegen.
> Hinweis: Das Skript zielt auf Directus 11 (Policy-Rechtemodell) und wurde nicht gegen
> eine Live-Instanz getestet. Falls beim Lauf ein Schritt fehlschlägt, die Konsolenausgabe
> schicken – dann wird die betroffene Stelle gezielt korrigiert.