applicatif 3M, user, chart
This commit is contained in:
@@ -52,17 +52,17 @@ export function DashboardUsersList() {
|
||||
|
||||
// Récupérer toutes les données nécessaires
|
||||
const { data: users, loading: usersLoading } =
|
||||
useCollection<LibreChatUser>("users");
|
||||
useCollection<LibreChatUser>("users", { limit: 1000 });
|
||||
const { data: conversations, loading: conversationsLoading } =
|
||||
useCollection<LibreChatConversation>("conversations");
|
||||
useCollection<LibreChatConversation>("conversations", { limit: 1000 });
|
||||
const { data: balances, loading: balancesLoading } =
|
||||
useCollection<LibreChatBalance>("balances");
|
||||
useCollection<LibreChatBalance>("balances", { limit: 1000 });
|
||||
const { data: messages, loading: messagesLoading } =
|
||||
useCollection<LibreChatMessage>("messages");
|
||||
useCollection<LibreChatMessage>("messages", { limit: 1000 });
|
||||
const { data: tokens, loading: tokensLoading } =
|
||||
useCollection<TokenDocument>("tokens");
|
||||
useCollection<TokenDocument>("tokens", { limit: 1000 });
|
||||
const { data: toolcalls, loading: toolcallsLoading } =
|
||||
useCollection<ToolcallDocument>("toolcalls");
|
||||
useCollection<ToolcallDocument>("toolcalls", { limit: 1000 });
|
||||
|
||||
const processUsers = useCallback(() => {
|
||||
if (
|
||||
@@ -174,20 +174,23 @@ export function DashboardUsersList() {
|
||||
const latestBalance = sortedBalances[0];
|
||||
const credits = latestBalance ? latestBalance.tokenCredits || 0 : 0;
|
||||
|
||||
// Calculer les tokens consommés depuis les crédits
|
||||
const INITIAL_CREDITS = 3000000;
|
||||
const creditsUsed = INITIAL_CREDITS - credits;
|
||||
const tokensFromCredits = creditsUsed > 0 ? creditsUsed : 0;
|
||||
|
||||
// Prendre la valeur la plus élevée (plus précise)
|
||||
// Calculer les tokens réellement consommés depuis les messages (approche principale)
|
||||
const totalTokens = Math.max(
|
||||
totalTokensFromMessages,
|
||||
totalTokensFromConversations,
|
||||
tokensFromTokensCollection,
|
||||
tokensFromToolcalls,
|
||||
tokensFromCredits
|
||||
tokensFromToolcalls
|
||||
);
|
||||
|
||||
// Calculer les tokens depuis les crédits seulement si on n'a pas de données de messages
|
||||
const INITIAL_CREDITS = 3000000;
|
||||
const creditsUsed = INITIAL_CREDITS - credits;
|
||||
const tokensFromCredits = creditsUsed > 0 ? creditsUsed : 0;
|
||||
|
||||
// Si on n'a pas de tokens depuis les messages mais qu'on a une consommation de crédits significative
|
||||
const finalTokens = totalTokens > 0 ? totalTokens :
|
||||
(tokensFromCredits > 0 && tokensFromCredits < INITIAL_CREDITS) ? tokensFromCredits : 0;
|
||||
|
||||
// Log de débogage très détaillé
|
||||
console.log(`👤 User ${user.name || user.email}:`, {
|
||||
conversations: userConversations.length,
|
||||
@@ -200,7 +203,8 @@ export function DashboardUsersList() {
|
||||
currentCredits: credits,
|
||||
creditsUsed: creditsUsed,
|
||||
tokensFromCredits: tokensFromCredits,
|
||||
finalTokens: totalTokens,
|
||||
finalTokens: finalTokens,
|
||||
willBeIncluded: finalTokens > 0,
|
||||
messagesSample: userMessages.slice(0, 2).map((m) => ({
|
||||
tokenCount: m.tokenCount,
|
||||
model: m.model,
|
||||
@@ -213,14 +217,14 @@ export function DashboardUsersList() {
|
||||
})),
|
||||
});
|
||||
|
||||
// Ajouter l'utilisateur seulement s'il a des données significatives
|
||||
if (userConversations.length > 0 || totalTokens > 0 || credits > 0) {
|
||||
// Ajouter l'utilisateur s'il a consommé des tokens (éviter les faux positifs de 3M tokens)
|
||||
if (finalTokens > 0 && finalTokens < INITIAL_CREDITS) {
|
||||
processedUsers.push({
|
||||
userId: user._id,
|
||||
userName:
|
||||
user.name || user.username || user.email || "Utilisateur inconnu",
|
||||
conversations: userConversations.length,
|
||||
tokens: totalTokens,
|
||||
tokens: finalTokens,
|
||||
credits: credits,
|
||||
});
|
||||
}
|
||||
@@ -231,6 +235,17 @@ export function DashboardUsersList() {
|
||||
.sort((a, b) => b.tokens - a.tokens)
|
||||
.slice(0, 5);
|
||||
|
||||
console.log("📊 Processing summary:", {
|
||||
totalUsers: users.length,
|
||||
usersWithActivity: processedUsers.length,
|
||||
top5Users: sortedUsers.length,
|
||||
allProcessedUsers: processedUsers.map(u => ({
|
||||
name: u.userName,
|
||||
conversations: u.conversations,
|
||||
tokens: u.tokens,
|
||||
credits: u.credits
|
||||
}))
|
||||
});
|
||||
console.log("✅ Top 5 users processed:", sortedUsers);
|
||||
setTopUsers(sortedUsers);
|
||||
setIsLoading(false);
|
||||
|
||||
Reference in New Issue
Block a user