feat(gui): câblage upload diagnostics en fin de run (E3)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-30 10:44:02 +02:00
parent 8eb8cf9999
commit 8f9107a27f
3 changed files with 76 additions and 0 deletions

View File

@@ -193,6 +193,7 @@ class AnonymisationApp(ctk.CTk):
on_theme_change=self.set_theme,
current_theme=self._theme_name,
usage_reporter=self._report_usage,
diag_reporter=self._report_diagnostics,
)
if key == "cfg":
return ConfigTab(self._content, palette=p, state=self._config, config_path=self._user_config_path)
@@ -243,6 +244,36 @@ class AnonymisationApp(ctk.CTk):
except Exception:
pass
def _report_diagnostics(self, summary) -> None:
"""Envoie les diagnostics en fin de run (non bloquant, best-effort).
N'envoie rien si aucune licence locale valide. Ne lève jamais.
"""
try:
from gui_v6 import __version__ as gui_version
from gui_v6 import diagnostics
from gui_v6.logging_setup import log_file_path
from gui_v6.machine_id import default_machine_id
session = self._usage_session()
if session is None:
return
status = self._safe_local_status()
base_url = getattr(self._license_client, "_base_url", "") or resolve_portal_url()
spool = log_file_path().parent / "diagnostics_spool.jsonl"
diagnostics.report_run_diagnostics(
summary,
base_url=base_url,
license_ref=getattr(status, "license_ref", None),
machine_id=default_machine_id(),
session=session,
app_name="gui_v6",
app_version=gui_version,
spool_path=spool,
)
except Exception:
pass
def _show(self, key: str) -> None:
self._active = key
self._refresh_tabbar()