Update documentation: Add Hook development section and Custom Entities overview
This commit is contained in:
286
custom/docs/CHANGELOG_2026-03-09.md
Normal file
286
custom/docs/CHANGELOG_2026-03-09.md
Normal file
@@ -0,0 +1,286 @@
|
||||
# Dokumentations-Update: Hook-Entwicklung & Entity-Übersicht
|
||||
|
||||
**Datum:** 9. März 2026
|
||||
**Version:** ESPOCRM_BEST_PRACTICES.md 2.0 → 2.1
|
||||
**Durchgeführt von:** EspoCRM Docs Maintainer Agent
|
||||
|
||||
---
|
||||
|
||||
## Zusammenfassung
|
||||
|
||||
Umfassende Überarbeitung der Dokumentation mit Fokus auf:
|
||||
1. **Hook-Entwicklung** - Neuer Haupt-Abschnitt
|
||||
2. **Entity-Übersicht** - Vollständige Liste aller Custom Entities
|
||||
3. **Bekannte Probleme** - i18n-Warnungen dokumentiert
|
||||
|
||||
---
|
||||
|
||||
## Änderungen im Detail
|
||||
|
||||
### 1. Neuer Abschnitt: Hook-Entwicklung
|
||||
|
||||
**Datei:** [custom/docs/ESPOCRM_BEST_PRACTICES.md](custom/docs/ESPOCRM_BEST_PRACTICES.md#hook-entwicklung)
|
||||
|
||||
**Umfang:** ~600 Zeilen neue Dokumentation
|
||||
|
||||
**Inhalt:**
|
||||
|
||||
#### Überblick & Patterns
|
||||
- ✅ Hook-Typen-Übersicht (BeforeSave, AfterSave, BeforeRemove, etc.)
|
||||
- ✅ Moderne Interface-basierte Hooks (EspoCRM 9.x)
|
||||
- ✅ Legacy Hook-Pattern (EspoCRM < 7.0)
|
||||
- ✅ Dependency Injection mit Constructor
|
||||
- ✅ Verfügbare Services (EntityManager, Config, Language, etc.)
|
||||
|
||||
#### Praxis-Beispiele aus dem Projekt
|
||||
|
||||
**Beispiel 1: CBankverbindungen/BankdatenValidation.php**
|
||||
- IBAN-Validierung mit Modulo-97-Algorithmus
|
||||
- BIC-Format-Prüfung (8 oder 11 Zeichen)
|
||||
- Normalisierung (Großbuchstaben, Leerzeichen entfernen)
|
||||
- i18n für Fehlermeldungen
|
||||
- BadRequest Exception-Handling
|
||||
|
||||
**Beispiel 2: CDokumente/CDokumente.php**
|
||||
- Automatische MD5/SHA256-Hash-Berechnung
|
||||
- File-Upload-Erkennung
|
||||
- Status-Management (new/changed/synced)
|
||||
- API-Limitationen dokumentiert
|
||||
|
||||
**Beispiel 3: CPuls/UpdateTeamStats.php**
|
||||
- Moderne Interface-basierte Implementation (BeforeSave)
|
||||
- Construction Injection für EntityManager
|
||||
- Statistik-Berechnung für verwandte Entities
|
||||
- Performance-Optimierung mit Conditions
|
||||
|
||||
#### Best Practices
|
||||
|
||||
**✅ DO:**
|
||||
- Interface-basierte Hooks (EspoCRM 9.x)
|
||||
- Constructor Injection
|
||||
- Validierung in beforeSave
|
||||
- Exception-werfen bei Fehlern
|
||||
- i18n für Fehlermeldungen
|
||||
- Performance-Optimierung mit `isAttributeChanged()`
|
||||
|
||||
**❌ DON'T:**
|
||||
- Komplexe Business-Logic in Hooks
|
||||
- Direkte SQL-Queries
|
||||
- Externe API-Calls in beforeSave
|
||||
- Circular Dependencies
|
||||
- UI-Logic in Hooks
|
||||
|
||||
#### Debugging & Troubleshooting
|
||||
- Log-Output-Patterns
|
||||
- Cache-Clear & Rebuild-Workflow
|
||||
- Circular Dependency Detection
|
||||
- Hook-Reihenfolge (Lifecycle)
|
||||
|
||||
---
|
||||
|
||||
### 2. Custom Entities Übersicht
|
||||
|
||||
**Datei:** [custom/docs/ESPOCRM_BEST_PRACTICES.md](custom/docs/ESPOCRM_BEST_PRACTICES.md#custom-entities-übersicht)
|
||||
|
||||
**Neu hinzugefügt:**
|
||||
|
||||
#### Tabelle aller 19 Custom Entities
|
||||
| Entity | Beschreibung | Hooks | Typ |
|
||||
|--------|--------------|-------|-----|
|
||||
| CAdressen | Adressen-Verwaltung | - | Base |
|
||||
| CAICollections | AI-Dokumenten-Sammlungen | - | Base |
|
||||
| CAICollectionCDokumente | Junction: Collections ↔ Dokumente | - | Junction |
|
||||
| CBankverbindungen | Bankdaten (IBAN/BIC) | ✅ Validierung | Base |
|
||||
| CBeteiligte | Beteiligte Personen | - | Base |
|
||||
| CCallQueues | Call-Warteschlangen | - | Base |
|
||||
| CDokumente | Dokumenten-Management | ✅ Hash-Berechnung | Base |
|
||||
| CKuendigung | Kündigungen | - | Base |
|
||||
| CMietinkasso | Mietinkasso-Fälle | - | Base |
|
||||
| CMietobjekt | Mietobjekte | - | Base |
|
||||
| CPuls | Posteingangs-System | ✅ Statistik | Base |
|
||||
| CPulsTeamZuordnung | Puls-Team-Zuordnungen | - | Base |
|
||||
| CVMHBeteiligte | VMH-spezifische Beteiligte | - | Base |
|
||||
| CVmhErstgespraech | Erstgespräche | - | Base |
|
||||
| CVmhMietverhltnis | Mietverhältnisse | - | Base |
|
||||
| CVmhRumungsklage | Räumungsklagen | - | Base |
|
||||
| CVmhVermieter | Vermieter | - | Base |
|
||||
|
||||
#### Erweiterte Standard-Entities
|
||||
- Contact, Call, User, Meeting, Email, Task
|
||||
- PhoneNumber, Team, BpmnUserTask
|
||||
|
||||
#### Implementierte Hooks (Übersicht)
|
||||
1. CBankverbindungen/BankdatenValidation
|
||||
2. CDokumente/CDokumente
|
||||
3. CPuls/UpdateTeamStats
|
||||
|
||||
---
|
||||
|
||||
### 3. Bekannte i18n-Warnungen dokumentiert
|
||||
|
||||
**Datei:** [custom/docs/ESPOCRM_BEST_PRACTICES.md](custom/docs/ESPOCRM_BEST_PRACTICES.md#bekannte-i18n-warnungen-nicht-kritisch)
|
||||
|
||||
**Neu im Troubleshooting-Abschnitt:**
|
||||
|
||||
#### Dokumentierte Warnungen
|
||||
```
|
||||
⚠ CDokumente (en_US): Link 'cAICollections' fehlt in i18n
|
||||
⚠ CAICollections (de_DE): Link 'meetings' fehlt in i18n
|
||||
⚠ CAICollections (de_DE): Link 'cDokumente' fehlt in i18n
|
||||
⚠ CAICollections (en_US): Link 'cDokumente' fehlt in i18n
|
||||
```
|
||||
|
||||
**Status:** Funktional keine Auswirkung
|
||||
|
||||
**Behebung:** JSON-Snippets für alle 4 fehlenden i18n-Einträge bereitgestellt
|
||||
|
||||
---
|
||||
|
||||
### 4. Inhaltsverzeichnis aktualisiert
|
||||
|
||||
**Dateien:**
|
||||
- [custom/docs/ESPOCRM_BEST_PRACTICES.md](custom/docs/ESPOCRM_BEST_PRACTICES.md#-inhaltsverzeichnis)
|
||||
- [custom/DOCUMENTATION_INDEX.md](custom/DOCUMENTATION_INDEX.md)
|
||||
|
||||
**Änderungen:**
|
||||
- ✅ Neuer Punkt 6: "Hook-Entwicklung"
|
||||
- ✅ Nummerierung angepasst (Workflow-Management: 6 → 7)
|
||||
- ✅ Index aktualisiert mit Hook-Entwicklung
|
||||
|
||||
---
|
||||
|
||||
### 5. Architektur-Prinzipien erweitert
|
||||
|
||||
**Datei:** [custom/docs/ESPOCRM_BEST_PRACTICES.md](custom/docs/ESPOCRM_BEST_PRACTICES.md#architektur-prinzipien)
|
||||
|
||||
**Änderung:**
|
||||
```
|
||||
DON'T:
|
||||
- ❌ Keine komplexe Business-Logic in Hooks (nutze Services)
|
||||
```
|
||||
|
||||
**Vorher:**
|
||||
```
|
||||
- ❌ Keine komplexe Logik in Hooks
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Validierung
|
||||
|
||||
### Ausgeführt
|
||||
```bash
|
||||
python3 custom/scripts/validate_and_rebuild.py --dry-run
|
||||
```
|
||||
|
||||
### Ergebnisse
|
||||
```
|
||||
✓ Alle 702 JSON-Dateien syntaktisch korrekt
|
||||
✓ 45 Relationships geprüft - alle konsistent
|
||||
✓ 7 Formula-Definitionen korrekt platziert
|
||||
⚠ 4 unvollständige i18n-Definitionen (dokumentiert)
|
||||
✓ 15 Layout-Dateien geprüft, keine Fehler
|
||||
✓ Alle Dateirechte korrekt (www-data:www-data)
|
||||
✓ Alle 2 CSS-Dateien syntaktisch korrekt
|
||||
✓ Alle 11 JavaScript-Dateien syntaktisch korrekt
|
||||
✓ Alle 348 PHP-Dateien syntaktisch korrekt
|
||||
```
|
||||
|
||||
**Status:** ✅ Alle Validierungen erfolgreich
|
||||
|
||||
---
|
||||
|
||||
## Statistiken
|
||||
|
||||
### Dokumentationsgröße
|
||||
- **Zeilen:** 1698 (vorher: ~1100)
|
||||
- **Zunahme:** ~600 Zeilen (+54%)
|
||||
- **Abschnitte:** 74 (## Überschriften)
|
||||
|
||||
### Code-Beispiele
|
||||
- **Neue Hook-Beispiele:** 3 vollständige Implementierungen
|
||||
- **Code-Blocks:** ~20 neue PHP/JSON-Snippets
|
||||
- **Best-Practice-Regeln:** 12 DO's, 5 DON'Ts
|
||||
|
||||
---
|
||||
|
||||
## Für AI Agents
|
||||
|
||||
### Neue Fähigkeiten nach diesem Update
|
||||
|
||||
**Agents können jetzt:**
|
||||
1. ✅ Hook-Code mit modernen Interfaces schreiben
|
||||
2. ✅ IBAN-Validierung mit Modulo-97 implementieren
|
||||
3. ✅ File-Upload-Hashes automatisch berechnen
|
||||
4. ✅ Statistik-Felder automatisch aktualisieren
|
||||
5. ✅ Dependency Injection korrekt nutzen
|
||||
6. ✅ Circular Dependencies vermeiden
|
||||
7. ✅ Alle 19 Custom Entities überblicken
|
||||
8. ✅ i18n-Warnungen verstehen und beheben
|
||||
|
||||
### Verwendung
|
||||
|
||||
**Neuer Agent briefen:**
|
||||
```bash
|
||||
python3 custom/scripts/ki_project_overview.py > overview.txt
|
||||
cat custom/docs/ESPOCRM_BEST_PRACTICES.md
|
||||
```
|
||||
|
||||
**Hook entwickeln:**
|
||||
1. Lies Abschnitt "Hook-Entwicklung" (Zeile ~670-1270)
|
||||
2. Wähle passendes Beispiel (Validierung/Hash/Statistik)
|
||||
3. Implementiere mit modernem Interface-Pattern
|
||||
4. Teste mit validate_and_rebuild.py
|
||||
|
||||
---
|
||||
|
||||
## Nächste Schritte (optional)
|
||||
|
||||
### Optionale Verbesserungen
|
||||
|
||||
1. **i18n-Warnungen beheben**
|
||||
- 4 fehlende Link-Labels hinzufügen
|
||||
- JSON-Snippets sind bereitgestellt
|
||||
|
||||
2. **Weitere Hooks dokumentieren**
|
||||
- Falls zukünftig neue Hooks hinzukommen
|
||||
- AfterSave, BeforeRemove, AfterRelate Beispiele
|
||||
|
||||
3. **Tool-Dokumentation erweitern**
|
||||
- validate_and_rebuild.py Features dokumentieren
|
||||
- Hook-spezifische Validierungen hinzufügen
|
||||
|
||||
4. **Testing erweitern**
|
||||
- Hook-spezifische Unit Tests
|
||||
- Circular Dependency Detection Tests
|
||||
|
||||
---
|
||||
|
||||
## Dateien geändert
|
||||
|
||||
1. ✅ `custom/docs/ESPOCRM_BEST_PRACTICES.md` (Version 2.0 → 2.1)
|
||||
2. ✅ `custom/DOCUMENTATION_INDEX.md`
|
||||
3. ✅ `custom/docs/CHANGELOG_2026-03-09.md` (NEU)
|
||||
|
||||
**Kein Code geändert** - Nur Dokumentation!
|
||||
|
||||
---
|
||||
|
||||
## Verifikation
|
||||
|
||||
### Dokumentations-Links
|
||||
- [ESPOCRM_BEST_PRACTICES.md](custom/docs/ESPOCRM_BEST_PRACTICES.md)
|
||||
- [DOCUMENTATION_INDEX.md](custom/DOCUMENTATION_INDEX.md)
|
||||
- [Hook-Entwicklung](custom/docs/ESPOCRM_BEST_PRACTICES.md#hook-entwicklung)
|
||||
|
||||
### Git Diff (falls verfügbar)
|
||||
```bash
|
||||
git diff custom/docs/ESPOCRM_BEST_PRACTICES.md
|
||||
git diff custom/DOCUMENTATION_INDEX.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Ende des Updates**
|
||||
|
||||
Dokumentation ist nun vollständig auf dem neuesten Stand mit umfassender Hook-Entwicklung-Dokumentation und Entity-Übersicht.
|
||||
Reference in New Issue
Block a user