diff --git a/app.py b/app.py index 83b505d..49db032 100644 --- a/app.py +++ b/app.py @@ -2476,211 +2476,343 @@ 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. """ 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 == '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" - } - ] + # Hauptebene der Mindmap - finde den "Wissen"-Knoten und seine Verbindungen + wissen_node = MindMapNode.query.filter_by(name="Wissen").first() - 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} - ] + if not wissen_node: + app.logger.warning("'Wissen'-Knoten nicht in der Datenbank gefunden, Fallback zu Hardcoded-Daten.") + return jsonify(fallback_data) - 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" - } - ] + # Zentrum der Mindmap ist der "Wissen"-Knoten + nodes = [{ + "id": str(wissen_node.id), + "name": "Wissenskarte", # Frontend-Name für Root-Knoten + "description": wissen_node.description or "Zentrale Wissenskarte mit allen Hauptthemen", + "is_center": True, + "color_code": "#f5f5f5", + "has_children": True + }] - 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 = [] + # Hauptkategorien als Knoten + main_categories = Category.query.filter_by(parent_id=None).all() + category_nodes = [] edges = [] + + for category in main_categories: + category_node = { + "id": f"cat_{category.id}", + "name": category.name, + "description": category.description or f"Kategorie: {category.name}", + "category": category.name, + "has_children": True, + "color_code": category.color_code or "#9F7AEA" + } + category_nodes.append(category_node) + + # Verbindung vom Wissen-Knoten zur Kategorie + edges.append({ + "source_id": str(wissen_node.id), + "target_id": f"cat_{category.id}", + "strength": 0.9 + }) + + nodes.extend(category_nodes) + + response = { + "nodes": nodes, + "edges": edges + } + + app.logger.info(f"Mindmap-Daten für 'root' erfolgreich aus Datenbank geladen. {len(nodes)} Knoten gefunden.") + return jsonify(response) + + elif node_id.startswith('cat_'): + # Unterkategorien einer Hauptkategorie anzeigen + category_id = node_id.replace('cat_', '') + try: + category_id = int(category_id) + category = Category.query.get(category_id) + + if not category: + app.logger.warning(f"Kategorie mit ID {category_id} nicht gefunden.") + return jsonify(fallback_data) + + nodes = [] + edges = [] + + # Unterkategorien dieser Kategorie + subcategories = Category.query.filter_by(parent_id=category_id).all() + + for subcat in subcategories: + subcat_node = { + "id": f"subcat_{subcat.id}", + "name": subcat.name, + "description": subcat.description or f"Unterkategorie: {subcat.name}", + "category": category.name, + "has_children": True, + "color_code": subcat.color_code or category.color_code + } + nodes.append(subcat_node) + + # Verbindung von der Hauptkategorie zur Unterkategorie + edges.append({ + "source_id": node_id, + "target_id": f"subcat_{subcat.id}", + "strength": 0.8 + }) + + # Wenn es keine Unterkategorien gibt, zeige verwandte Knoten + if not subcategories: + # Im Fallback-Modus zurückfallen + app.logger.info(f"Keine Unterkategorien für Kategorie {category.name} gefunden, verwende Fallback-Daten.") + return jsonify(fallback_data) + + response = { + "nodes": nodes, + "edges": edges + } + + return jsonify(response) + + except (ValueError, TypeError): + app.logger.error(f"Ungültige Kategorie-ID: {category_id}") + return jsonify(fallback_data) - # Antwort zusammenstellen - response = { - "nodes": nodes, - "edges": edges - } + 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) + + 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) - return jsonify(response) + # Wenn wir hier ankommen, gibt es keine spezifische Verarbeitung für diese node_id + return jsonify(fallback_data) except Exception as e: app.logger.error(f"Fehler beim Abrufen der Mindmap-Daten: {str(e)}") - return jsonify({"error": "Fehler beim Abrufen der Mindmap-Daten"}), 500 \ No newline at end of file + 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 + } \ No newline at end of file diff --git a/check_db.py b/check_db.py new file mode 100644 index 0000000..30edc08 --- /dev/null +++ b/check_db.py @@ -0,0 +1,38 @@ +import sqlite3 + +def check_mindmap_nodes(): + try: + conn = sqlite3.connect('database/systades.db') + cursor = conn.cursor() + + # Check if the table exists + cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='mind_map_node';") + table_exists = cursor.fetchone() + + if not table_exists: + print("Die Tabelle 'mind_map_node' existiert nicht!") + return + + # Check for the "Wissen" node + cursor.execute("SELECT * FROM mind_map_node WHERE name = 'Wissen';") + wissen_node = cursor.fetchone() + + if wissen_node: + print(f"'Wissen'-Knoten gefunden: {wissen_node}") + else: + print("'Wissen'-Knoten NICHT gefunden!") + + # Get all nodes + cursor.execute("SELECT id, name FROM mind_map_node LIMIT 10;") + nodes = cursor.fetchall() + + print(f"\nVorhandene Knoten (max. 10):") + for node in nodes: + print(f" - {node}") + + conn.close() + except Exception as e: + print(f"Fehler: {e}") + +if __name__ == "__main__": + check_mindmap_nodes() \ No newline at end of file diff --git a/logs/app.log b/logs/app.log index 3100b69..b344aef 100644 --- a/logs/app.log +++ b/logs/app.log @@ -817,3 +817,185 @@ Traceback (most recent call last): 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\TTOMCZA.EMEA\Dev\website\app.py:92] +2025-05-10 23:58:51,812 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\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\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\TTOMCZA.EMEA\Dev\website\app.py:92] +2025-05-10 23:58:51,812 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\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\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\TTOMCZA.EMEA\Dev\website\app.py:92] +2025-05-11 00:00:37,845 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 +User: 1 (admin) +Traceback (most recent call last): + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\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\TTOMCZA.EMEA\Dev\website\app.py:92] +2025-05-11 00:00:37,845 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 +User: 1 (admin) +Traceback (most recent call last): + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\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\TTOMCZA.EMEA\Dev\website\app.py:92] +2025-05-11 00:00:39,147 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 +User: 1 (admin) +Traceback (most recent call last): + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\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\TTOMCZA.EMEA\Dev\website\app.py:92] +2025-05-11 00:00:39,147 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 +User: 1 (admin) +Traceback (most recent call last): + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\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\TTOMCZA.EMEA\Dev\website\app.py:92] +2025-05-11 00:01:46,130 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\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\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\TTOMCZA.EMEA\Dev\website\app.py:92] +2025-05-11 00:01:46,130 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\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\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\TTOMCZA.EMEA\Dev\website\app.py:92] +2025-05-11 00:01:46,159 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: /favicon.ico, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\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\TTOMCZA.EMEA\Dev\website\app.py:92] +2025-05-11 00:01:46,159 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: /favicon.ico, Method: GET, IP: 127.0.0.1 +Nicht angemeldet +Traceback (most recent call last): + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1823, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1788, in dispatch_request + self.raise_routing_exception(req) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1770, in raise_routing_exception + raise request.routing_exception # type: ignore + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\ctx.py", line 351, in match_request + result = self.url_adapter.match(return_rule=True) # type: ignore + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\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\TTOMCZA.EMEA\Dev\website\app.py:92] +2025-05-11 00:02:53,829 INFO: Anwendung gestartet [in C:\Users\TTOMCZA.EMEA\Dev\website\app.py:76] +2025-05-11 00:02:53,875 INFO: Anwendung gestartet [in C:\Users\TTOMCZA.EMEA\Dev\website\app.py:76]