From 482df12f91ca0425e90b9e164b895720f9d34162 Mon Sep 17 00:00:00 2001 From: hailin Date: Thu, 5 Mar 2026 09:42:14 -0800 Subject: [PATCH] =?UTF-8?q?fix(telemetry):=20=E5=B0=86=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=90=88=E5=B9=B6=E5=88=B0=E6=AF=8F=E4=B8=AA?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E7=9A=84=20properties=20=E4=B8=AD=E4=B8=8A?= =?UTF-8?q?=E6=8A=A5=E6=9C=8D=E5=8A=A1=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 设备信息(品牌/型号/OS/版本/语言)此前只存储在本地,对服务端分析毫无价值。 现在在 logEvent() 中将 deviceProps 合并到每个事件的 properties 字段, 使服务端 analytics 表能按设备维度进行统计分析。同时修复 _deviceContext 为 null 时的空指针异常(deviceContextId 使用 ?? '' 安全降级)。 适用于 mining-app 和 mobile-app 两端。 Co-Authored-By: Claude Sonnet 4.6 --- .../lib/core/telemetry/telemetry_service.dart | 12 +++++++++++- .../lib/core/telemetry/telemetry_service.dart | 14 ++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/frontend/mining-app/lib/core/telemetry/telemetry_service.dart b/frontend/mining-app/lib/core/telemetry/telemetry_service.dart index d9b924bf..96e739f3 100644 --- a/frontend/mining-app/lib/core/telemetry/telemetry_service.dart +++ b/frontend/mining-app/lib/core/telemetry/telemetry_service.dart @@ -179,12 +179,22 @@ class TelemetryService { } } + final deviceProps = _deviceContext != null + ? { + 'device_brand': _deviceContext!.brand, + 'device_model': _deviceContext!.model, + 'device_os': _deviceContext!.osVersion, + 'app_version': _deviceContext!.appVersion, + 'locale': _deviceContext!.locale, + } + : {}; + final event = TelemetryEvent( eventId: const Uuid().v4(), type: type, level: level, name: eventName, - properties: properties, + properties: {...deviceProps, ...?properties}, timestamp: DateTime.now(), userId: _userId, sessionId: _sessionManager.currentSessionId, diff --git a/frontend/mobile-app/lib/core/telemetry/telemetry_service.dart b/frontend/mobile-app/lib/core/telemetry/telemetry_service.dart index 4da6a272..194ea3e3 100644 --- a/frontend/mobile-app/lib/core/telemetry/telemetry_service.dart +++ b/frontend/mobile-app/lib/core/telemetry/telemetry_service.dart @@ -183,17 +183,27 @@ class TelemetryService { } } + final deviceProps = _deviceContext != null + ? { + 'device_brand': _deviceContext!.brand, + 'device_model': _deviceContext!.model, + 'device_os': _deviceContext!.osVersion, + 'app_version': _deviceContext!.appVersion, + 'locale': _deviceContext!.locale, + } + : {}; + final event = TelemetryEvent( eventId: const Uuid().v4(), type: type, level: level, name: eventName, - properties: properties, + properties: {...deviceProps, ...?properties}, timestamp: DateTime.now(), userId: _userId, sessionId: _sessionManager.currentSessionId, installId: _installId, - deviceContextId: _deviceContext!.androidId, + deviceContextId: _deviceContext?.androidId ?? '', ); _storage.enqueueEvent(event);