chore: Änderungen commited

This commit is contained in:
2025-05-14 11:58:31 +02:00
parent fd293e53e1
commit 2e2f35ccc1
4 changed files with 386 additions and 142 deletions

285
app.py
View File

@@ -2062,6 +2062,149 @@ def dummy_network_bg():
"""Leere Antwort für die nicht mehr verwendeten Netzwerk-Hintergrundbilder."""
return '', 200
# API-Endpunkt für die Root-Mindmap
@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()
# Überprüfen, ob Kategorien vorhanden sind
if not categories:
print("Keine Hauptkategorien gefunden")
return jsonify({
'success': False,
'error': 'Keine Hauptkategorien gefunden',
'details': 'Bitte führen Sie das Datenbank-Initialisierungsskript aus'
}), 404
print(f"Gefundene Hauptkategorien: {[cat.name for cat in categories]}")
# 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.count() > 0),
'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)}")
traceback.print_exc()
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_data():
return get_category_mindmap_data('Technologie')
@app.route('/api/mindmap/arts')
def get_arts_mindmap_data():
return get_category_mindmap_data('Künste')
# Generische Route für spezifische Knoten
@app.route('/api/mindmap/<node_id>')
def get_mindmap_data(node_id):
"""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': 'Ungültige Knoten-ID',
'details': 'Diese ID ist für spezielle Routen reserviert'
}), 400
# Knoten mit Unterknoten in einer Abfrage laden
node = MindMapNode.query.options(
joinedload(MindMapNode.children)
).get_or_404(node_id)
# 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:
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
# Route zum expliziten Neu-Laden der Umgebungsvariablen
@app.route('/admin/reload-env', methods=['POST'])
@admin_required
@@ -2394,145 +2537,3 @@ def get_category_mindmap_data(category_name):
'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()
# Überprüfen, ob Kategorien vorhanden sind
if not categories:
print("Keine Hauptkategorien gefunden")
return jsonify({
'success': False,
'error': 'Keine Hauptkategorien gefunden',
'details': 'Bitte führen Sie das Datenbank-Initialisierungsskript aus'
}), 404
print(f"Gefundene Hauptkategorien: {[cat.name for cat in categories]}")
# 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.count() > 0),
'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)}")
traceback.print_exc()
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_data():
return get_category_mindmap_data('Technologie')
@app.route('/api/mindmap/arts')
def get_arts_mindmap_data():
return get_category_mindmap_data('Künste')
# Generische Route für spezifische Knoten
@app.route('/api/mindmap/<node_id>')
def get_mindmap_data(node_id):
"""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': 'Ungültige Knoten-ID',
'details': 'Diese ID ist für spezielle Routen reserviert'
}), 400
# Knoten mit Unterknoten in einer Abfrage laden
node = MindMapNode.query.options(
joinedload(MindMapNode.children)
).get_or_404(node_id)
# 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:
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