From dec30e468177abba7059934f2f0b3f8ad619a1dd Mon Sep 17 00:00:00 2001 From: marwin Date: Mon, 12 May 2025 19:27:18 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat:=20update=20app=20logic=20and?= =?UTF-8?q?=20improve=20mindmap=20functionality?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __pycache__/app.cpython-313.pyc | Bin 121766 -> 110931 bytes app.py | 876 ++++------------- logs/app.log | 1547 +++++++++++++++++++++++++++++++ static/js/update_mindmap.js | 933 +++++++++---------- 4 files changed, 2142 insertions(+), 1214 deletions(-) diff --git a/__pycache__/app.cpython-313.pyc b/__pycache__/app.cpython-313.pyc index cc6b4de9c27f13467bf9f431d5c6b5178494e5fe..3e91d7bae7cb257ce02bdc9e7b2a4f5f0826bd0a 100644 GIT binary patch delta 21220 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 U{3xeNeM6;%`i-zKry=yc@OX5>s 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 O<{I$1G;-VA@c#qV3622( diff --git a/app.py b/app.py index a4a3485..0f0b8ce 100644 --- a/app.py +++ b/app.py @@ -26,6 +26,7 @@ import sqlalchemy import ssl import certifi import os +from sqlalchemy.orm import joinedload # Modelle importieren from models import ( @@ -2342,749 +2343,184 @@ if __name__ == '__main__': db.create_all() socketio.run(app, debug=True, host='0.0.0.0') -@app.route('/api/mindmap/science') -def get_science_mindmap(): - """ - API-Endpunkt für die Wissenschaft-Mindmap - """ +def get_category_mindmap_data(category_name): + """Generische Funktion zum Abrufen der Mindmap-Daten für eine Kategorie.""" try: - # Stelle sicher, dass wir Kategorien haben - if Category.query.count() == 0: - create_default_categories() + # Kategorie mit allen Unterkategorien in einer Abfrage laden + category = Category.query.filter_by(name=category_name).options( + joinedload(Category.children) + ).first_or_404() - # Überprüfe, ob wir bereits einen "Wissen"-Knoten haben - wissen_node = MindMapNode.query.filter_by(name="Wissen").first() + # Basis-Knoten erstellen + nodes = [{ + 'id': f'cat_{category.id}', + 'name': category.name, + 'description': category.description or '', + 'color_code': category.color_code or '#9F7AEA', + 'is_center': True, + 'has_children': bool(category.children), + 'icon': category.icon or 'fa-solid fa-circle' + }] - # Wenn kein "Wissen"-Knoten existiert, erstelle ihn - if not wissen_node: - wissen_node = MindMapNode( - name="Wissen", - description="Zentrale Wissensbasis", - color_code="#4299E1", - is_public=True - ) - db.session.add(wissen_node) - db.session.commit() + # Unterkategorien hinzufügen + for subcat in category.children: + nodes.append({ + 'id': f'cat_{subcat.id}', + 'name': subcat.name, + 'description': subcat.description or '', + 'color_code': subcat.color_code or '#9F7AEA', + 'category': category_name, + 'has_children': bool(subcat.children), + 'icon': subcat.icon or 'fa-solid fa-circle' + }) - # Hole alle Kategorien und Knoten - categories = Category.query.filter_by(parent_id=None).all() - category_tree = [build_category_tree(cat) for cat in categories] - - # Hole alle Mindmap-Knoten außer dem "Wissen"-Knoten - nodes = MindMapNode.query.filter(MindMapNode.id != wissen_node.id).all() - - # Vorbereiten der Node- und Edge-Arrays für die Antwort - node_data = [] - edge_data = [] - - # Zuerst den "Wissen"-Knoten hinzufügen - node_data.append({ - 'id': wissen_node.id, - 'name': wissen_node.name, - 'description': wissen_node.description or '', - 'color_code': wissen_node.color_code or '#4299E1', - 'thought_count': len(wissen_node.thoughts), - 'category_id': wissen_node.category_id - }) - - # Dann die anderen Knoten - for node in nodes: - node_obj = { - 'id': node.id, - 'name': node.name, - 'description': node.description or '', - 'color_code': node.color_code or '#9F7AEA', - 'thought_count': len(node.thoughts), - 'category_id': node.category_id - } - - # Verbinde alle Top-Level-Knoten mit dem Wissen-Knoten - if not node.parents.all(): - edge_data.append({ - 'source': wissen_node.id, - 'target': node.id - }) - - # Verbindungen zwischen vorhandenen Knoten hinzufügen - node_children = node.children.all() - for child in node_children: - edge_data.append({ - 'source': node.id, - 'target': child.id - }) - - node_data.append(node_obj) + # Kanten erstellen (vereinheitlichte Schlüssel) + edges = [{ + 'source': f'cat_{category.id}', + 'target': f'cat_{subcat.id}', + 'strength': 0.8 + } for subcat in category.children] return jsonify({ 'success': True, - 'categories': category_tree, - 'nodes': node_data, - 'edges': edge_data + 'nodes': nodes, + 'edges': edges }) - except Exception as e: - print(f"Fehler beim Neuladen der Mindmap: {str(e)}") + print(f"Fehler beim Abrufen der {category_name}-Mindmap: {str(e)}") return jsonify({ 'success': False, - 'error': 'Datenbankverbindung konnte nicht hergestellt werden' + 'error': f'{category_name}-Mindmap konnte nicht geladen werden', + 'details': str(e) }), 500 +@app.route('/api/mindmap/root') +def get_root_mindmap_data(): + """Liefert die Daten für die Root-Mindmap.""" + try: + # Hauptkategorien mit Unterkategorien in einer Abfrage laden + categories = Category.query.filter_by(parent_id=None).options( + joinedload(Category.children) + ).all() + + # Basis-Knoten erstellen + nodes = [{ + 'id': 'root', + 'name': 'Wissen', + 'description': 'Zentrale Wissensbasis', + 'color_code': '#4299E1', + 'is_center': True, + 'has_children': bool(categories), + 'icon': 'fa-solid fa-circle' + }] + + # Kategorien als Knoten hinzufügen + for category in categories: + nodes.append({ + 'id': f'cat_{category.id}', + 'name': category.name, + 'description': category.description or '', + 'color_code': category.color_code or '#9F7AEA', + 'category': category.name, + 'has_children': bool(category.children), + 'icon': category.icon or 'fa-solid fa-circle' + }) + + # Kanten erstellen (vereinheitlichte Schlüssel) + edges = [{ + 'source': 'root', + 'target': f'cat_{category.id}', + 'strength': 0.8 + } for category in categories] + + return jsonify({ + 'success': True, + 'nodes': nodes, + 'edges': edges + }) + except Exception as e: + print(f"Fehler beim Abrufen der Root-Mindmap: {str(e)}") + return jsonify({ + 'success': False, + 'error': 'Root-Mindmap konnte nicht geladen werden', + 'details': str(e) + }), 500 + +# Spezifische Routen für Kategorien +@app.route('/api/mindmap/philosophy') +def get_philosophy_mindmap_data(): + return get_category_mindmap_data('Philosophie') + +@app.route('/api/mindmap/science') +def get_science_mindmap_data(): + return get_category_mindmap_data('Wissenschaft') + @app.route('/api/mindmap/technology') -def get_technology_mindmap(): - """ - API-Endpunkt für die Technologie-Mindmap - """ - try: - # Stelle sicher, dass wir Kategorien haben - if Category.query.count() == 0: - create_default_categories() - - # Überprüfe, ob wir bereits einen "Wissen"-Knoten haben - wissen_node = MindMapNode.query.filter_by(name="Wissen").first() - - # Wenn kein "Wissen"-Knoten existiert, erstelle ihn - if not wissen_node: - wissen_node = MindMapNode( - name="Wissen", - description="Zentrale Wissensbasis", - color_code="#4299E1", - is_public=True - ) - db.session.add(wissen_node) - db.session.commit() - - # Hole alle Kategorien und Knoten - categories = Category.query.filter_by(parent_id=None).all() - category_tree = [build_category_tree(cat) for cat in categories] - - # Hole alle Mindmap-Knoten außer dem "Wissen"-Knoten - nodes = MindMapNode.query.filter(MindMapNode.id != wissen_node.id).all() - - # Vorbereiten der Node- und Edge-Arrays für die Antwort - node_data = [] - edge_data = [] - - # Zuerst den "Wissen"-Knoten hinzufügen - node_data.append({ - 'id': wissen_node.id, - 'name': wissen_node.name, - 'description': wissen_node.description or '', - 'color_code': wissen_node.color_code or '#4299E1', - 'thought_count': len(wissen_node.thoughts), - 'category_id': wissen_node.category_id - }) - - # Dann die anderen Knoten - for node in nodes: - node_obj = { - 'id': node.id, - 'name': node.name, - 'description': node.description or '', - 'color_code': node.color_code or '#9F7AEA', - 'thought_count': len(node.thoughts), - 'category_id': node.category_id - } - - # Verbinde alle Top-Level-Knoten mit dem Wissen-Knoten - if not node.parents.all(): - edge_data.append({ - 'source': wissen_node.id, - 'target': node.id - }) - - # Verbindungen zwischen vorhandenen Knoten hinzufügen - node_children = node.children.all() - for child in node_children: - edge_data.append({ - 'source': node.id, - 'target': child.id - }) - - node_data.append(node_obj) - - return jsonify({ - 'success': True, - 'categories': category_tree, - 'nodes': node_data, - 'edges': edge_data - }) - - except Exception as e: - print(f"Fehler beim Neuladen der Mindmap: {str(e)}") - return jsonify({ - 'success': False, - 'error': 'Datenbankverbindung konnte nicht hergestellt werden' - }), 500 +def get_technology_mindmap_data(): + return get_category_mindmap_data('Technologie') @app.route('/api/mindmap/arts') -def get_arts_mindmap(): - """ - API-Endpunkt für die Künste-Mindmap - """ - try: - # Stelle sicher, dass wir Kategorien haben - if Category.query.count() == 0: - create_default_categories() - - # Überprüfe, ob wir bereits einen "Wissen"-Knoten haben - wissen_node = MindMapNode.query.filter_by(name="Wissen").first() - - # Wenn kein "Wissen"-Knoten existiert, erstelle ihn - if not wissen_node: - wissen_node = MindMapNode( - name="Wissen", - description="Zentrale Wissensbasis", - color_code="#4299E1", - is_public=True - ) - db.session.add(wissen_node) - db.session.commit() - - # Hole alle Kategorien und Knoten - categories = Category.query.filter_by(parent_id=None).all() - category_tree = [build_category_tree(cat) for cat in categories] - - # Hole alle Mindmap-Knoten außer dem "Wissen"-Knoten - nodes = MindMapNode.query.filter(MindMapNode.id != wissen_node.id).all() - - # Vorbereiten der Node- und Edge-Arrays für die Antwort - node_data = [] - edge_data = [] - - # Zuerst den "Wissen"-Knoten hinzufügen - node_data.append({ - 'id': wissen_node.id, - 'name': wissen_node.name, - 'description': wissen_node.description or '', - 'color_code': wissen_node.color_code or '#4299E1', - 'thought_count': len(wissen_node.thoughts), - 'category_id': wissen_node.category_id - }) - - # Dann die anderen Knoten - for node in nodes: - node_obj = { - 'id': node.id, - 'name': node.name, - 'description': node.description or '', - 'color_code': node.color_code or '#9F7AEA', - 'thought_count': len(node.thoughts), - 'category_id': node.category_id - } - - # Verbinde alle Top-Level-Knoten mit dem Wissen-Knoten - if not node.parents.all(): - edge_data.append({ - 'source': wissen_node.id, - 'target': node.id - }) - - # Verbindungen zwischen vorhandenen Knoten hinzufügen - node_children = node.children.all() - for child in node_children: - edge_data.append({ - 'source': node.id, - 'target': child.id - }) - - node_data.append(node_obj) - - return jsonify({ - 'success': True, - 'categories': category_tree, - 'nodes': node_data, - 'edges': edge_data - }) - - except Exception as e: - print(f"Fehler beim Neuladen der Mindmap: {str(e)}") - return jsonify({ - 'success': False, - 'error': 'Datenbankverbindung konnte nicht hergestellt werden' - }), 500 +def get_arts_mindmap_data(): + return get_category_mindmap_data('Künste') -@app.route('/api/mindmap/philosophy') -def get_philosophy_mindmap(): - """ - API-Endpunkt für die Philosophie-Mindmap - """ - try: - # Stelle sicher, dass wir Kategorien haben - if Category.query.count() == 0: - create_default_categories() - - # Überprüfe, ob wir bereits einen "Wissen"-Knoten haben - wissen_node = MindMapNode.query.filter_by(name="Wissen").first() - - # Wenn kein "Wissen"-Knoten existiert, erstelle ihn - if not wissen_node: - wissen_node = MindMapNode( - name="Wissen", - description="Zentrale Wissensbasis", - color_code="#4299E1", - is_public=True - ) - db.session.add(wissen_node) - db.session.commit() - - # Hole alle Kategorien und Knoten - categories = Category.query.filter_by(parent_id=None).all() - category_tree = [build_category_tree(cat) for cat in categories] - - # Hole alle Mindmap-Knoten außer dem "Wissen"-Knoten - nodes = MindMapNode.query.filter(MindMapNode.id != wissen_node.id).all() - - # Vorbereiten der Node- und Edge-Arrays für die Antwort - node_data = [] - edge_data = [] - - # Zuerst den "Wissen"-Knoten hinzufügen - node_data.append({ - 'id': wissen_node.id, - 'name': wissen_node.name, - 'description': wissen_node.description or '', - 'color_code': wissen_node.color_code or '#4299E1', - 'thought_count': len(wissen_node.thoughts), - 'category_id': wissen_node.category_id - }) - - # Dann die anderen Knoten - for node in nodes: - node_obj = { - 'id': node.id, - 'name': node.name, - 'description': node.description or '', - 'color_code': node.color_code or '#9F7AEA', - 'thought_count': len(node.thoughts), - 'category_id': node.category_id - } - - # Verbinde alle Top-Level-Knoten mit dem Wissen-Knoten - if not node.parents.all(): - edge_data.append({ - 'source': wissen_node.id, - 'target': node.id - }) - - # Verbindungen zwischen vorhandenen Knoten hinzufügen - node_children = node.children.all() - for child in node_children: - edge_data.append({ - 'source': node.id, - 'target': child.id - }) - - node_data.append(node_obj) - - return jsonify({ - 'success': True, - 'categories': category_tree, - 'nodes': node_data, - 'edges': edge_data - }) - - except Exception as e: - print(f"Fehler beim Neuladen der Mindmap: {str(e)}") - return jsonify({ - 'success': False, - 'error': 'Datenbankverbindung konnte nicht hergestellt werden' - }), 500 - -# Generische Route für andere Mindmap-Knoten (muss nach den spezifischen Routen kommen) +# Generische Route für spezifische Knoten @app.route('/api/mindmap/') def get_mindmap_data(node_id): - """ - Stellt Mindmap-Daten für das Frontend bereit. - Liefert für 'root' die Hauptebene und für andere Node-IDs die entsprechenden Unterknoten. - Daten werden aus der Datenbank abgerufen. - """ - if node_id == 'root': - try: - # Stelle sicher, dass wir Kategorien haben - if Category.query.count() == 0: - create_default_categories() - - # Überprüfe, ob wir bereits einen "Wissen"-Knoten haben - wissen_node = MindMapNode.query.filter_by(name="Wissen").first() - - # Wenn kein "Wissen"-Knoten existiert, erstelle ihn - if not wissen_node: - wissen_node = MindMapNode( - name="Wissen", - description="Zentrale Wissensbasis", - color_code="#4299E1", - is_public=True - ) - db.session.add(wissen_node) - db.session.commit() - - # Hole alle Kategorien und Knoten - categories = Category.query.filter_by(parent_id=None).all() - category_tree = [build_category_tree(cat) for cat in categories] - - # Hole alle Mindmap-Knoten außer dem "Wissen"-Knoten - nodes = MindMapNode.query.filter(MindMapNode.id != wissen_node.id).all() - - # Vorbereiten der Node- und Edge-Arrays für die Antwort - node_data = [] - edge_data = [] - - # Zuerst den "Wissen"-Knoten hinzufügen - node_data.append({ - 'id': wissen_node.id, - 'name': wissen_node.name, - 'description': wissen_node.description or '', - 'color_code': wissen_node.color_code or '#4299E1', - 'thought_count': len(wissen_node.thoughts), - 'category_id': wissen_node.category_id - }) - - # Dann die anderen Knoten - for node in nodes: - node_obj = { - 'id': node.id, - 'name': node.name, - 'description': node.description or '', - 'color_code': node.color_code or '#9F7AEA', - 'thought_count': len(node.thoughts), - 'category_id': node.category_id - } - - # Verbinde alle Top-Level-Knoten mit dem Wissen-Knoten - if not node.parents.all(): - edge_data.append({ - 'source': wissen_node.id, - 'target': node.id - }) - - # Verbindungen zwischen vorhandenen Knoten hinzufügen - node_children = node.children.all() - for child in node_children: - edge_data.append({ - 'source': node.id, - 'target': child.id - }) - - node_data.append(node_obj) - - return jsonify({ - 'success': True, - 'categories': category_tree, - 'nodes': node_data, - 'edges': edge_data - }) - - except Exception as e: - app.logger.error(f"Fehler beim Laden der Root-Mindmap: {str(e)}") + """Liefert die Daten für einen spezifischen Mindmap-Knoten.""" + try: + # Prüfen, ob es sich um eine spezielle Route handelt + if node_id in ['root', 'philosophy', 'science', 'technology', 'arts']: return jsonify({ 'success': False, - 'error': 'Datenbankverbindung konnte nicht hergestellt werden' - }), 500 - - app.logger.info(f"Mindmap-Daten werden für Node '{node_id}' angefordert.") - - try: - # Fallback-Daten falls Datenbankzugriff fehlschlägt - fallback_data = get_fallback_mindmap_data(node_id) - - if node_id.startswith('cat_'): - # Unterkategorien einer Hauptkategorie anzeigen - category_id = node_id.replace('cat_', '') - try: - category_id_int = int(category_id) - category = Category.query.get(category_id_int) - - if category: - # Hole alle Unterkategorien - subcategories = Category.query.filter_by(parent_id=category_id_int).all() - - # Hole alle Knoten dieser Kategorie - nodes = MindMapNode.query.filter_by(category_id=category_id_int).all() - - # Vorbereiten der Antwort - node_data = [] - edge_data = [] - - # Kategorie-Knoten hinzufügen - node_data.append({ - 'id': f"cat_{category.id}", - 'name': category.name, - 'description': category.description or '', - 'color_code': category.color_code or '#9F7AEA', - 'is_category': True - }) - - # Unterkategorien als Knoten hinzufügen - for subcat in subcategories: - node_data.append({ - 'id': f"cat_{subcat.id}", - 'name': subcat.name, - 'description': subcat.description or '', - 'color_code': subcat.color_code or '#9F7AEA', - 'is_category': True - }) - - # Verbindung zur Hauptkategorie - edge_data.append({ - 'source': f"cat_{category.id}", - 'target': f"cat_{subcat.id}" - }) - - # Mindmap-Knoten hinzufügen - for node in nodes: - node_data.append({ - 'id': node.id, - 'name': node.name, - 'description': node.description or '', - 'color_code': node.color_code or '#9F7AEA', - 'thought_count': len(node.thoughts) - }) - - # Verbindung zur Kategorie - edge_data.append({ - 'source': f"cat_{category.id}", - 'target': node.id - }) - - return jsonify({ - 'success': True, - 'nodes': node_data, - 'edges': edge_data - }) - - except (ValueError, TypeError): - app.logger.error(f"Ungültige Kategorie-ID: {category_id}") - return jsonify(fallback_data) - - else: - # Versuche, einen MindMapNode mit der gegebenen ID zu finden - try: - node_id_int = int(node_id) - node = MindMapNode.query.get(node_id_int) - - if node: - # Zeige Gedanken oder verwandte Knoten - # Hier würden wir verwandte Knoten aus der Datenbank laden - # Für den Moment verwenden wir Fallback-Daten - app.logger.info(f"Knoten {node.name} gefunden, aber keine spezifische Verarbeitung implementiert.") - return jsonify(fallback_data) + 'error': 'Ungültige Knoten-ID', + 'details': 'Diese ID ist für spezielle Routen reserviert' + }), 400 - except (ValueError, TypeError): - # Wenn die ID kein Integer ist, verwende das bisherige Verhalten - app.logger.info(f"Falle auf bisheriges Verhalten für Node ID '{node_id}' zurück.") - return jsonify(fallback_data) + # Knoten mit Unterknoten in einer Abfrage laden + node = MindMapNode.query.options( + joinedload(MindMapNode.children) + ).get_or_404(node_id) - # Wenn wir hier ankommen, gibt es keine spezifische Verarbeitung für diese node_id - return jsonify(fallback_data) + # Basis-Knoten erstellen + nodes = [{ + 'id': str(node.id), + 'name': node.name, + 'description': node.description or '', + 'color_code': node.color_code or '#9F7AEA', + 'is_center': True, + 'has_children': bool(node.children), + 'icon': node.icon or 'fa-solid fa-circle' + }] + # Unterknoten hinzufügen + for child in node.children: + nodes.append({ + 'id': str(child.id), + 'name': child.name, + 'description': child.description or '', + 'color_code': child.color_code or '#9F7AEA', + 'category': node.name, + 'has_children': bool(child.children), + 'icon': child.icon or 'fa-solid fa-circle' + }) + + # Kanten erstellen (vereinheitlichte Schlüssel) + edges = [{ + 'source': str(node.id), + 'target': str(child.id), + 'strength': 0.8 + } for child in node.children] + + return jsonify({ + 'success': True, + 'nodes': nodes, + 'edges': edges + }) except Exception as e: - app.logger.error(f"Fehler beim Abrufen der Mindmap-Daten: {str(e)}") - app.logger.error(f"Stack Trace: {traceback.format_exc()}") - return jsonify({"error": "Fehler beim Abrufen der Mindmap-Daten"}), 500 - - -def get_fallback_mindmap_data(node_id): - """ - Liefert Fallback-Daten für die Mindmap, wenn die Datenbank nicht verfügbar ist. - """ - if node_id == 'root': - # Hauptebene der Mindmap - nodes = [ - { - "id": "center", - "name": "Wissenskarte", - "description": "Zentrale Wissenskarte mit allen Hauptthemen", - "is_center": True, - "color_code": "#f5f5f5", - "has_children": True - }, - { - "id": "philosophy", - "name": "Philosophie", - "description": "Die Lehre vom Denken und der Erkenntnis", - "category": "Philosophie", - "has_children": True, - "color_code": "#9F7AEA" - }, - { - "id": "science", - "name": "Wissenschaft", - "description": "Systematische Erforschung der Natur und Gesellschaft", - "category": "Wissenschaft", - "has_children": True, - "color_code": "#f4b400" - }, - { - "id": "technology", - "name": "Technologie", - "description": "Anwendung wissenschaftlicher Erkenntnisse", - "category": "Technologie", - "has_children": True, - "color_code": "#0d47a1" - }, - { - "id": "arts", - "name": "Künste", - "description": "Kreativer Ausdruck und künstlerische Gestaltung", - "category": "Künste", - "has_children": True, - "color_code": "#c2185b" - } - ] - - edges = [ - {"source_id": "center", "target_id": "philosophy", "strength": 0.9}, - {"source_id": "center", "target_id": "science", "strength": 0.9}, - {"source_id": "center", "target_id": "technology", "strength": 0.9}, - {"source_id": "center", "target_id": "arts", "strength": 0.9} - ] - - elif node_id == 'philosophy': - nodes = [ - { - "id": "epistemology", - "name": "Erkenntnistheorie", - "description": "Untersuchung der Natur und Grenzen menschlicher Erkenntnis", - "category": "Philosophie", - "has_children": True, - "color_code": "#9F7AEA" - }, - { - "id": "ethics", - "name": "Ethik", - "description": "Lehre vom moralisch richtigen Handeln", - "category": "Philosophie", - "has_children": True, - "color_code": "#9F7AEA" - }, - { - "id": "metaphysics", - "name": "Metaphysik", - "description": "Grundfragen des Seins und der Wirklichkeit", - "category": "Philosophie", - "has_children": True, - "color_code": "#9F7AEA" - } - ] - - edges = [ - {"source_id": "philosophy", "target_id": "epistemology", "strength": 0.8}, - {"source_id": "philosophy", "target_id": "ethics", "strength": 0.8}, - {"source_id": "philosophy", "target_id": "metaphysics", "strength": 0.8} - ] - - elif node_id == 'science': - nodes = [ - { - "id": "physics", - "name": "Physik", - "description": "Lehre von der Materie und ihren Wechselwirkungen", - "category": "Wissenschaft", - "has_children": True, - "color_code": "#f4b400" - }, - { - "id": "biology", - "name": "Biologie", - "description": "Lehre von den Lebewesen und ihren Lebensprozessen", - "category": "Wissenschaft", - "has_children": True, - "color_code": "#f4b400" - }, - { - "id": "chemistry", - "name": "Chemie", - "description": "Wissenschaft von den Stoffen und ihren Reaktionen", - "category": "Wissenschaft", - "has_children": True, - "color_code": "#f4b400" - } - ] - - edges = [ - {"source_id": "science", "target_id": "physics", "strength": 0.8}, - {"source_id": "science", "target_id": "biology", "strength": 0.8}, - {"source_id": "science", "target_id": "chemistry", "strength": 0.8} - ] - - elif node_id == 'technology': - nodes = [ - { - "id": "ai", - "name": "Künstliche Intelligenz", - "description": "Maschinelles Lernen und intelligente Systeme", - "category": "Technologie", - "has_children": True, - "color_code": "#0d47a1" - }, - { - "id": "robotics", - "name": "Robotik", - "description": "Entwicklung und Steuerung von Robotern", - "category": "Technologie", - "has_children": True, - "color_code": "#0d47a1" - }, - { - "id": "quantum_computing", - "name": "Quantencomputing", - "description": "Computer basierend auf Quantenmechanik", - "category": "Technologie", - "has_children": True, - "color_code": "#0d47a1" - } - ] - - edges = [ - {"source_id": "technology", "target_id": "ai", "strength": 0.8}, - {"source_id": "technology", "target_id": "robotics", "strength": 0.8}, - {"source_id": "technology", "target_id": "quantum_computing", "strength": 0.8} - ] - - elif node_id == 'arts': - nodes = [ - { - "id": "visual_arts", - "name": "Bildende Kunst", - "description": "Malerei, Bildhauerei und andere visuelle Kunstformen", - "category": "Künste", - "has_children": True, - "color_code": "#c2185b" - }, - { - "id": "music", - "name": "Musik", - "description": "Tonkunst und musikalische Komposition", - "category": "Künste", - "has_children": True, - "color_code": "#c2185b" - }, - { - "id": "literature", - "name": "Literatur", - "description": "Schriftliche Kunstwerke und Poesie", - "category": "Künste", - "has_children": True, - "color_code": "#c2185b" - } - ] - - edges = [ - {"source_id": "arts", "target_id": "visual_arts", "strength": 0.8}, - {"source_id": "arts", "target_id": "music", "strength": 0.8}, - {"source_id": "arts", "target_id": "literature", "strength": 0.8} - ] - - else: - # Für jede andere Node-ID geben wir eine leere Struktur zurück - nodes = [] - edges = [] - - # Antwort zusammenstellen - return { - "nodes": nodes, - "edges": edges - } - -# Diese Routen wurden an den Anfang der Datei verschoben und werden nicht mehr benötigt + print(f"Fehler beim Abrufen der Mindmap-Daten für Knoten {node_id}: {str(e)}") + return jsonify({ + 'success': False, + 'error': 'Mindmap-Daten konnten nicht geladen werden', + 'details': str(e) + }), 500 diff --git a/logs/app.log b/logs/app.log index 2f78a93..7f5b424 100644 --- a/logs/app.log +++ b/logs/app.log @@ -3609,3 +3609,1550 @@ werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on 2025-05-12 18:53:25,354 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] 2025-05-12 18:53:25,464 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] 2025-05-12 18:53:25,464 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:53:56,878 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:53:56,878 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:53:57,634 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:53:57,634 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:53:59,380 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/philosophy, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:53:59,380 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/philosophy, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:54:27,340 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/science, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:54:27,340 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/science, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:55:14,524 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/philosophy, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:55:14,524 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/philosophy, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:56:03,600 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:56:03,600 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:56:04,503 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:56:04,503 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:56:06,091 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/philosophy, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:56:06,091 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/philosophy, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:56:06,969 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/philosophy, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:56:06,969 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/philosophy, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:56:07,139 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/philosophy, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:56:07,139 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/philosophy, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:56:07,317 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/philosophy, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:56:07,317 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/philosophy, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:56:07,481 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/philosophy, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:56:07,481 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/philosophy, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:56:58,419 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:56:58,420 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:57:01,055 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:57:01,055 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:57:01,097 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:57:01,097 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:57:22,525 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:57:23,064 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:57:25,202 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:57:25,202 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:57:25,670 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:57:25,670 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:57:40,531 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:57:41,506 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:57:43,039 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:57:43,039 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:57:43,214 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:57:43,214 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:57:57,785 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:57:57,785 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:57:58,635 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:57:58,635 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 18:59:07,435 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:59:07,436 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:59:10,064 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:59:10,064 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:59:10,174 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:59:10,174 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:59:26,161 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 18:59:28,220 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:01:55,013 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:01:56,747 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:01:56,747 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:02:01,886 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:02:03,547 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:02:03,547 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:02:10,756 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:02:10,756 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:02:12,164 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:02:12,164 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:02:52,960 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:02:55,534 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:02:55,534 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:03:10,668 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:03:10,668 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:03:11,748 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:03:11,748 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:03:13,598 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/philosophy, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:03:13,598 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/philosophy, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:04:08,151 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:04:10,416 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:04:10,416 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:04:22,286 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:04:25,357 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:04:25,357 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:04:39,206 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:04:41,820 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:04:41,820 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:05:01,639 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:05:03,754 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:05:03,754 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:05:14,964 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:05:17,456 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:05:17,456 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:05:31,230 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:05:31,230 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:05:32,062 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:05:32,062 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:05:33,704 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/technology, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:05:33,704 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/technology, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:06:26,151 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:06:28,722 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:06:28,722 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:06:53,066 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:06:55,348 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:06:55,348 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:08:40,669 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:08:40,669 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:08:41,555 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:08:41,555 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:08:43,579 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/science, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:08:43,579 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/science, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:09:43,573 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:09:45,228 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:09:45,228 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:10:00,637 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:10:02,664 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:10:02,664 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:10:33,173 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:10:36,253 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:10:36,253 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:10:57,933 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:10:59,700 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:10:59,700 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:11:29,949 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:11:32,284 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:11:32,284 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:11:40,312 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:11:40,312 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:11:41,410 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:11:41,410 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:12:36,048 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:12:38,865 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:12:38,865 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:12:53,113 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:12:55,121 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:12:55,121 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:13:00,109 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:13:00,109 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:13:00,604 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:13:00,604 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:14:18,348 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:14:20,522 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:14:20,522 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:14:35,321 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:14:37,205 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:14:37,205 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:15:01,670 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:15:01,670 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:15:02,627 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:15:02,627 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:15:04,724 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/arts, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:15:04,724 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/arts, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:17:26,437 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:17:27,799 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:17:27,799 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:17:51,772 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:17:53,967 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:17:53,967 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:20:29,973 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:20:34,146 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:20:34,146 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:21:04,008 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:21:05,471 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:21:05,471 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:76] +2025-05-12 19:21:17,502 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:21:17,502 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:21:18,333 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:21:18,333 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:92] +2025-05-12 19:22:11,535 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:77] +2025-05-12 19:22:14,474 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:77] +2025-05-12 19:22:14,474 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:77] +2025-05-12 19:22:56,771 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:77] +2025-05-12 19:22:58,206 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:77] +2025-05-12 19:22:58,206 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:77] +2025-05-12 19:23:03,397 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:77] +2025-05-12 19:23:04,873 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:77] +2025-05-12 19:23:04,873 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:77] +2025-05-12 19:23:07,315 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:93] +2025-05-12 19:23:07,315 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:93] +2025-05-12 19:23:08,253 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:93] +2025-05-12 19:23:08,253 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:93] +2025-05-12 19:23:16,365 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:93] +2025-05-12 19:23:16,365 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:93] +2025-05-12 19:23:16,870 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:93] +2025-05-12 19:23:16,870 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:93] +2025-05-12 19:24:03,395 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:77] +2025-05-12 19:24:06,088 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:77] +2025-05-12 19:24:06,088 INFO: Anwendung gestartet [in C:\Users\firem\Desktop\111\Systades\website\app.py:77] +2025-05-12 19:24:51,417 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:93] +2025-05-12 19:24:51,417 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /.well-known/appspecific/com.chrome.devtools.json, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:93] +2025-05-12 19:24:52,247 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:93] +2025-05-12 19:24:52,247 ERROR: Fehler 404: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. +Endpoint: /api/mindmap/root, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\firem\Desktop\111\Systades\website\.venv\Lib\site-packages\werkzeug\routing\map.py", line 624, in match + raise NotFound() from None +werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. + [in C:\Users\firem\Desktop\111\Systades\website\app.py:93] diff --git a/static/js/update_mindmap.js b/static/js/update_mindmap.js index 73e8542..f75977e 100644 --- a/static/js/update_mindmap.js +++ b/static/js/update_mindmap.js @@ -5,199 +5,260 @@ * Implementiert Lazy Loading & Progressive Disclosure */ -// Mock-Datenbank für Subthemen (später durch echte DB-Abfragen ersetzen) -const subthemesDatabase = { - 'philosophy': [ - { - id: 'epistemology', - label: 'Erkenntnistheorie', - category: 'Philosophie', - description: 'Untersuchung der Natur und Grenzen menschlicher Erkenntnis', - hasChildren: true +// Neue zentrale Konfiguration +const mindmapConfig = { + categories: { + 'Philosophie': { + icon: 'fa-solid fa-lightbulb', + color: '#b71c1c', + description: 'Die Lehre vom Denken und der Erkenntnis' }, - { - id: 'ethics', - label: 'Ethik', - category: 'Philosophie', - description: 'Lehre vom moralisch richtigen Handeln', - hasChildren: true + 'Wissenschaft': { + icon: 'fa-solid fa-atom', + color: '#f4b400', + description: 'Systematische Erforschung der Natur und Gesellschaft' }, - { - id: 'metaphysics', - label: 'Metaphysik', - category: 'Philosophie', - description: 'Grundfragen des Seins und der Wirklichkeit', - hasChildren: true + 'Technologie': { + icon: 'fa-solid fa-microchip', + color: '#0d47a1', + description: 'Anwendung wissenschaftlicher Erkenntnisse' + }, + 'Künste': { + icon: 'fa-solid fa-palette', + color: '#c2185b', + description: 'Kreativer Ausdruck und künstlerische Gestaltung' } - ], - 'science': [ - { - id: 'physics', - label: 'Physik', - category: 'Wissenschaft', - description: 'Lehre von der Materie und ihren Wechselwirkungen', - hasChildren: true - }, - { - id: 'biology', - label: 'Biologie', - category: 'Wissenschaft', - description: 'Lehre von den Lebewesen und ihren Lebensprozessen', - hasChildren: true - }, - { - id: 'chemistry', - label: 'Chemie', - category: 'Wissenschaft', - description: 'Wissenschaft von den Stoffen und ihren Reaktionen', - hasChildren: true - } - ], - 'technology': [ - { - id: 'ai', - label: 'Künstliche Intelligenz', - category: 'Technologie', - description: 'Maschinelles Lernen und intelligente Systeme', - hasChildren: true - }, - { - id: 'robotics', - label: 'Robotik', - category: 'Technologie', - description: 'Entwicklung und Steuerung von Robotern', - hasChildren: true - }, - { - id: 'quantum_computing', - label: 'Quantencomputing', - category: 'Technologie', - description: 'Computer basierend auf Quantenmechanik', - hasChildren: true - } - ], - 'arts': [ - { - id: 'visual_arts', - label: 'Bildende Kunst', - category: 'Künste', - description: 'Malerei, Bildhauerei und andere visuelle Kunstformen', - hasChildren: true - }, - { - id: 'music', - label: 'Musik', - category: 'Künste', - description: 'Tonkunst und musikalische Komposition', - hasChildren: true - }, - { - id: 'literature', - label: 'Literatur', - category: 'Künste', - description: 'Schriftliche Kunstwerke und Poesie', - hasChildren: true - } - ] + }, + defaultNodeStyle: { + fontSize: 18, + fontColor: '#fff', + neuronSize: 8, + neuronActivity: 0.8 + }, + centerNodeStyle: { + fontSize: 22, + fontColor: '#222', + neuronSize: 12, + neuronActivity: 1.0, + color: '#f5f5f5', + icon: 'fa-solid fa-circle' + } }; -// Icon-Definitionen für Kategorien (FontAwesome oder SVG-URL) -const categoryIcons = { - 'Philosophie': 'fa-solid fa-lightbulb', - 'Wissenschaft': 'fa-solid fa-atom', - 'Technologie': 'fa-solid fa-microchip', - 'Künste': 'fa-solid fa-palette', - 'Psychologie': 'fa-solid fa-brain' -}; - -// Farben für Kategorien (wie im Bild) -const categoryColors = { - 'Philosophie': '#b71c1c', // Rot - 'Wissenschaft': '#f4b400', // Gelb - 'Technologie': '#0d47a1', // Blau - 'Künste': '#c2185b', // Pink - 'Psychologie': '#009688' // Türkis -}; - -// Initiale Mindmap-Daten (nur oberste Ebene, mit Icon und Farbe) -const mindmapData = { - nodes: [ - { - id: 'center', - label: 'Wissenskarte', - isCenter: true, - color: '#f5f5f5', - icon: 'fa-solid fa-circle', - fontColor: '#222', - fontSize: 22, - neuronSize: 12, - neuronActivity: 1.0 +// Zentrale Styling-Konfiguration +const mindmapStyles = { + node: { + base: { + 'background-color': 'data(color)', + 'label': 'data(label)', + 'color': '#ffffff', + 'text-background-color': 'rgba(0, 0, 0, 0.7)', + 'text-background-opacity': 0.8, + 'text-background-padding': '4px', + 'text-valign': 'center', + 'text-halign': 'center', + 'font-size': 16, + 'width': 'mapData(neuronSize, 3, 10, 30, 60)', + 'height': 'mapData(neuronSize, 3, 10, 30, 60)', + 'border-width': 2, + 'border-color': '#ffffff', + 'border-opacity': 0.8, + 'shape': 'ellipse', + 'background-opacity': 0.85 }, - { - id: 'philosophy', - label: 'Philosophie', - category: 'Philosophie', - description: 'Die Lehre vom Denken und der Erkenntnis', - hasChildren: true, - expanded: false, - neuronSize: 8, - neuronActivity: 0.8, - color: categoryColors['Philosophie'], - icon: categoryIcons['Philosophie'], - fontColor: '#fff', - fontSize: 18 + center: { + 'background-color': '#f5f5f5', + 'color': '#222', + 'font-size': 20, + 'border-width': 3, + 'width': 100, + 'height': 100 }, - { - id: 'science', - label: 'Wissenschaft', - category: 'Wissenschaft', - description: 'Systematische Erforschung der Natur und Gesellschaft', - hasChildren: true, - expanded: false, - neuronSize: 8, - neuronActivity: 0.8, - color: categoryColors['Wissenschaft'], - icon: categoryIcons['Wissenschaft'], - fontColor: '#fff', - fontSize: 18 - }, - { - id: 'technology', - label: 'Technologie', - category: 'Technologie', - description: 'Anwendung wissenschaftlicher Erkenntnisse', - hasChildren: true, - expanded: false, - neuronSize: 8, - neuronActivity: 0.8, - color: categoryColors['Technologie'], - icon: categoryIcons['Technologie'], - fontColor: '#fff', - fontSize: 18 - }, - { - id: 'arts', - label: 'Künste', - category: 'Künste', - description: 'Kreativer Ausdruck und künstlerische Gestaltung', - hasChildren: true, - expanded: false, - neuronSize: 8, - neuronActivity: 0.8, - color: categoryColors['Künste'], - icon: categoryIcons['Künste'], - fontColor: '#fff', - fontSize: 18 + selected: { + 'border-color': '#f59e42', + 'border-width': 3, + 'background-opacity': 1 } - ], - edges: [ - { source: 'center', target: 'philosophy', strength: 0.9 }, - { source: 'center', target: 'science', strength: 0.9 }, - { source: 'center', target: 'technology', strength: 0.9 }, - { source: 'center', target: 'arts', strength: 0.9 } - ] + }, + edge: { + base: { + 'width': function(ele) { + return ele.data('strength') ? ele.data('strength') * 2 : 1; + }, + 'line-color': function(ele) { + const sourceColor = ele.source().data('color'); + return sourceColor || '#8a8aaa'; + }, + 'line-opacity': function(ele) { + return ele.data('strength') ? ele.data('strength') * 0.6 : 0.4; + }, + 'curve-style': 'bezier', + 'target-arrow-shape': 'none', + 'control-point-distances': [30, -30], + 'control-point-weights': [0.5, 0.5] + } + }, + layout: { + base: { + name: 'cose', + animate: true, + animationDuration: 500, + refresh: 20, + fit: true, + padding: 30, + nodeRepulsion: 4500, + idealEdgeLength: 50, + edgeElasticity: 0.45, + randomize: true, + componentSpacing: 100, + nodeOverlap: 20, + gravity: 0.25, + initialTemp: 1000, + coolingFactor: 0.95, + minTemp: 1 + } + } }; +// Globale Variable für die Mindmap-Daten +let mindmapData = null; + +// Funktion zum Laden der Mindmap-Daten aus der Datenbank +async function loadMindmapData(nodeId = null) { + try { + const apiUrl = nodeId ? `/api/mindmap/${nodeId}` : '/api/mindmap/root'; + console.log('Lade Mindmap-Daten von:', apiUrl); + + const response = await fetch(apiUrl); + console.log('API-Antwort Status:', response.status); + + if (!response.ok) { + let errorData; + try { + errorData = await response.json(); + console.log('API-Fehler Details:', { + status: response.status, + statusText: response.statusText, + errorData + }); + } catch (e) { + console.error('Fehler beim Parsen der Fehlerantwort:', e); + errorData = { + error: `HTTP-Fehler ${response.status}: ${response.statusText}` + }; + } + + // Fehlerobjekt für die Benachrichtigung erstellen + const errorMessage = { + error: errorData.error || errorData.message || 'Unbekannter Fehler', + details: errorData.details || null + }; + + showUINotification(errorMessage, 'error'); + throw new Error(errorMessage.error); + } + + const data = await response.json(); + console.log('Geladene Mindmap-Daten:', data); + + if (!data.success) { + const errorMessage = { + error: data.error || 'Mindmap-Daten konnten nicht geladen werden', + details: data.details || null + }; + showUINotification(errorMessage, 'error'); + throw new Error(errorMessage.error); + } + + // Erfolgreiche Antwort + mindmapData = data; // Speichere die Daten in der globalen Variable + showUINotification('Mindmap-Daten erfolgreich geladen', 'success'); + return data; + } catch (error) { + console.error('Fehler beim Laden der Mindmap-Daten:', { + message: error.message, + stack: error.stack, + nodeId + }); + + // Stelle sicher, dass wir eine aussagekräftige Fehlermeldung haben + const errorMessage = { + error: error.message || 'Unbekannter Fehler beim Laden der Mindmap-Daten', + details: error.stack + }; + + showUINotification(errorMessage, 'error'); + throw error; + } +} + +// Funktion zum Initialisieren der Mindmap +async function initializeMindmap() { + try { + const data = await loadMindmapData(); + if (!data || !data.nodes || !data.edges) { + throw new Error('Ungültiges Datenformat: Mindmap-Daten fehlen oder sind unvollständig'); + } + + const elements = [ + // Knoten + ...data.nodes.map(node => ({ + data: { + id: node.id, + label: node.name, + category: node.category, + description: node.description, + hasChildren: node.has_children, + expanded: false, + color: node.color_code, + fontColor: '#ffffff', + fontSize: node.is_center ? 20 : 16 + } + })), + // Kanten + ...data.edges.map(edge => ({ + data: { + source: edge.source, + target: edge.target, + strength: edge.strength || 0.5 + } + })) + ]; + + // Bestehende Cytoscape-Instanz entfernen, falls vorhanden + if (window.cy) { + window.cy.destroy(); + } + + window.cy = cytoscape({ + container: document.getElementById('cy'), + elements: elements, + style: mindmapStyles, + layout: mindmapStyles.layout.base + }); + + // Event-Listener für Knoten-Klicks + cy.on('tap', 'node', async function(evt) { + const node = evt.target; + if (node.data('hasChildren') && !node.data('expanded')) { + await loadSubthemes(node); + } + }); + + // Layout ausführen + cy.layout(mindmapStyles.layout.base).run(); + + return true; + } catch (error) { + console.error('Fehler bei der Mindmap-Initialisierung:', error); + showUINotification({ + error: 'Mindmap konnte nicht initialisiert werden', + details: error.message + }, 'error'); + return false; + } +} + // Warte bis DOM geladen ist document.addEventListener('DOMContentLoaded', function() { console.log('DOMContentLoaded Event ausgelöst'); @@ -257,79 +318,22 @@ document.addEventListener('DOMContentLoaded', function() { style: [ { selector: 'node', - style: { - 'background-color': 'data(color)', - 'label': 'data(label)', - 'color': 'data(fontColor)', - 'text-valign': 'center', - 'text-halign': 'center', - 'font-size': 'data(fontSize)', - 'width': function(ele) { - return ele.data('isCenter') ? 100 : 80; - }, - 'height': function(ele) { - return ele.data('isCenter') ? 100 : 80; - }, - 'border-width': 2, - 'border-color': '#ffffff', - 'border-opacity': 0.8, - 'shape': 'ellipse', - 'background-opacity': 0.9, - 'text-wrap': 'wrap', - 'text-max-width': 80, - 'transition-property': 'background-color, border-width', - 'transition-duration': '0.2s' - } + style: mindmapStyles.node.base }, { selector: 'node[isCenter]', - style: { - 'background-color': '#f5f5f5', - 'color': '#222', - 'font-size': 20, - 'border-width': 3, - 'width': 100, - 'height': 100 - } + style: mindmapStyles.node.center }, { selector: 'node:selected', - style: { - 'border-color': '#f59e42', - 'border-width': 3, - 'background-opacity': 1 - } + style: mindmapStyles.node.selected }, { selector: 'edge', - style: { - 'width': function(ele) { - return ele.data('strength') ? ele.data('strength') * 2 : 1; - }, - 'line-color': function(ele) { - const sourceColor = ele.source().data('color'); - return sourceColor || '#8a8aaa'; - }, - 'line-opacity': function(ele) { - return ele.data('strength') ? ele.data('strength') * 0.6 : 0.4; - }, - 'curve-style': 'bezier', - 'target-arrow-shape': 'none', - 'control-point-distances': [30, -30], - 'control-point-weights': [0.5, 0.5] - } + style: mindmapStyles.edge.base } ], - layout: { - name: 'concentric', - fit: true, - padding: 50, - animate: true, - concentric: function(node) { - return node.data('isCenter') ? 2 : 1; - }, - levelWidth: function() { return 1; } - } + layout: mindmapStyles.layout.base }); console.log('Cytoscape initialisiert'); @@ -469,63 +473,42 @@ function initializeNeuralDesign(cy) { // Modifiziere die updateMindmap Funktion function updateMindmap() { - if (!cy) return; - - // Bestehende Elemente entfernen - cy.elements().remove(); - - // Neue Knoten hinzufügen - mindmapData.nodes.forEach(node => { - cy.add({ - group: 'nodes', - data: { - id: node.id, - label: node.label, - category: node.category, - description: node.description, - hasChildren: node.hasChildren, - expanded: node.expanded, - neuronSize: node.neuronSize, - neuronActivity: node.neuronActivity, - color: node.color, - icon: node.icon, - fontColor: node.fontColor, - fontSize: node.fontSize - } + if (!cy) return; + + // Bestehende Elemente entfernen + cy.elements().remove(); + + // Neue Knoten hinzufügen + mindmapData.nodes.forEach(node => { + cy.add({ + group: 'nodes', + data: { + id: node.id, + label: node.name, + category: node.category, + description: node.description, + hasChildren: node.has_children, + expanded: false, + color: node.color_code || mindmapConfig.categories[node.category]?.color || '#60a5fa', + icon: node.icon || mindmapConfig.categories[node.category]?.icon || 'fa-solid fa-circle' + } + }); }); - }); - - // Neue Kanten hinzufügen - mindmapData.edges.forEach(edge => { - cy.add({ - group: 'edges', - data: { - source: edge.source, - target: edge.target, - strength: edge.strength - } + + // Neue Kanten hinzufügen + mindmapData.edges.forEach(edge => { + cy.add({ + group: 'edges', + data: { + source: edge.source, + target: edge.target, + strength: edge.strength || 0.5 + } + }); }); - }); - - // Neuronales Design initialisieren - initializeNeuralDesign(cy); - - // Layout anwenden - cy.layout({ - name: 'cose', - animate: true, - animationDuration: 1000, - nodeDimensionsIncludeLabels: true, - padding: 100, - spacingFactor: 1.8, - randomize: false, - fit: true, - componentSpacing: 100, - nodeRepulsion: 8000, - edgeElasticity: 100, - nestingFactor: 1.2, - gravity: 80 - }).run(); + + // Layout aktualisieren + cy.layout(mindmapStyles.layout.base).run(); } /** @@ -764,31 +747,69 @@ function startNeuralActivitySimulation(cy) { // Hilfe-Funktion zum Hinzufügen eines Flash-Hinweises function showFlash(message, type = 'info') { - const flashContainer = document.getElementById('flash-messages') || createFlashContainer(); - - const flashMsg = document.createElement('div'); - flashMsg.className = `flash-message flash-${type} mb-2 p-3 rounded`; - flashMsg.innerHTML = ` -
-
${message}
- -
- `; - - flashContainer.appendChild(flashMsg); - - // Nach 5 Sekunden automatisch ausblenden + const flashContainer = createFlashContainer(); + const flash = document.createElement('div'); + flash.className = `flash-message ${type}`; + flash.textContent = message; + flashContainer.appendChild(flash); + document.body.appendChild(flashContainer); + setTimeout(() => { - flashMsg.style.opacity = '0'; - setTimeout(() => flashMsg.remove(), 300); - }, 5000); - - // Close-Button - const closeBtn = flashMsg.querySelector('.close-flash'); - closeBtn.addEventListener('click', () => { - flashMsg.style.opacity = '0'; - setTimeout(() => flashMsg.remove(), 300); - }); + flash.classList.add('show'); + setTimeout(() => { + flash.classList.remove('show'); + setTimeout(() => { + flashContainer.remove(); + }, 300); + }, 3000); + }, 100); +} + +/** + * Zeigt eine Benachrichtigung in der UI an + * @param {string|object} message - Die anzuzeigende Nachricht oder ein Fehlerobjekt + * @param {string} type - Der Typ der Benachrichtigung ('info', 'success', 'warning', 'error') + * @param {number} duration - Die Anzeigedauer in Millisekunden (Standard: 3000) + */ +function showUINotification(message, type = 'info', duration = 3000) { + // Überprüfe und formatiere die Nachricht + let displayMessage; + if (typeof message === 'object') { + if (message.message) { + displayMessage = message.message; + } else if (message.error) { + displayMessage = message.error; + } else if (message.details) { + displayMessage = message.details; + } else { + console.error('Ungültiges Nachrichtenobjekt:', message); + displayMessage = 'Ein unbekannter Fehler ist aufgetreten'; + } + } else if (typeof message === 'string') { + displayMessage = message; + } else { + console.error('Ungültige Nachricht für UI-Benachrichtigung:', message); + displayMessage = 'Ein unbekannter Fehler ist aufgetreten'; + } + + // Validiere den Typ + const validTypes = ['info', 'success', 'warning', 'error']; + if (!validTypes.includes(type)) { + console.warn(`Ungültiger Benachrichtigungstyp: ${type}. Verwende 'info' als Fallback.`); + type = 'info'; + } + + // Validiere die Dauer + if (typeof duration !== 'number' || duration < 1000 || duration > 10000) { + console.warn(`Ungültige Dauer: ${duration}ms. Verwende 3000ms als Fallback.`); + duration = 3000; + } + + // Zeige die Benachrichtigung an + showFlash(displayMessage, type); + + // Logging für Debugging-Zwecke + console.log(`UI-Benachrichtigung [${type}]:`, displayMessage); } // Hilfsfunktion zum Erstellen eines Flash-Containers, falls keiner existiert @@ -798,158 +819,6 @@ function createFlashContainer() { container.className = 'fixed top-4 right-4 z-50 w-64'; document.body.appendChild(container); return container; -} - -// Funktion zum Laden der Mindmap-Daten aus der Datenbank -async function loadMindmapData(nodeId = null) { - try { - let url; - // Wir verwenden die generische Route für alle Anfragen - if (nodeId === null || nodeId === undefined || nodeId === 'root') { - url = '/api/mindmap/root'; - } else { - // Für spezielle Kategorien wie 'philosophy', 'science' etc. - // verwenden wir die generische Route mit der Kategorie-ID - url = `/api/mindmap/${nodeId}`; - } - - const response = await fetch(url); - if (!response.ok) { - const errorData = await response.json().catch(() => ({ error: 'Unbekannter Fehler' })); - throw new Error(errorData.error || `HTTP-Fehler ${response.status}: ${response.statusText}`); - } - - const data = await response.json(); - if (!data.success) { - throw new Error(data.error || 'Fehler beim Laden der Mindmap-Daten'); - } - - return data; - } catch (error) { - console.error('Fehler beim Laden der Mindmap-Daten:', error); - showFlash(error.message || 'Fehler beim Laden der Mindmap-Daten', 'error'); - return null; - } -} - -// Funktion zum Initialisieren der Mindmap -async function initializeMindmap() { - const mindmapData = await loadMindmapData(); - if (!mindmapData) return; - - const elements = [ - // Knoten - ...mindmapData.nodes.map(node => ({ - data: { - id: node.id, - label: node.name, - category: node.category, - description: node.description, - hasChildren: node.has_children, - expanded: false, - color: node.color_code, - fontColor: '#ffffff', - fontSize: node.is_center ? 20 : 16 - } - })), - // Kanten - ...mindmapData.edges.map(edge => ({ - data: { - source: edge.source_id, - target: edge.target_id, - strength: edge.strength || 0.5 - } - })) - ]; - - window.cy = cytoscape({ - container: document.getElementById('cy'), - elements: elements, - style: [ - { - selector: 'node', - style: { - 'background-color': 'data(color)', - 'label': 'data(label)', - 'color': 'data(fontColor)', - 'text-valign': 'center', - 'text-halign': 'center', - 'font-size': 'data(fontSize)', - 'width': function(ele) { - return ele.data('isCenter') ? 100 : 80; - }, - 'height': function(ele) { - return ele.data('isCenter') ? 100 : 80; - }, - 'border-width': 2, - 'border-color': '#ffffff', - 'border-opacity': 0.8, - 'shape': 'ellipse', - 'background-opacity': 0.9, - 'text-wrap': 'wrap', - 'text-max-width': 80, - 'transition-property': 'background-color, border-width', - 'transition-duration': '0.2s' - } - }, - { - selector: 'node[isCenter]', - style: { - 'background-color': '#f5f5f5', - 'color': '#222', - 'font-size': 20, - 'border-width': 3, - 'width': 100, - 'height': 100 - } - }, - { - selector: 'node:selected', - style: { - 'border-color': '#f59e42', - 'border-width': 3, - 'background-opacity': 1 - } - }, - { - selector: 'edge', - style: { - 'width': function(ele) { - return ele.data('strength') ? ele.data('strength') * 2 : 1; - }, - 'line-color': function(ele) { - const sourceColor = ele.source().data('color'); - return sourceColor || '#8a8aaa'; - }, - 'line-opacity': function(ele) { - return ele.data('strength') ? ele.data('strength') * 0.6 : 0.4; - }, - 'curve-style': 'bezier', - 'target-arrow-shape': 'none', - 'control-point-distances': [30, -30], - 'control-point-weights': [0.5, 0.5] - } - } - ], - layout: { - name: 'concentric', - fit: true, - padding: 50, - animate: true, - concentric: function(node) { - return node.data('isCenter') ? 2 : 1; - }, - levelWidth: function() { return 1; } - } - }); - - // Event-Listener für Knoten-Klicks - cy.on('tap', 'node', async function(evt) { - const node = evt.target; - if (node.data('hasChildren') && !node.data('expanded')) { - await loadSubthemes(node); - } - }); } // Funktion zum Laden der Subthemen @@ -1009,24 +878,7 @@ async function loadSubthemes(node) { })) ], style: cy.style(), - layout: { - name: 'cose', - animate: true, - animationDuration: 500, - refresh: 20, - fit: true, - padding: 30, - nodeRepulsion: 4500, - idealEdgeLength: 50, - edgeElasticity: 0.45, - randomize: true, - componentSpacing: 100, - nodeOverlap: 20, - gravity: 0.25, - initialTemp: 1000, - coolingFactor: 0.95, - minTemp: 1 - } + layout: mindmapStyles.layout.base }); // Event-Listener für die neue Mindmap @@ -1126,6 +978,99 @@ style.textContent = ` color: #fff; text-shadow: 0 2px 8px rgba(0,0,0,0.25); } + + /* Verbesserte Flash-Benachrichtigungen */ + #flash-messages { + position: fixed; + top: 1rem; + right: 1rem; + z-index: 9999; + display: flex; + flex-direction: column; + gap: 0.5rem; + max-width: 24rem; + } + + .flash-message { + padding: 1rem 1.25rem; + border-radius: 0.5rem; + background: rgba(17, 24, 39, 0.95); + color: #fff; + font-size: 0.875rem; + line-height: 1.25rem; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), + 0 2px 4px -1px rgba(0, 0, 0, 0.06); + transform: translateX(120%); + opacity: 0; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + backdrop-filter: blur(8px); + border: 1px solid rgba(255, 255, 255, 0.1); + } + + .flash-message.show { + transform: translateX(0); + opacity: 1; + } + + .flash-message.info { + border-left: 4px solid #3b82f6; + background: linear-gradient(to right, rgba(59, 130, 246, 0.1), rgba(17, 24, 39, 0.95)); + } + + .flash-message.success { + border-left: 4px solid #10b981; + background: linear-gradient(to right, rgba(16, 185, 129, 0.1), rgba(17, 24, 39, 0.95)); + } + + .flash-message.warning { + border-left: 4px solid #f59e0b; + background: linear-gradient(to right, rgba(245, 158, 11, 0.1), rgba(17, 24, 39, 0.95)); + } + + .flash-message.error { + border-left: 4px solid #ef4444; + background: linear-gradient(to right, rgba(239, 68, 68, 0.1), rgba(17, 24, 39, 0.95)); + } + + .flash-message::before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: linear-gradient(45deg, + rgba(255, 255, 255, 0.1) 0%, + rgba(255, 255, 255, 0) 100%); + pointer-events: none; + } + + @keyframes pulse { + 0% { transform: scale(1); } + 50% { transform: scale(1.02); } + 100% { transform: scale(1); } + } + + .flash-message.show { + animation: pulse 0.3s ease-in-out; + } + + /* Neuronale Effekte für Benachrichtigungen */ + .flash-message.info:hover { + box-shadow: 0 0 15px rgba(59, 130, 246, 0.3); + } + + .flash-message.success:hover { + box-shadow: 0 0 15px rgba(16, 185, 129, 0.3); + } + + .flash-message.warning:hover { + box-shadow: 0 0 15px rgba(245, 158, 11, 0.3); + } + + .flash-message.error:hover { + box-shadow: 0 0 15px rgba(239, 68, 68, 0.3); + } `; document.head.appendChild(style);