From 5e6ab25199c21256301b5f51f8dc3efe12b8e316 Mon Sep 17 00:00:00 2001 From: hailin Date: Thu, 5 Mar 2026 20:07:11 -0800 Subject: [PATCH] =?UTF-8?q?fix(mining-app):=20=E5=89=8D=E5=8F=B0=E5=9B=9E?= =?UTF-8?q?=E6=9D=A5=E6=97=B6=E4=B9=9F=E4=B8=8A=E4=BC=A0=E9=81=A5=E6=B5=8B?= =?UTF-8?q?=E9=98=9F=E5=88=97=EF=BC=88=E5=A4=A7=E5=8E=82=E6=A0=87=E5=87=86?= =?UTF-8?q?=E5=81=9A=E6=B3=95=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 进入后台(paused)时立即 flush:session_end + 设备信息不丢失 - 回到前台(resumed)时立即 flush:上传被强杀遗留事件 + 新 session_start Co-Authored-By: Claude Sonnet 4.6 --- .../lib/core/telemetry/session/session_manager.dart | 4 ++++ .../mining-app/lib/core/telemetry/telemetry_service.dart | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/frontend/mining-app/lib/core/telemetry/session/session_manager.dart b/frontend/mining-app/lib/core/telemetry/session/session_manager.dart index a83ad1d9..03e69115 100644 --- a/frontend/mining-app/lib/core/telemetry/session/session_manager.dart +++ b/frontend/mining-app/lib/core/telemetry/session/session_manager.dart @@ -70,6 +70,8 @@ class SessionManager with WidgetsBindingObserver { _state = SessionState.foreground; _startNewSession(); + // 上传上次被强杀遗留的事件 + 本次 session_start(含设备信息) + _telemetryService?.flushOnBackground(); } void _handleBackground() { @@ -77,6 +79,8 @@ class SessionManager with WidgetsBindingObserver { _state = SessionState.background; _endCurrentSession(); + // session_end 写入队列后立即上传,不等待阈值 + _telemetryService?.flushOnBackground(); } void _startNewSession() { diff --git a/frontend/mining-app/lib/core/telemetry/telemetry_service.dart b/frontend/mining-app/lib/core/telemetry/telemetry_service.dart index 96e739f3..a9f61f55 100644 --- a/frontend/mining-app/lib/core/telemetry/telemetry_service.dart +++ b/frontend/mining-app/lib/core/telemetry/telemetry_service.dart @@ -290,6 +290,11 @@ class TelemetryService { debugPrint('[Telemetry] User ID cleared'); } + Future flushOnBackground() async { + await _uploader.uploadBatch(batchSize: 50); + debugPrint('[Telemetry] Flushed on background'); + } + Future pauseForLogout() async { _uploader.stopPeriodicUpload(); await _storage.clearEventQueue();