applicatif 3M, user, chart

This commit is contained in:
nBiqoz
2025-10-31 20:51:39 +01:00
parent 0efe96f4e2
commit 1c7bca8e35
7 changed files with 286 additions and 84 deletions

View File

@@ -8,6 +8,12 @@ export async function GET() {
// Récupérer toutes les transactions
const transactions = await db.collection("transactions").find({}).toArray();
// Récupérer les conversations pour analyser les connexions utilisateurs
const conversations = await db.collection("conversations").find({}).toArray();
// Récupérer les messages pour une analyse plus précise de l'activité
const messages = await db.collection("messages").find({}).toArray();
console.log(`Total transactions trouvées: ${transactions.length}`);
// Vérifier les champs de date disponibles dans les transactions
@@ -106,14 +112,75 @@ export async function GET() {
.map(([name, value]) => ({ name, value }))
.sort((a, b) => b.value - a.value);
// Calculer les connexions utilisateurs par jour (7 derniers jours)
const dailyConnections = [];
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);
// Analyser l'activité des utilisateurs via les messages
const activeUsers = new Set();
messages.forEach(message => {
let messageDate = null;
if (message.createdAt) {
messageDate = new Date(message.createdAt);
} else if (message.updatedAt) {
messageDate = new Date(message.updatedAt);
} else if (message._id && message._id.getTimestamp) {
messageDate = message._id.getTimestamp();
}
if (messageDate && messageDate >= date && messageDate < nextDate) {
if (message.user && message.isCreatedByUser) {
activeUsers.add(message.user);
}
}
});
// Aussi analyser via les conversations créées ce jour-là
conversations.forEach(conversation => {
let convDate = null;
if (conversation.createdAt) {
convDate = new Date(conversation.createdAt);
} else if (conversation.updatedAt) {
convDate = new Date(conversation.updatedAt);
} else if (conversation._id && conversation._id.getTimestamp) {
convDate = conversation._id.getTimestamp();
}
if (convDate && convDate >= date && convDate < nextDate) {
if (conversation.user) {
activeUsers.add(conversation.user);
}
}
});
console.log(`${dayNames[date.getDay()]} (${date.toISOString().split('T')[0]}): ${activeUsers.size} utilisateurs actifs`);
dailyConnections.push({
name: dayNames[date.getDay()],
value: activeUsers.size
});
}
console.log("Statistiques calculées:", {
dailyStats,
dailyConnections,
totalModels: modelData.length,
topModel: modelData[0]
});
return NextResponse.json({
dailyTokens: dailyStats,
dailyConnections: dailyConnections,
modelDistribution: modelData
});
} catch (error) {