fix(telemetry): 将设备信息合并到每个事件的 properties 中上报服务端

设备信息(品牌/型号/OS/版本/语言)此前只存储在本地,对服务端分析毫无价值。
现在在 logEvent() 中将 deviceProps 合并到每个事件的 properties 字段,
使服务端 analytics 表能按设备维度进行统计分析。同时修复 _deviceContext 为
null 时的空指针异常(deviceContextId 使用 ?? '' 安全降级)。
适用于 mining-app 和 mobile-app 两端。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
hailin 2026-03-05 09:42:14 -08:00
parent 033d1cde42
commit 482df12f91
2 changed files with 23 additions and 3 deletions

View File

@ -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,
}
: <String, dynamic>{};
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,

View File

@ -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,
}
: <String, dynamic>{};
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);