import React from 'react'; import { BarChart3, TrendingUp, ArrowUpRight, ArrowDownRight, Globe, Monitor, Smartphone, Calendar } from 'lucide-react'; import { supabaseAdmin } from '@/lib/supabase'; import { format, subDays } from 'date-fns'; import { tr } from 'date-fns/locale'; async function getAnalyticsData() { const { data: transactions, error } = await supabaseAdmin .from('transactions') .select('*') .order('created_at', { ascending: true }); if (error || !transactions) return null; const successfulTransactions = transactions.filter(t => t.status === 'succeeded'); const totalRevenue = successfulTransactions.reduce((acc, t) => acc + Number(t.amount), 0); const avgOrderValue = successfulTransactions.length > 0 ? totalRevenue / successfulTransactions.length : 0; // Monthly data for chart (grouped by month or last 12 periods) // To keep it simple and meaningful, let's show last 12 days for "Gelir Trendi" const last12Periods = Array.from({ length: 12 }, (_, i) => { const d = subDays(new Date(), 11 - i); return { date: d.toISOString().split('T')[0], label: format(d, 'd MMM', { locale: tr }), amount: 0 }; }); successfulTransactions.forEach(t => { const dateStr = new Date(t.created_at).toISOString().split('T')[0]; const periodMatch = last12Periods.find(p => p.date === dateStr); if (periodMatch) { periodMatch.amount += Number(t.amount); } }); return { totalRevenue, avgOrderValue, chartData: last12Periods, totalCount: transactions.length, successCount: successfulTransactions.length, }; } export default async function AnalyticsPage() { const data = await getAnalyticsData(); if (!data) return
Sistem performans verileri
{item.label}