Import aus Monorepo (frischer Start)

This commit is contained in:
Lucas Orth
2026-08-24 12:13:58 +02:00
commit 94e79f12ac
34 changed files with 7438 additions and 0 deletions

52
bootstrap/README.md Normal file
View File

@@ -0,0 +1,52 @@
# 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.

1290
bootstrap/bootstrap.mjs Normal file

File diff suppressed because it is too large Load Diff

13
bootstrap/package.json Normal file
View File

@@ -0,0 +1,13 @@
{
"name": "skrift-directus-bootstrap",
"version": "1.0.0",
"private": true,
"type": "module",
"description": "Idempotentes Anlegen von Collections, Rollen, Rechten und Seed-Daten in Directus.",
"scripts": {
"bootstrap": "node bootstrap.mjs"
},
"engines": {
"node": ">=18"
}
}