Skip to content

Base-Data Export

Produktionsdaten haben sich geändert und du willst einen neuen Export für das Team erstellen.

Schnellstart

bash
# 1. Daten aus Produktion exportieren
php artisan hermeneus:export-base-data

# 2. Im Submodule committen und pushen
cd database/base-data
git add .
git commit -m "Update base-data from production"
git push

# 3. Im Hauptprojekt Submodule-Referenz aktualisieren
cd ../..
git add database/base-data
git commit -m "Update base-data submodule"
git push

Das war's! Der Export geht direkt ins Git-Submodule database/base-data - kein manuelles Kopieren mehr nötig.

Was wird exportiert?

Standard-Export (22 Tabellen, 5.912 Datensätze):

  • Basis: System-User (100, 179), Test-Accounts, Gruppen, Reihen
  • Glossarium: Alle validierten Vokabel-Einträge (status = 2)
  • Grammatik: Alle Grammatik-Einträge
  • CCBuchner: Alle C.C.Buchner-Bücher mit Lerneinheiten, Texten, Textconfig (nur creator_id = 179)

Wichtig: Übungen werden NICHT exportiert (zu individuell).

Export-Befehl

Basis-Syntax

bash
php artisan hermeneus:export-base-data [Optionen]

Standard-Pfad: database/base-data (Git-Submodule, kein Pfad-Argument nötig!)

Die wichtigsten Optionen

OptionZweckBeispiel
--preset=Export-Profil wählen--preset=none (ohne CCBuchner)

Standard-Export (mit CCBuchner)

bash
php artisan hermeneus:export-base-data

Output: database/base-data/ (Git-Submodule)

Export ohne CCBuchner

bash
php artisan hermeneus:export-base-data --preset=none

Nur Basis, Vokabeln und Grammatik. Schneller und kleiner.

Export-Verzeichnisstruktur

database/base-data/          # Git-Submodule (versioniert)
├── metadata.json            # Export-Metadaten
├── minimum/                 # System-User, Gruppen, Reihen
│   ├── users.json
│   ├── groups.json
│   └── reihen.json
├── glossarium/              # Vokabel-Einträge
│   ├── glossarium_nomina.json
│   ├── glossarium_verben.json
│   ├── glossarium_adjektive.json
│   └── ...
├── grammatik/               # Grammatik-Einträge
│   └── grammatik.json
└── ccbuchner/               # CCBuchner-Inhalte (optional)
    ├── buecher.json
    ├── lerneinheiten.json
    ├── textconfig.json
    ├── hermeneus_texte.json
    └── ...

Wichtig: Die Daten liegen in einem separaten Git-Repository als Submodule und werden automatisch versioniert.

Typische Szenarien

Wöchentlicher Export aus Produktion

bash
# 1. Von Produktion exportieren
DB_CONNECTION=production_baseline php artisan hermeneus:export-base-data

# 2. Im Submodule committen
cd database/base-data
git add .
git commit -m "Update base-data from production $(date +%Y-%m-%d)"
git push

# 3. Im Hauptprojekt aktualisieren
cd ../..
git add database/base-data
git commit -m "Update base-data submodule"
git push

Export für neuen Entwickler

bash
# 1. Standard-Export erstellen
php artisan hermeneus:export-base-data

# 2. Submodule committen und pushen (siehe oben)

# 3. Andere Entwickler holen automatisch via:
git pull
git submodule update --init --recursive

Export für Testing-Pipeline

bash
# Minimaler Export (nur Vokabeln)
php artisan hermeneus:export-base-data --preset=none

# In CI/CD-Pipeline verwenden
php artisan hermeneus:import-base-data --connection=testing

Export-Filter

Das System verwendet spezialisierte Filter für jede Gruppe:

MinimumExportFilter

  • System-User: 100 (Hermeneus System), 179 (Admin)
  • Test-Accounts: bruce.wayne, harvey.dent, james.gordon, selina.kyle, joker
  • Alle Gruppen und Reihen

GlossariumExportFilter

  • Nur validierte Einträge (status = 2)
  • Alle Wortarten (Nomina, Verben, Adjektive, etc.)

GrammatikExportFilter

  • Alle Grammatik-Einträge (keine Filterung)

CCBuchnerExportFilter

  • Nur Bücher mit creator_id = 179
  • Kaskadierende Abhängigkeiten:
    • Lerneinheiten der exportierten Bücher
    • Texte der exportierten Lerneinheiten
    • Textconfig der exportierten Bücher
    • Buch-Ressourcen

Metadaten prüfen

bash
# Metadaten anzeigen
cat database/base-data/metadata.json

# Mit jq formatiert:
cat database/base-data/metadata.json | jq

Wichtige Felder:

json
{
  "exported_at": "2025-11-02 22:30:00",
  "exported_groups": ["minimum", "glossarium", "grammatik", "ccbuchner"],
  "total_tables": 22,
  "total_records": 5912,
  "filter_descriptions": {
    "minimum": "System-User (100, 179) + Test-Accounts",
    "glossarium": "Nur validierte Einträge (status = 2)",
    "grammatik": "Alle Einträge",
    "ccbuchner": "Nur Bücher mit creator_id = 179 + Abhängigkeiten"
  }
}

Erweiterte Nutzung

Spezifische Datenbank-Connection

bash
# Export aus bestimmter DB
DB_CONNECTION=production_baseline php artisan hermeneus:export-base-data

Export-Organisation

Best Practice:

  • Regelmäßige wöchentliche Exports aus Produktion
  • Commit-Messages mit Datum versehen
  • Metadaten vor Commit prüfen
  • Git-Historie dient als Archiv (alte Versionen bleiben verfügbar)

Beispiel-Workflow:

bash
# Jeden Montag
DB_CONNECTION=production php artisan hermeneus:export-base-data

# Im Submodule committen
cd database/base-data
git add .
git commit -m "Weekly update from production $(date +%Y-%m-%d)"
git push

# Im Hauptprojekt aktualisieren
cd ../..
git add database/base-data
git commit -m "Update base-data submodule (weekly)"
git push

Sicherheit

  • Das Git-Submodule database/base-data ist separates Repository (nur für Team zugänglich)
  • Exports enthalten gehashte Passwörter (Test-Accounts verwenden Passwort: hermeneus#17)
  • Produktionsdaten nur für Entwicklung/Testing verwenden
  • Submodule-Repository sollte privat bleiben

Logs

bash
# Export-Logs verfolgen
tail -f storage/logs/laravel.log | grep "Base-Data-Export"

Technische Details

Service-Klassen

  • DataExportService: app/ServiceClasses/DataManagement/DataExportService.php
  • Export-Filter: app/ServiceClasses/DataManagement/ExportFilters/
    • MinimumExportFilter.php
    • GlossariumExportFilter.php
    • GrammatikExportFilter.php
    • CCBuchnerExportFilter.php

Textconfig-Filterung

Textconfig wird nur für CCBuchner-Bücher exportiert:

  • Gefiltert nach resource_type = 'App\\Models\\Buch'
  • Nur resource_id der exportierten Bücher

Export-Phasen

Der Export erfolgt in 4 Phasen (entsprechend der Gruppen):

  1. Minimum: users, groups, reihen
  2. Glossarium: glossarium_* (Nomina, Verben, Adjektive, etc.)
  3. Grammatik: grammatik
  4. CCBuchner: buecher, lerneinheiten, textconfig, hermeneus_texte, etc.

Weiterführende Infos

  • Import-Anleitung: Siehe Base-Data Import.md
  • Commands: app/Console/Commands/ExportBaseDataCommand.php
  • Datenbank-Schema: Siehe Datenbankstruktur.md

Verwandte Artisan-Commands

bash
# Liste aller Artisan-Commands
php artisan list

# Export mit spezifischer Connection
DB_CONNECTION=production php artisan hermeneus:export-base-data