import { NextResponse } from "next/server"; import { getDatabase } from "@/lib/db/mongodb"; export async function GET() { try { const db = await getDatabase(); // Récupérer toutes les transactions const transactions = await db.collection("transactions").find({}).toArray(); // Calculer les tokens par jour (7 derniers jours) const dailyStats = []; const today = new Date(); const dayNames = ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"]; for (let i = 6; i >= 0; i--) { const date = new Date(today); date.setDate(date.getDate() - i); date.setHours(0, 0, 0, 0); const nextDate = new Date(date); nextDate.setDate(nextDate.getDate() + 1); const dayTransactions = transactions.filter(transaction => { const transactionDate = new Date(transaction.createdAt); return transactionDate >= date && transactionDate < nextDate; }); const totalTokens = dayTransactions.reduce((sum, transaction) => { return sum + Math.abs(Number(transaction.rawAmount) || 0); }, 0); dailyStats.push({ name: dayNames[date.getDay()], value: totalTokens }); } // Calculer la répartition par modèle (vraies données) const modelStats = new Map(); transactions.forEach(transaction => { const model = transaction.model || "Inconnu"; const tokens = Math.abs(Number(transaction.rawAmount) || 0); modelStats.set(model, (modelStats.get(model) || 0) + tokens); }); // Convertir en array et trier par usage const modelData = Array.from(modelStats.entries()) .map(([name, value]) => ({ name, value })) .sort((a, b) => b.value - a.value); return NextResponse.json({ dailyTokens: dailyStats, modelDistribution: modelData }); } catch (error) { console.error("Erreur lors du calcul des statistiques:", error); return NextResponse.json({ error: "Erreur serveur" }, { status: 500 }); } }