- events 上传地址接错:AnalyticsService 误用 auth(8081),实际端点在 user 服务(8082),新增 patbondUserApiBaseUrl 并接线 - 冲刷时机:新增 flushNow(),SessionTracker 首次离开前台触发, 修复低活跃用户凑不满 20 条事件永不上传 - 毒丸批次:4xx 永久性拒绝不再重回队列无限重试,丢弃并打日志 - Web/桌面 Platform API 降级(kIsWeb + _platformName) - 注册手机号 UI 固定 +86 前缀、提交拼 E.164;AppTextField 支持 prefixText 51 测试全绿、analyze 0 问题;Linux 桌面实测注册成功, curl 实测后端 /api/v1/events 校验行为符合契约。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -14,6 +14,7 @@ import 'package:uuid/uuid.dart';
|
||||
class SessionTracker with WidgetsBindingObserver {
|
||||
SessionTracker({
|
||||
this.timeout = const Duration(minutes: 30),
|
||||
this.onLeaveForeground,
|
||||
DateTime Function()? now,
|
||||
}) : _now = now ?? DateTime.now,
|
||||
_sessionId = const Uuid().v7();
|
||||
@@ -21,6 +22,9 @@ class SessionTracker with WidgetsBindingObserver {
|
||||
/// 后台超时阈值;构造参数化便于测试注入。
|
||||
final Duration timeout;
|
||||
|
||||
/// 首次离开前台时回调(app 装配层用于触发埋点队列冲刷)。
|
||||
final VoidCallback? onLeaveForeground;
|
||||
|
||||
/// 时钟注入口,测试免真实等待。
|
||||
final DateTime Function() _now;
|
||||
|
||||
@@ -42,6 +46,7 @@ class SessionTracker with WidgetsBindingObserver {
|
||||
} else if (_lastState == AppLifecycleState.resumed) {
|
||||
// 首次离开前台才记时;inactive/hidden/paused 级联不覆盖。
|
||||
_leftForegroundAt = _now();
|
||||
onLeaveForeground?.call();
|
||||
}
|
||||
_lastState = state;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user