# ABSOLUTE DON'TS: - Verwendung von npm anstelle der Tailwind CDN - Implementierung von Content Security Policy (CSP) - UNTER KEINEN UMSTÄNDEN! - Implementierung von Cross-Site Request Forgery (CSRF) Schutz - Implementierung von Security Headers - Verwendung von TypeScript anstelle von JavaScript - Implementierung von OAuth oder anderen externen Authentifizierungsmethoden # HÄUFIGE FEHLER: - Verwendung der falschen Datenbank (die korrekte ist: database/systades.db) - Falsche Pfadangaben bei statischen Dateien - Vergessen der deutschen Spracheinstellungen in Templates - Nicht beachten der vorhandenen Projektstruktur - Falsche Einbindung der Neural Network Background Animation - Verwendung von englischen Variablennamen in deutschen Funktionen - Vergessen der Mindmap-Datenstruktur gemäß der Roadmap # Häufige Fehler und Lösungen ## Datenbankfehler ### Fehler: "no such column: user.password" **Fehlerbeschreibung:** ``` sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: user.password [SQL: SELECT user.id AS user_id, user.username AS user_username, user.email AS user_email, user.password AS user_password, user.created_at AS user_created_at, user.is_active AS user_is_active, user.role AS user_role FROM user WHERE user.id = ?] ``` **Ursache:** Die Spalte `password` fehlt in der Tabelle `user` der SQLite-Datenbank. Dies kann durch eine unvollständige Datenbankinitialisierung oder ein fehlerhaftes Schema-Update verursacht worden sein. **Lösung:** 1. **Datenbank reparieren mit dem Fix-Skript** ```bash python fix_user_table.py ``` Dieses Skript: - Prüft, ob die Tabelle `user` existiert und erstellt sie, falls nicht - Prüft, ob die Spalte `password` existiert und fügt sie hinzu, falls nicht 2. **Standardbenutzer erstellen** ```bash python create_default_users.py ``` Dieses Skript: - Erstellt Standardbenutzer (admin, user), falls keine vorhanden sind - Setzt Passwörter mit korrektem Hashing 3. **Datenbank testen** ```bash python test_app.py ``` Dieses Skript überprüft: - Ob die Datenbank existiert - Ob die Tabelle `user` korrekt konfiguriert ist - Ob Benutzer vorhanden sind ## Häufige Ursachen für Datenbankfehler 1. **Inkonsistente Datenbankschemas** - Unterschiede zwischen dem SQLAlchemy-Modell und der tatsächlichen Datenbankstruktur - Fehlende Spalten, die in den Modellen definiert sind 2. **Falsche Datenbankinitialisierung** - Die Datenbank wurde nicht korrekt initialisiert - Fehler bei der Migration oder dem Schema-Update 3. **Datenbankdatei-Korrumpierung** - Die SQLite-Datenbankdatei wurde beschädigt - Lösung: Sicherung wiederherstellen oder Datenbank neu erstellen ## Vorbeugende Maßnahmen 1. **Regelmäßige Backups** - Tägliche Sicherung der Datenbankdatei 2. **Schema-Validierung** - Regelmäßige Überprüfung der Datenbankstruktur - Automatisierte Tests für Datenbankschema 3. **Datenbankmigration** - Verwenden Sie Flask-Migrate für strukturierte Datenbank-Updates - Dokumentieren Sie alle Schemaänderungen ## Content Security Policy (CSP) ### Problem: Externe Ressourcen werden nicht geladen **Fehler:** Externe Ressourcen wie CDNs werden nicht korrekt geladen. **Lösung:** 1. Stellen Sie sicher, dass die URLs in den Templates korrekt sind: ```html ``` 2. Überprüfen Sie die Netzwerkverbindung und ob die CDN-Domains erreichbar sind. 3. Verwenden Sie lokale Ressourcen als Alternative: ```html ``` ### Problem: CSP-Fehler (script-src-elem 'none', font-src 'none', etc.) **Fehler:** Skripte werden aufgrund von CSP-Einschränkungen blockiert. **Lösung:** 1. WICHTIG: CSP-Einschränkungen NICHT implementieren! Diese sind im Projekt unerwünscht. 2. Falls CSP-Header bereits vorhanden sind, entfernen Sie diese aus der Anwendung: ```python # Entfernen Sie diesen Code, falls vorhanden: # @app.after_request # def add_security_headers(response): # response.headers['Content-Security-Policy'] = '...' # return response ``` 3. Stellen Sie sicher, dass externe Ressourcen direkt geladen werden: ```html ``` 4. Für Inline-Skripte keine Nonce verwenden: ```html ``` ### Problem: Tailwind CSS CDN wird blockiert **Fehler:** Tailwind CSS kann nicht von CDN geladen werden. **Lösung:** 1. Verwenden Sie die lokale Version von Tailwind CSS: ```html ``` 2. Alternativ können Sie die CDN-Version direkt im Template einbinden: ```html ``` 3. Stellen Sie sicher, dass die Datei `static/css/tailwind.min.css` existiert und aktuell ist. ## Authentifizierung ### Problem: Login funktioniert nicht **Fehler:** Benutzer kann sich nicht einloggen. **Lösung:** 1. Standard-Admin-Benutzer erstellen: `python TOOLS.py user:admin` 2. Passwort zurücksetzen: `python TOOLS.py user:reset-pw -u USERNAME -p NEWPASSWORD` ## Neural Network Background ### Problem: Hintergrund-Animation wird nicht angezeigt **Fehler:** Die Neural Network Animation im Hintergrund erscheint nicht. **Lösung:** 1. Überprüfen Sie, ob die Datei `static/neural-network-background.js` korrekt eingebunden ist: ```html ``` 2. Initialisieren Sie die Animation im Template: ```html ``` 3. Stellen Sie sicher, dass keine CSS-Regeln die Animation überdecken: ```css #neural-network-background { z-index: -10; opacity: 1; } ``` ## Mindmap-Funktionalität ### Problem: Mindmap-Daten werden nicht geladen **Fehler:** Die dynamische Mindmap zeigt keine Daten an. **Lösung:** 1. Überprüfen Sie die API-Endpunkte für die Mindmap-Daten: ```python @app.route('/api/mindmap/nodes', methods=['GET']) def get_mindmap_nodes(): # Implementierung... ``` 2. Stellen Sie sicher, dass die AJAX-Anfragen korrekt implementiert sind: ```javascript fetch('/api/mindmap/nodes') .then(response => response.json()) .then(data => { // Verarbeitung der Mindmap-Daten }); ``` 3. Überprüfen Sie die Datenbankeinträge für Mindmap-Knoten und -Verbindungen. ## ChatGPT-Assistent ### Problem: Assistent reagiert nicht auf Eingaben **Fehler:** Der ChatGPT-Assistent verarbeitet keine Benutzereingaben. **Lösung:** 1. Überprüfen Sie die Einbindung der JavaScript-Datei: ```html ``` 2. Stellen Sie sicher, dass der Assistent korrekt initialisiert wird: ```javascript document.addEventListener('DOMContentLoaded', () => { const assistant = new ChatGPTAssistant(); assistant.initialize(); }); ``` 3. Überprüfen Sie die API-Endpunkte für die Kommunikation mit dem Assistenten.