Refine users table and reconnect handling

This commit is contained in:
2026-04-02 03:14:49 +03:00
parent 2602fab6a7
commit 49b41edcb0
10 changed files with 308 additions and 73 deletions

View File

@@ -14,6 +14,7 @@ export interface ObservedTraffic {
activeUsers: number;
daily: DailyTrafficBucket[];
userBytesByName: Map<string, number>;
lastSeenByName: Map<string, string | null>;
recentUsers: Set<string>;
}
@@ -34,6 +35,7 @@ export async function readObservedTraffic(
const history = buildHistoryDays(historyStart, HISTORY_DAYS);
const dailyTotals = new Map(history.map((entry) => [entry.key, 0]));
const userBytesByName = new Map(users.map((user) => [user.username, 0]));
const lastSeenByName = new Map<string, string | null>(users.map((user) => [user.username, null]));
const recentUsers = new Set<string>();
let liveConnections = 0;
@@ -47,6 +49,13 @@ export async function readObservedTraffic(
userBytesByName.set(record.username, (userBytesByName.get(record.username) ?? 0) + record.bytes);
}
if (lastSeenByName.has(record.username)) {
const currentLastSeen = lastSeenByName.get(record.username);
if (!currentLastSeen || record.timestamp.toISOString() > currentLastSeen) {
lastSeenByName.set(record.username, record.timestamp.toISOString());
}
}
const ageMs = now.getTime() - record.timestamp.getTime();
if (ageMs >= 0 && ageMs <= RECENT_WINDOW_MS) {
recentUsers.add(record.username);
@@ -76,6 +85,7 @@ export async function readObservedTraffic(
activeUsers,
daily,
userBytesByName,
lastSeenByName,
recentUsers,
};
}