197 lines
5.5 KiB
Markdown
197 lines
5.5 KiB
Markdown
# 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** (✨ ERWEITERT)
|
||
- Prüft Owner (www-data:www-data) in DREI Bereichen:
|
||
- `custom/Espo/Custom/Resources/` - Custom Metadata
|
||
- `client/custom/` - Frontend JavaScript & CSS
|
||
- `data/` - **INKL. config.php & config-internal.php**
|
||
- Korrigiert Permissions automatisch (664 für Dateien, 775 für Verzeichnisse)
|
||
- **Hebt kritische System-Dateien hervor** (config.php, config-internal.php)
|
||
|
||
7. **CSS-Validierung**
|
||
- Validiert Syntax aller CSS-Dateien
|
||
- Prüft Klammer-Balance und grundlegende Struktur
|
||
|
||
8. **JavaScript-Validierung**
|
||
- Prüft Syntax aller JS-Dateien in `client/custom/src/`
|
||
|
||
9. **PHP-Validierung**
|
||
- Validiert PHP-Syntax aller Custom-Klassen
|
||
|
||
10. **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
|