applicatif 3M, user, chart
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user