Refactor code structure for improved readability and maintainability

This commit is contained in:
2026-03-09 23:07:05 +01:00
parent 3361cffb14
commit 2e9db78c6e
18 changed files with 2855 additions and 69 deletions

View File

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