fixes to the avg duration computation

This commit is contained in:
Doar Mihai
2026-03-28 13:40:20 +02:00
parent edb9cec503
commit b08b1d8620
+7 -2
View File
@@ -110,9 +110,14 @@ class ProcessTrackingPayload implements ShouldQueue
]);
}
// Calculate duration, ensuring it's never negative (handle out-of-order events)
// Use max() to ensure we use the latest timestamp for ended_at
$endedAt = $session->ended_at ? max($now, $session->ended_at) : $now;
$duration = max(0, (int) $endedAt->diffInSeconds($session->started_at, false));
$session->update([
'ended_at' => $now,
'duration' => $now->diffInSeconds($session->started_at),
'ended_at' => $endedAt,
'duration' => $duration,
'exit_page' => $this->payload['path'] ?? $this->payload['url'] ?? $session->exit_page,
'pages_count' => $session->pageViews()->count(),
'is_bounce' => $session->pageViews()->count() <= 1,