# 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
   <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:
   ```html
   <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:
   ```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
   <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:
   ```html
   <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:
   ```html
   <link href="{{ url_for('static', filename='css/tailwind.min.css') }}" rel="stylesheet">
   ```

2. Alternativ können Sie die CDN-Version direkt im Template einbinden:
   ```html
   <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:
   ```html
   <script src="{{ url_for('static', filename='neural-network-background.js') }}"></script>
   ```

2. Initialisieren Sie die Animation im Template:
   ```html
   <script>
     document.addEventListener('DOMContentLoaded', () => {
       const background = new NeuralNetworkBackground();
       background.initialize();
       background.animate();
     });
   </script>
   ```

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
   <script src="{{ url_for('static', filename='js/modules/chatgpt-assistant.js') }}"></script>
   ```

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.