161 Zeilen
3.6 KiB
Markdown
161 Zeilen
3.6 KiB
Markdown
# Refactoring Guide - MainWindow
|
|
|
|
## Übersicht
|
|
Dieses Dokument beschreibt, wie das Refactoring der `main_window.py` verwaltet wird.
|
|
|
|
## Feature Flags
|
|
|
|
Das Refactoring verwendet Feature Flags für schrittweise Migration:
|
|
|
|
- `USE_GITEA_HANDLER` - Gitea/Git Operationen
|
|
- `USE_PROCESS_HANDLER` - Prozess-Management
|
|
- `USE_PROJECT_HANDLER` - Projekt-Operationen
|
|
- `USE_UI_HELPERS` - UI Hilfs-Funktionen
|
|
- `ENABLE_DEBUG_LOGGING` - Debug-Ausgaben
|
|
- `FORCE_ORIGINAL_IMPLEMENTATION` - Notfall-Override
|
|
|
|
## Verwaltung
|
|
|
|
### CLI-Tool verwenden
|
|
|
|
```bash
|
|
# Status anzeigen
|
|
python manage_refactoring.py status
|
|
|
|
# Einzelnen Handler aktivieren
|
|
python manage_refactoring.py enable gitea
|
|
python manage_refactoring.py enable process
|
|
python manage_refactoring.py enable project
|
|
python manage_refactoring.py enable ui
|
|
|
|
# Alle deaktivieren
|
|
python manage_refactoring.py disable-all
|
|
|
|
# Spezifisches Flag setzen
|
|
python manage_refactoring.py set ENABLE_DEBUG_LOGGING true
|
|
|
|
# Test-Konfiguration erstellen
|
|
python manage_refactoring.py test-config
|
|
```
|
|
|
|
### Umgebungsvariablen
|
|
|
|
Überschreiben die Konfigurationsdatei:
|
|
|
|
```bash
|
|
# Alle Handler aktivieren
|
|
export CPM_USE_NEW_HANDLERS=true
|
|
|
|
# Einzelne Flags
|
|
export CPM_USE_GITEA_HANDLER=true
|
|
export CPM_USE_PROCESS_HANDLER=false
|
|
```
|
|
|
|
### Konfigurationsdatei
|
|
|
|
Gespeichert in: `~/.claude_project_manager/refactoring_config.json`
|
|
|
|
```json
|
|
{
|
|
"USE_GITEA_HANDLER": false,
|
|
"USE_PROCESS_HANDLER": false,
|
|
"USE_PROJECT_HANDLER": false,
|
|
"USE_UI_HELPERS": false,
|
|
"ENABLE_DEBUG_LOGGING": false,
|
|
"FORCE_ORIGINAL_IMPLEMENTATION": false
|
|
}
|
|
```
|
|
|
|
## Test-Strategie
|
|
|
|
### Phase 1: UI Helpers
|
|
Sicherste Option - nur UI-Hilfsfunktionen
|
|
|
|
```bash
|
|
python manage_refactoring.py disable-all
|
|
python manage_refactoring.py enable ui
|
|
python main.py # Testen
|
|
```
|
|
|
|
### Phase 2: Project Manager
|
|
Projekt-Operationen hinzufügen
|
|
|
|
```bash
|
|
python manage_refactoring.py enable project
|
|
python main.py # Testen
|
|
```
|
|
|
|
### Phase 3: Process Manager
|
|
Prozess-Management hinzufügen
|
|
|
|
```bash
|
|
python manage_refactoring.py enable process
|
|
python main.py # Testen
|
|
```
|
|
|
|
### Phase 4: Gitea Operations
|
|
Komplexeste Operationen zuletzt
|
|
|
|
```bash
|
|
python manage_refactoring.py enable gitea
|
|
python main.py # Vollständig refactored
|
|
```
|
|
|
|
## Rollback
|
|
|
|
Bei Problemen:
|
|
|
|
```bash
|
|
# Sofort alle neuen Handler deaktivieren
|
|
python manage_refactoring.py disable-all
|
|
|
|
# Oder Notfall-Override in der Anwendung
|
|
export CPM_FORCE_ORIGINAL_IMPLEMENTATION=true
|
|
```
|
|
|
|
## Entwicklung
|
|
|
|
### Neue Handler hinzufügen
|
|
|
|
1. Handler-Klasse in `gui/handlers/` erstellen
|
|
2. In `gui/handlers/__init__.py` exportieren
|
|
3. In `MainWindow._init_handlers()` initialisieren
|
|
4. Feature Flag in `gui/config.py` hinzufügen
|
|
5. Facade-Methoden in `MainWindow` erstellen
|
|
|
|
### Handler implementieren
|
|
|
|
```python
|
|
# In MainWindow - Facade Pattern
|
|
def some_method(self, *args):
|
|
"""Method description - Facade"""
|
|
if hasattr(self, '_handler') and self.REFACTORING_FLAGS.get('USE_MY_HANDLER', False):
|
|
return self._handler.some_method(*args)
|
|
else:
|
|
return self._original_some_method(*args)
|
|
|
|
def _original_some_method(self, *args):
|
|
"""Original implementation"""
|
|
# Existing code here
|
|
```
|
|
|
|
## Monitoring
|
|
|
|
Logs prüfen für Refactoring-Status:
|
|
|
|
```bash
|
|
# In den Logs suchen
|
|
grep "Refactoring" app.log
|
|
grep "handler initialized" app.log
|
|
```
|
|
|
|
## Bekannte Probleme
|
|
|
|
1. **Duplizierte Methoden**: Einige Methoden existieren mehrfach
|
|
- `manage_branches`, `link_to_gitea` - Placeholder vs. Implementierung
|
|
- `test_gitea_connection`, `verify_repository_on_gitea` - Verschiedene Versionen
|
|
|
|
2. **Fehlende Methoden**: Einige erwartete Methoden fehlen
|
|
- `show_git_status`, `commit_changes` - Möglicherweise umbenannt
|
|
|
|
Diese werden in Phase 4 und 5 des Refactorings adressiert. |