Boot-Validierung
Das Framework validiert beim Start die komplette Feature-Konfiguration. Wenn die App startet, ist alles validiert. Keine Runtime-Ueberraschungen.
Pruefungen
| Pruefung | Fehler-Beispiel |
|---|---|
Alle requires aufgeloest | Feature "invoicing" requires "orders" but it is not registered |
| Cross-Feature-Referenzen gueltig | Feature "invoicing" references "orders.order.completed" but feature "orders" has no event "order.completed" |
| Keine zirkulaeren Dependencies | Circular dependency: invoicing → orders → invoicing |
| Config-Keys die gelesen werden existieren | Feature "invoicing" reads config "payments.gateway" but feature "payments" defines no such key |
| Keine Namenskollisionen | Entity name "user" is used by both "adminUsers" and "hrModule" |
| encrypted + searchable | Field "smtpPass" cannot be both encrypted and searchable |
| encrypted + sortable | Field "smtpPass" cannot be both encrypted and sortable |
| ENCRYPTION_KEY nicht gesetzt | ENCRYPTION_KEY environment variable is required (encrypted fields in use) |
| FILE_STORAGE_PROVIDER nicht gesetzt | FILE_STORAGE_PROVIDER not set (file fields in use) |
| Registrar-Erweiterung ohne requires | r.customFields() used but requires("customFields") missing |
| Registrar-Namenskollision | r.extendsRegistrar("foo") — "foo" already registered |
| extendSchema Spalten-Kollision | extendSchema column "customFields" conflicts with existing column on entity "property" |