Files
website/COMMON_ERRORS.md

7.4 KiB

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

    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

    python create_default_users.py
    

    Dieses Skript:

    • Erstellt Standardbenutzer (admin, user), falls keine vorhanden sind
    • Setzt Passwörter mit korrektem Hashing
  3. Datenbank testen

    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:

    <link href="https://cdn.tailwindcss.com" rel="stylesheet">
    
  2. Überprüfen Sie die Netzwerkverbindung und ob die CDN-Domains erreichbar sind.

  3. Verwenden Sie lokale Ressourcen als Alternative:

    <link href="{{ url_for('static', filename='css/tailwind.min.css') }}" rel="stylesheet">
    

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:

    # 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:

    <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
    <script src="{{ url_for('static', filename='js/alpine.min.js') }}" defer></script>
    
  4. Für Inline-Skripte keine Nonce verwenden:

    <script>
      // Inline-JavaScript-Code ohne Einschränkungen
    </script>
    

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:

    <link href="{{ url_for('static', filename='css/tailwind.min.css') }}" rel="stylesheet">
    
  2. Alternativ können Sie die CDN-Version direkt im Template einbinden:

    <script src="https://cdn.tailwindcss.com"></script>
    
  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:

    <script src="{{ url_for('static', filename='neural-network-background.js') }}"></script>
    
  2. Initialisieren Sie die Animation im Template:

    <script>
      document.addEventListener('DOMContentLoaded', () => {
        const background = new NeuralNetworkBackground();
        background.initialize();
        background.animate();
      });
    </script>
    
  3. Stellen Sie sicher, dass keine CSS-Regeln die Animation überdecken:

    #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:

    @app.route('/api/mindmap/nodes', methods=['GET'])
    def get_mindmap_nodes():
        # Implementierung...
    
  2. Stellen Sie sicher, dass die AJAX-Anfragen korrekt implementiert sind:

    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:

    <script src="{{ url_for('static', filename='js/modules/chatgpt-assistant.js') }}"></script>
    
  2. Stellen Sie sicher, dass der Assistent korrekt initialisiert wird:

    document.addEventListener('DOMContentLoaded', () => {
      const assistant = new ChatGPTAssistant();
      assistant.initialize();
    });
    
  3. Überprüfen Sie die API-Endpunkte für die Kommunikation mit dem Assistenten.