From f41ae0ffd7380ea7180bfdefa5aa67238cc1a673 Mon Sep 17 00:00:00 2001 From: Carlos Narro Date: Sat, 4 Jul 2026 08:27:07 +0200 Subject: [PATCH] =?UTF-8?q?telemetr=C3=ADa:=20guardar=20la=20versi=C3=B3n?= =?UTF-8?q?=20de=20la=20app=20(fragmentaci=C3=B3n)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit add_telemetry cuenta 'ver:' por envío (usa app_version, que la app ya mandaba pero se ignoraba). El summary lo devuelve como una fila más; la app lo agrupa aparte como distribución de versiones. Test actualizado. Co-Authored-By: Claude Opus 4.8 --- main.py | 3 +++ test_telemetry.py | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/main.py b/main.py index 77ee02a..fda39aa 100644 --- a/main.py +++ b/main.py @@ -308,6 +308,9 @@ def add_telemetry(body: TelemetryIn, db: Session = Depends(get_db)): # Un envío = una instalación activa ese día que cede estadística. add("__submissions__", active=1) + # Versión de la app (para ver la fragmentación): clave 'ver:'. + version = (body.app_version or "unknown").strip()[:16] + add(f"ver:{version}", active=1) for m in (body.active_modules or [])[:40]: add(m, active=1) for m, c in (body.opens_by_module or {}).items(): diff --git a/test_telemetry.py b/test_telemetry.py index 1c08729..9769a05 100644 --- a/test_telemetry.py +++ b/test_telemetry.py @@ -46,6 +46,10 @@ def test_telemetria_agrega_y_resume(): # Una subsección de Aprende con tiempo, sin ser módulo activo. assert by_module["aprende:sueno"]["seconds"] == 45 assert by_module["aprende:sueno"]["opens"] == 0 + # Versión de la app (fragmentación): el primer envío fue 2.27.0, el segundo + # sin versión → 'unknown'. + assert by_module["ver:2.27.0"]["activeInstallDays"] == 1 + assert by_module["ver:unknown"]["activeInstallDays"] == 1 # fasting: activo en 2 envíos, 0 aperturas. assert by_module["fasting"]["activeInstallDays"] == 2 assert by_module["fasting"]["opens"] == 0