Enable Discovery debug logging for production troubleshooting
- Add DISCOVERY_LOG_LEVEL=debug - Add DISCOVERY_SHOW_PROGRESS=true - Temporary changes for debugging InitializerProcessor fixes on production
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
# Einrichtung des KI-Assistenten in PhpStorm
|
||||
|
||||
## Übersicht
|
||||
|
||||
Diese Anleitung beschreibt, wie der KI-Assistent in PhpStorm eingerichtet wird, um automatisch die Projekt-Guidelines zu verwenden.
|
||||
|
||||
## Methode 1: Über die PhpStorm-Einstellungen
|
||||
|
||||
1. Öffne PhpStorm und gehe zu **Settings/Preferences**
|
||||
- Windows/Linux: File → Settings
|
||||
- macOS: PhpStorm → Preferences
|
||||
|
||||
2. Navigiere zu **Tools** → **AI Assistant** → **Custom Instructions**
|
||||
|
||||
3. Aktiviere die Option **Use custom instructions**
|
||||
|
||||
4. Füge in das Textfeld den Inhalt aus der Datei `/docs/ai/GUIDELINES-FÜR-AI-ASSISTANT.md` ein
|
||||
- Alternativ kannst du auf einen relativen Pfad verweisen
|
||||
|
||||
5. Aktiviere die Option **Apply project-specific instructions**, damit diese Einstellungen nur für dieses Projekt gelten
|
||||
|
||||
6. Klicke auf **Apply** und dann auf **OK**
|
||||
|
||||
## Methode 2: Über die Projektkonfiguration (empfohlen)
|
||||
|
||||
Die `.idea/aiAssistant.xml`-Datei ist bereits im Projekt enthalten und konfiguriert den KI-Assistenten automatisch mit den richtigen Einstellungen. Wenn du das Projekt öffnest, sollte der KI-Assistent bereits korrekt eingerichtet sein.
|
||||
|
||||
Um zu überprüfen, ob die Einstellungen korrekt übernommen wurden:
|
||||
|
||||
1. Öffne die PhpStorm-Einstellungen wie oben beschrieben
|
||||
2. Navigiere zu **Tools** → **AI Assistant** → **Custom Instructions**
|
||||
3. Überprüfe, ob **Use custom instructions** aktiviert ist und die Guidelines angezeigt werden
|
||||
|
||||
## Testen der Einrichtung
|
||||
|
||||
Um zu testen, ob der KI-Assistent die Guidelines korrekt anwendet:
|
||||
|
||||
1. Öffne eine PHP-Datei im Projekt
|
||||
2. Drücke `Alt+A` (Windows/Linux) oder `Option+A` (macOS) um den KI-Assistenten zu öffnen
|
||||
3. Bitte den Assistenten, eine neue Klasse zu erstellen
|
||||
4. Überprüfe, ob die generierte Klasse den Guidelines entspricht:
|
||||
- Sie sollte als `final` und wenn möglich `readonly` deklariert sein
|
||||
- Constructor Property Promotion sollte verwendet werden
|
||||
- Es sollten keine externen Abhängigkeiten importiert werden
|
||||
|
||||
## Fehlerbehebung
|
||||
|
||||
Falls die Guidelines nicht korrekt angewendet werden:
|
||||
|
||||
1. Stelle sicher, dass du die neueste Version von PhpStorm verwendest
|
||||
2. Überprüfe, ob die AI Assistant-Funktion aktiviert ist
|
||||
3. Versuche, das Projekt neu zu öffnen
|
||||
4. Führe einen Cache-Clear in PhpStorm durch: File → Invalidate Caches
|
||||
@@ -0,0 +1,174 @@
|
||||
# Guidelines für KI-Assistenten
|
||||
|
||||
## Übersicht
|
||||
|
||||
Diese Guidelines helfen dir, dem KI-Assistenten, konsistenten, modernen und qualitativ hochwertigen PHP-Code zu generieren, der den Projektstandards entspricht.
|
||||
|
||||
## Verwendung in PhpStorm
|
||||
|
||||
Diese Guidelines können in PhpStorm so eingerichtet werden, dass sie automatisch vom KI-Assistenten verwendet werden:
|
||||
|
||||
1. Gehe zu **Settings/Preferences** → **Tools** → **AI Assistant** → **Custom Instructions**
|
||||
2. Aktiviere **Use custom instructions**
|
||||
3. Füge im Textfeld den Inhalt dieser Datei ein oder verwende einen relativen Pfad zu dieser Datei
|
||||
4. Optional: Aktiviere **Apply project-specific instructions** für projektspezifische Einstellungen
|
||||
|
||||
Alternativ kann die Datei `.idea/aiAssistant.xml` angepasst werden, um diese Guidelines als Standardeinstellung für das Projekt zu verwenden.
|
||||
|
||||
## Kernprinzipien
|
||||
|
||||
### Abhängigkeitsvermeidung
|
||||
|
||||
- **Keine externen Abhängigkeiten** außer den explizit freigegebenen
|
||||
- Eigene Implementierungen gegenüber externen Bibliotheken bevorzugen
|
||||
- Bei Bedarf nach externen Funktionen zuerst prüfen, ob eine eigene Implementierung möglich ist
|
||||
- Erlaubte Abhängigkeiten sind auf die vorhandenen Composer-Pakete beschränkt
|
||||
|
||||
## Architekturprinzipien
|
||||
|
||||
Bei der Codeanalyse und -generierung sind folgende Architekturprinzipien zu beachten:
|
||||
|
||||
1. **Modularer Aufbau**: Das Projekt ist in Module unter `/src/Framework/` organisiert
|
||||
2. **Service-orientierte Architektur**: Funktionalitäten als unabhängige Services implementieren
|
||||
3. **Dependency Injection**: Abhängigkeiten werden per Constructor Injection bereitgestellt
|
||||
4. **Event-basierte Kommunikation**: Module kommunizieren über den EventDispatcher
|
||||
5. **Selbstständigkeit**: Module sollten möglichst unabhängig von externen Bibliotheken sein
|
||||
|
||||
## Coding-Standards
|
||||
|
||||
### Klassen
|
||||
|
||||
- **IMMER `final` verwenden**, außer bei zwingenden Gründen für Vererbung
|
||||
- **KEINE abstrakten Klassen** verwenden - stattdessen Interfaces und Kompositionen
|
||||
- Klassen und Properties wenn möglich als `readonly` deklarieren
|
||||
- Bevorzuge Interfaces für Vertragsgestaltung zwischen Komponenten
|
||||
|
||||
```php
|
||||
// RICHTIG
|
||||
final readonly class AnalyticsService implements AnalyticsInterface
|
||||
{
|
||||
// ...
|
||||
}
|
||||
|
||||
// FALSCH
|
||||
abstract class BaseAnalytics
|
||||
{
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
### Properties und Methoden
|
||||
|
||||
- Private `readonly` Properties mit Typisierung
|
||||
- Return-Types immer angeben
|
||||
- Parameter-Types immer angeben
|
||||
- Union Types und Nullable Types nutzen
|
||||
|
||||
```php
|
||||
// RICHTIG
|
||||
private readonly LoggerInterface $logger;
|
||||
|
||||
public function process(?int $id): Result|null
|
||||
{
|
||||
// ...
|
||||
}
|
||||
|
||||
// FALSCH
|
||||
public $logger;
|
||||
|
||||
public function process($id)
|
||||
{
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
### Moderne PHP-Features
|
||||
|
||||
Nutze aktiv die neuesten PHP-Features:
|
||||
|
||||
- Constructor Property Promotion
|
||||
- Match Expressions statt Switch
|
||||
- Named Arguments
|
||||
- Enums statt Konstanten
|
||||
- Nullsafe Operator (`?->`) wo sinnvoll
|
||||
- Typed Properties
|
||||
|
||||
## Klassenaufbau
|
||||
|
||||
Folgende Reihenfolge für Klassenelemente:
|
||||
|
||||
1. Konstanten
|
||||
2. Properties
|
||||
3. Constructor
|
||||
4. Öffentliche Methoden
|
||||
5. Private/Protected Methoden
|
||||
|
||||
## Service-Initialisierung
|
||||
|
||||
Services werden durch Initializer-Klassen registriert:
|
||||
|
||||
```php
|
||||
#[Initializer]
|
||||
final readonly class ServiceInitializer
|
||||
{
|
||||
public function __construct(
|
||||
private Configuration $config,
|
||||
private DependencyInterface $dependency
|
||||
) {}
|
||||
|
||||
public function __invoke(Container $container): ServiceInterface
|
||||
{
|
||||
return new Service(
|
||||
$this->config->get('service'),
|
||||
$this->dependency
|
||||
);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Fehlerbehandlung
|
||||
|
||||
- Spezifische Exception-Klassen werfen
|
||||
- Early Return Pattern bevorzugen
|
||||
- Defensive Programmierung mit Validierung
|
||||
|
||||
## Testing
|
||||
|
||||
Bei Test-Vorschlägen Pest-Framework nutzen:
|
||||
|
||||
```php
|
||||
test('method does something correctly', function () {
|
||||
// Arrangement
|
||||
$service = new Service($dependency);
|
||||
|
||||
// Action
|
||||
$result = $service->method();
|
||||
|
||||
// Assertion
|
||||
expect($result)->toBe('expected');
|
||||
});
|
||||
```
|
||||
|
||||
## Dokumentation
|
||||
|
||||
- PHPDoc für alle öffentlichen Methoden
|
||||
- Kurze, präzise Beschreibungen
|
||||
- Parameter und Return-Types in PHPDoc
|
||||
|
||||
## Zu vermeidende Praktiken
|
||||
|
||||
- Globale Zustände und statische Methoden
|
||||
- Tiefe Vererbungshierarchien
|
||||
- Lange, komplexe Methoden
|
||||
- Magische Methoden (`__call`, etc.) ohne triftigen Grund
|
||||
- Unnötige Abstraktionen
|
||||
|
||||
## Bei Codeanalyse und -vorschlägen
|
||||
|
||||
1. **Aktuellen Stil beibehalten**: Bei Vorschlägen den vorhandenen Codierungsstil beibehalten
|
||||
2. **Standards berücksichtigen**: Auf Einhaltung der hier definierten Guidelines achten
|
||||
3. **Modernisierung vorschlagen**: Auf Möglichkeiten zur Modernisierung hinweisen
|
||||
4. **Begründen**: Bei Empfehlungen die Gründe erläutern
|
||||
5. **Vollständigkeit**: Vollständige Lösungen anbieten, nicht nur Fragmente
|
||||
|
||||
Diese Guidelines sind als lebendiges Dokument zu betrachten, das mit der Evolution des Projekts und von PHP weiterentwickelt wird.
|
||||
54
backups/docs-backup-20250731125004/ai/index.md
Normal file
54
backups/docs-backup-20250731125004/ai/index.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# KI-Assistent Dokumentation
|
||||
|
||||
## Übersicht
|
||||
|
||||
Diese Dokumentation beschreibt die Einrichtung und Verwendung des KI-Assistenten im Projekt. Der KI-Assistent hilft bei der Entwicklung durch Code-Generierung, Refactoring-Vorschläge und mehr, während er die Projektstandards einhält.
|
||||
|
||||
## Inhalte
|
||||
|
||||
- [Guidelines für KI-Assistenten](/ai/GUIDELINES-FÜR-AI-ASSISTANT.md) - Richtlinien für den KI-Assistenten
|
||||
- [PhpStorm Einrichtung](/ai/EINRICHTUNG-PHPSTORM.md) - Anleitung zur Einrichtung in PhpStorm
|
||||
|
||||
## KI-Assistent Guidelines
|
||||
|
||||
Die [Guidelines für KI-Assistenten](/ai/GUIDELINES-FÜR-AI-ASSISTANT.md) stellen sicher, dass der KI-generierte Code den Projektstandards entspricht:
|
||||
|
||||
- Einhaltung der Coding-Standards
|
||||
- Vermeidung externer Abhängigkeiten
|
||||
- Verwendung moderner PHP-Features
|
||||
- Konsistente Klassenstruktur
|
||||
- Korrekte Fehlerbehandlung
|
||||
|
||||
## Einrichtung in PhpStorm
|
||||
|
||||
Die [PhpStorm Einrichtungsanleitung](/ai/EINRICHTUNG-PHPSTORM.md) führt Sie durch den Prozess der Integration des KI-Assistenten in Ihre IDE:
|
||||
|
||||
- Konfiguration der Custom Instructions
|
||||
- Verwendung der projektspezifischen Einstellungen
|
||||
- Testen der korrekten Einrichtung
|
||||
- Fehlerbehebung bei Problemen
|
||||
|
||||
## Effektive Nutzung des KI-Assistenten
|
||||
|
||||
### Best Practices
|
||||
|
||||
1. **Klare Anfragen stellen**: Je präziser die Anfrage, desto besser das Ergebnis
|
||||
2. **Kontext bereitstellen**: Dem Assistenten relevanten Kontext geben
|
||||
3. **Ergebnisse überprüfen**: Generierte Code immer prüfen und verstehen
|
||||
4. **Iterativ arbeiten**: Bei komplexen Aufgaben schrittweise vorgehen
|
||||
|
||||
### Häufige Anwendungsfälle
|
||||
|
||||
- Erstellung neuer Klassen und Interfaces
|
||||
- Implementierung von Tests
|
||||
- Refactoring bestehenden Codes
|
||||
- Dokumentation generieren
|
||||
- Code-Optimierung
|
||||
|
||||
## Datenschutz und Sicherheit
|
||||
|
||||
Beim Umgang mit dem KI-Assistenten sollten Sie folgende Punkte beachten:
|
||||
|
||||
- Keine sensiblen Daten oder Geschäftsgeheimnisse teilen
|
||||
- Keine Passwörter, API-Schlüssel oder Zugangsdaten teilen
|
||||
- Bei Unsicherheit den KI-Assistenten nicht verwenden
|
||||
Reference in New Issue
Block a user