# EspoCRM Validator & Rebuild Tool ## Übersicht Das neue Python-basierte Validierungs-Tool `validate_and_rebuild.py` ersetzt das bisherige Bash-Script und bietet erweiterte Prüfungen für EspoCRM Custom-Entities. ## Features ### ✅ Automatische Validierungen 1. **JSON-Syntax-Prüfung** - Validiert alle `.json` Dateien im `custom/` Verzeichnis - Findet Syntax-Fehler mit Dateiname und Zeilennummer 2. **Relationship-Konsistenz** - Prüft bidirektionale Relationships (hasMany/hasOne) - Validiert `foreign`-Links zwischen Entities - Überprüft `relationName`-Konsistenz - Erkennt fehlende Gegenseiten-Definitionen 3. **Formula-Script Platzierung** - Prüft ob Formula-Scripts in `/formula/` statt `/entityDefs/` liegen - Warnt vor leeren Formula-Definitionen 4. **i18n-Vollständigkeit** - Findet fehlende Übersetzungen (de_DE / en_US) - Prüft Link-Labels für alle Custom-Relationships - Warnt bei komplett fehlenden i18n-Dateien 5. **Layout-Struktur** - Validiert clientDefs und bottomPanels - Findet unnötige `false`-Elemente 6. **Dateirechte** - Prüft Owner (www-data:www-data) - Korrigiert Permissions automatisch 7. **Rebuild-Ausführung** - Führt `rebuild.php` nur aus, wenn keine kritischen Fehler vorliegen ## Verwendung ### Direkt ausführen ```bash cd /path/to/espocrm python3 custom/scripts/validate_and_rebuild.py ``` ## Exit Codes - `0` - Erfolg: Alle Validierungen bestanden, Rebuild erfolgreich - `1` - Fehler: Kritische Fehler gefunden oder Rebuild fehlgeschlagen ## Output-Format Das Script verwendet farbcodierte Ausgaben: - 🟢 **Grün (✓)**: Erfolgreich / OK - 🟡 **Gelb (⚠)**: Warnungen (nicht kritisch) - 🔴 **Rot (✗)**: Fehler (kritisch, Rebuild wird abgebrochen) - 🔵 **Blau (ℹ)**: Informationen ## Fehlertypen ### Kritische Fehler (Rebuild-Abbruch) - JSON-Syntax-Fehler - Fehlende Relationship-Definitionen - Falsch platzierte Formula-Scripts ### Warnungen (kein Abbruch) - Fehlende i18n-Übersetzungen - Layout-Strukturprobleme - Dateirechte-Probleme ## Beispiel-Output ``` EspoCRM Custom Entity Validator & Rebuild Tool Arbeitsverzeichnis: /var/lib/docker/volumes/vmh-espocrm_espocrm/_data ====================================================================== 1. JSON-SYNTAX VALIDIERUNG ====================================================================== ✓ Alle 547 JSON-Dateien sind syntaktisch korrekt ====================================================================== 2. RELATIONSHIP-KONSISTENZ ====================================================================== ✗ 4 Relationship-Fehler gefunden: • Contact.cBankverbindungenContact: Ziel-Entity 'CBankverbindung' existiert nicht • CMietobjekt.vmhRumungsklages → CVmhRumungsklage: Foreign link 'mietobjekte' fehlt ====================================================================== ZUSAMMENFASSUNG ====================================================================== FEHLER: 4 ✗ Contact.cBankverbindungenContact: Ziel-Entity 'CBankverbindung' existiert nicht ... REBUILD ABGEBROCHEN: Kritische Fehler müssen behoben werden! ``` ## Erweiterung Das Script ist modular aufgebaut. Neue Validierungen können einfach hinzugefügt werden: ```python def validate_custom_check(self) -> bool: """Eigene Validierung.""" print_header("X. CUSTOM CHECK") # Prüflogik hier if error_found: self.errors.append("Fehlerbeschreibung") return False print_success("Check erfolgreich") return True ``` Dann in `validate_all()` hinzufügen: ```python if not self.validate_custom_check(): all_valid = False ``` ## Anforderungen - Python 3.6+ - Keine zusätzlichen Packages erforderlich (nur Standard-Library) - Optionale sudo-Rechte für Dateirechte-Korrektur ## Integration in Workflow Das Script kann in automatisierte Workflows integriert werden: ```bash # In CI/CD Pipeline python3 custom/scripts/validate_and_rebuild.py || exit 1 # Als Git Pre-Commit Hook #!/bin/bash python3 custom/scripts/validate_and_rebuild.py --dry-run ``` ## Troubleshooting ### Script findet rebuild.php nicht ```bash # Stelle sicher, dass du im EspoCRM-Root bist cd /var/lib/docker/volumes/vmh-espocrm_espocrm/_data python3 custom/scripts/validate_and_rebuild.py ``` ### Dateirechte können nicht korrigiert werden ```bash # Manuell mit sudo korrigieren sudo chown -R www-data:www-data custom/ sudo find custom/ -type f -exec chmod 664 {} \; sudo find custom/ -type d -exec chmod 775 {} \; ``` ### Python3 nicht verfügbar ```bash # Ubuntu/Debian sudo apt-get install python3 # CentOS/RHEL sudo yum install python3 ``` ## Siehe auch - [README.md](../../README.md) - Hauptdokumentation - [CUSTOM_DIRECTORY.md](../CUSTOM_DIRECTORY.md) - Custom-Verzeichnis-Struktur - [workflow_manager.php](workflow_manager.php) - Workflow-Management-Tool