Fix: Worker-Pool-Metriken cachen für Anzeige nach Shutdown

Problem:
- Worker-Pools werden nach Transformation beendet (Lazy Loading)
- Metriken waren danach nicht mehr verfügbar
- Metriken-Dialog zeigte "Nicht aktiviert"

Lösung:
- Metriken werden vor Pool-Shutdown mit deepcopy() gespeichert
- MainWindow speichert last_saxon_metrics und last_fop_metrics
- WorkerPoolMetricsDialog zeigt gecachte Metriken an
- Neue Methode: _update_metrics_tab_from_metrics()

Verhalten:
- Metriken bleiben bis zur nächsten Transformation verfügbar
- Dialog zeigt "Letzte Transformation" statt "Aktiviert"
- Ohne Metriken: Hinweis "bitte erst eine Transformation durchführen"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-07 19:00:35 +01:00
parent f59e51c081
commit 1558c376d1
2 changed files with 34 additions and 16 deletions
+12
View File
@@ -546,6 +546,10 @@ class MainWindow(QMainWindow):
# Progressbar für Transformationen in Statusbar
self.transformation_progress_bar = None
# Gespeicherte Worker-Pool-Metriken (werden vor Shutdown gecacht)
self.last_saxon_metrics = None
self.last_fop_metrics = None
# Mapping: xml_file_path_str → QTreeWidgetItem (für Progress Bar und Icon Updates)
self.xml_item_map = {}
@@ -4371,11 +4375,19 @@ class MainWindow(QMainWindow):
# Erfasse RAM-Verbrauch nach Transformation
import transform
from copy import deepcopy
if transform._saxon_worker_pool:
transform._saxon_worker_pool.capture_ram_after_transform()
# Speichere Metriken vor Shutdown (für späteren Zugriff im Dialog)
self.last_saxon_metrics = deepcopy(transform._saxon_worker_pool.metrics)
logger.debug("Saxon Worker-Pool Metriken gespeichert")
if transform._fop_worker_pool:
transform._fop_worker_pool.capture_ram_after_transform()
# Speichere Metriken vor Shutdown (für späteren Zugriff im Dialog)
self.last_fop_metrics = deepcopy(transform._fop_worker_pool.metrics)
logger.debug("FOP Worker-Pool Metriken gespeichert")
# Beende Worker-Pools (RAM-Optimierung - Pools werden bei nächster Transformation neu gestartet)
self._shutdown_saxon_worker_pool()