new
This commit is contained in:
@@ -13,21 +13,21 @@ export async function GET() {
|
||||
db.collection("balances").find({}).toArray(),
|
||||
]);
|
||||
|
||||
// Calculer les utilisateurs actifs (dernière semaine)
|
||||
const oneWeekAgo = new Date();
|
||||
oneWeekAgo.setDate(oneWeekAgo.getDate() - 7);
|
||||
// Calculer les utilisateurs actifs (30 derniers jours)
|
||||
const thirtyDaysAgo = new Date();
|
||||
thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
|
||||
const activeUsers = users.filter((user) => {
|
||||
const lastActivity = new Date(user.updatedAt || user.createdAt);
|
||||
return lastActivity >= oneWeekAgo;
|
||||
return lastActivity >= thirtyDaysAgo;
|
||||
}).length;
|
||||
|
||||
// Calculer les administrateurs
|
||||
const totalAdmins = users.filter(user => user.role === 'ADMIN').length;
|
||||
|
||||
// Calculer les conversations actives (dernière semaine)
|
||||
// Calculer les conversations actives (30 derniers jours)
|
||||
const activeConversations = conversations.filter((conv) => {
|
||||
const lastActivity = new Date(conv.updatedAt || conv.createdAt);
|
||||
return lastActivity >= oneWeekAgo;
|
||||
return lastActivity >= thirtyDaysAgo;
|
||||
}).length;
|
||||
|
||||
// Calculer le total des messages
|
||||
@@ -41,32 +41,27 @@ export async function GET() {
|
||||
return sum + Math.abs(Number(transaction.rawAmount) || 0);
|
||||
}, 0);
|
||||
|
||||
// Calculer le total des crédits depuis balances
|
||||
const totalCredits = balances.reduce((sum, balance) => {
|
||||
return sum + (Number(balance.tokenCredits) || 0);
|
||||
}, 0);
|
||||
// Calculer le total des crédits
|
||||
const totalCreditsUsed = balances.reduce(
|
||||
(sum, balance) => sum + (balance.tokenCredits || 0),
|
||||
0
|
||||
);
|
||||
|
||||
// Récupérer les transactions récentes (dernières 10)
|
||||
const recentTransactions = transactions
|
||||
.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())
|
||||
.slice(0, 10)
|
||||
.map(transaction => ({
|
||||
_id: transaction._id,
|
||||
description: `Transaction ${transaction.tokenType} - ${transaction.model}`,
|
||||
amount: transaction.rawAmount,
|
||||
type: transaction.rawAmount > 0 ? 'credit' : 'debit',
|
||||
createdAt: transaction.createdAt
|
||||
}));
|
||||
.slice(0, 10);
|
||||
|
||||
return NextResponse.json({
|
||||
totalUsers: users.length,
|
||||
activeUsers,
|
||||
totalAdmins,
|
||||
totalCredits,
|
||||
totalCredits: totalCreditsUsed,
|
||||
activeConversations,
|
||||
totalMessages: totalMessages,
|
||||
totalMessages,
|
||||
totalTokensConsumed,
|
||||
recentTransactions
|
||||
totalCreditsUsed,
|
||||
recentTransactions,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("Erreur lors du calcul des métriques:", error);
|
||||
|
||||
Reference in New Issue
Block a user