Base-Data Export
Produktionsdaten haben sich geändert und du willst einen neuen Export für das Team erstellen.
Schnellstart
# 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 pushDas 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
php artisan hermeneus:export-base-data [Optionen]Standard-Pfad: database/base-data (Git-Submodule, kein Pfad-Argument nötig!)
Die wichtigsten Optionen
| Option | Zweck | Beispiel |
|---|---|---|
--preset= | Export-Profil wählen | --preset=none (ohne CCBuchner) |
Standard-Export (mit CCBuchner)
php artisan hermeneus:export-base-dataOutput: database/base-data/ (Git-Submodule)
Export ohne CCBuchner
php artisan hermeneus:export-base-data --preset=noneNur 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
# 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 pushExport für neuen Entwickler
# 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 --recursiveExport für Testing-Pipeline
# Minimaler Export (nur Vokabeln)
php artisan hermeneus:export-base-data --preset=none
# In CI/CD-Pipeline verwenden
php artisan hermeneus:import-base-data --connection=testingExport-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
# Metadaten anzeigen
cat database/base-data/metadata.json
# Mit jq formatiert:
cat database/base-data/metadata.json | jqWichtige Felder:
{
"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
# Export aus bestimmter DB
DB_CONNECTION=production_baseline php artisan hermeneus:export-base-dataExport-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:
# 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 pushSicherheit
- Das Git-Submodule
database/base-dataist 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
# 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.phpGlossariumExportFilter.phpGrammatikExportFilter.phpCCBuchnerExportFilter.php
Textconfig-Filterung
Textconfig wird nur für CCBuchner-Bücher exportiert:
- Gefiltert nach
resource_type = 'App\\Models\\Buch' - Nur
resource_idder exportierten Bücher
Export-Phasen
Der Export erfolgt in 4 Phasen (entsprechend der Gruppen):
- Minimum: users, groups, reihen
- Glossarium: glossarium_* (Nomina, Verben, Adjektive, etc.)
- Grammatik: grammatik
- 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
# Liste aller Artisan-Commands
php artisan list
# Export mit spezifischer Connection
DB_CONNECTION=production php artisan hermeneus:export-base-data