2.8 KiB
2.8 KiB
Refactoring Issues - Blueprint Migration
Zusammenfassung
Die Blueprint-Migration wurde zurückgesetzt, da sie zu viele Breaking Changes verursachte.
Identifizierte Probleme
1. Schema-Inkonsistenzen
Die Blueprint-Code geht von einem anderen Datenbankschema aus als tatsächlich existiert:
Sessions-Tabelle
Erwartet von Blueprints:
license_key(direkte Spalte)usernamecomputer_namehardware_iddevice_idapp_versionactive(stattis_active)login_time(stattstarted_at)logout_time(stattended_at)last_activity(stattlast_heartbeat)
Tatsächliches Schema:
license_id(Foreign Key zu licenses)session_idip_addressuser_agentstarted_atlast_heartbeatended_atis_active
2. Falsche SQL-JOINs
Über 20+ falsche JOINs in verschiedenen Blueprint-Dateien:
- Falsch:
JOIN sessions s ON l.license_key = s.license_key - Richtig:
JOIN sessions s ON l.id = s.license_id
Betroffene Dateien:
export_routes.py(5 Stellen)api_routes.py(4 Stellen)session_routes.py(6 Stellen)customer_routes.py(2 Stellen)
3. Fehlende Funktionen
models.py: 5 Funktionen fehltenutils/export.py:create_batch_export()fehlte
Empfohlenes Vorgehen
Option 1: Schrittweise Migration (Empfohlen)
- Schema-Analyse: Vollständige Dokumentation des aktuellen DB-Schemas
- Blueprint-Anpassung: Code an tatsächliches Schema anpassen
- Test-Suite: Umfassende Tests vor Migration schreiben
- Einzelne Blueprints: Einen Blueprint nach dem anderen migrieren
Option 2: Schema-Anpassung
- Neue Spalten: Alle erwarteten Spalten zur DB hinzufügen
- Daten-Migration: Bestehende Daten migrieren
- Kompatibilitäts-Layer: Views oder Trigger für Rückwärtskompatibilität
Option 3: Neu-Implementation
- Sauberer Schnitt: Blueprints von Grund auf neu schreiben
- Aktuelles Schema: Code basierend auf tatsächlichem Schema
- Keine Assumptions: Jede Spalte explizit prüfen
Lessons Learned
- Keine Annahmen über Schema: Immer das tatsächliche Schema prüfen
- Inkrementelle Migration: Große Refactorings in kleine Schritte aufteilen
- Tests zuerst: Umfassende Tests vor strukturellen Änderungen
- Rollback-Plan: Immer Backups vor größeren Änderungen
Aktueller Status
- ✅ Anwendung läuft wieder mit ursprünglichem Code
- ✅ Alle Funktionen sind wiederhergestellt
- ⚠️ Blueprint-Migration wurde zurückgesetzt
- 📋 Detaillierte Problembeschreibung für zukünftige Versuche dokumentiert
Nächste Schritte
- Vollständige Schema-Dokumentation erstellen
- Test-Suite für aktuelle Funktionalität schreiben
- Migration in kleineren, testbaren Schritten planen
- Jeden Blueprint einzeln mit Tests migrieren