From 8b13748f1315c8ab2486c9aa0dd62abc18619e3b Mon Sep 17 00:00:00 2001 From: R0m1k3 Date: Thu, 12 Feb 2026 10:59:17 +0100 Subject: [PATCH] fix(analytics): reduce sync to 2x/day, remove frontend polling for cleaner charts --- client/src/components/analytics/AnalyticsDashboard.tsx | 5 ++--- server/cron.ts | 6 +++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/client/src/components/analytics/AnalyticsDashboard.tsx b/client/src/components/analytics/AnalyticsDashboard.tsx index e718a4f..002caac 100644 --- a/client/src/components/analytics/AnalyticsDashboard.tsx +++ b/client/src/components/analytics/AnalyticsDashboard.tsx @@ -10,8 +10,8 @@ import { apiRequest } from '@/lib/queryClient'; import { useToast } from '@/hooks/use-toast'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; -/** Maximum staleness before triggering an auto-refresh (6 hours in ms). */ -const STALE_THRESHOLD_MS = 6 * 60 * 60 * 1000; +/** Maximum staleness before triggering an auto-refresh (12 hours in ms). */ +const STALE_THRESHOLD_MS = 12 * 60 * 60 * 1000; export function AnalyticsDashboard() { const [selectedPageId, setSelectedPageId] = useState(null); @@ -40,7 +40,6 @@ export function AnalyticsDashboard() { const { data: history = [], isLoading: isLoadingHistory } = useQuery({ queryKey: [`/api/analytics/pages/${selectedPageId}/history`], enabled: !!selectedPageId, - refetchInterval: 30_000, // Poll every 30 seconds }); // Refresh Mutation diff --git a/server/cron.ts b/server/cron.ts index 27e0f08..3e9ae47 100644 --- a/server/cron.ts +++ b/server/cron.ts @@ -10,8 +10,8 @@ export function startTokenCron() { }); console.log('[Cron] Token refresh job scheduled (0 0 * * *).'); - // Run every 6 hours — Analytics sync for all pages - cron.schedule('0 */6 * * *', async () => { + // Run twice daily (08:00 and 20:00) — Analytics sync for all pages + cron.schedule('0 8,20 * * *', async () => { console.log('[Cron] Running analytics sync for all pages...'); try { await AnalyticsService.syncAllPages(); @@ -19,5 +19,5 @@ export function startTokenCron() { console.error('[Cron] Analytics sync failed:', error); } }); - console.log('[Cron] Analytics sync job scheduled (0 */6 * * *).'); + console.log('[Cron] Analytics sync job scheduled (0 8,20 * * *).'); }