This commit is contained in:
Tim Baek
2026-02-01 10:24:04 +04:00
parent 679e56c494
commit b2c2f1bd49
3 changed files with 72 additions and 3 deletions
+12 -2
View File
@@ -33,6 +33,9 @@ class UserAnalyticsEntry(BaseModel):
name: Optional[str] = None
email: Optional[str] = None
count: int
input_tokens: int = 0
output_tokens: int = 0
total_tokens: int = 0
class UserAnalyticsResponse(BaseModel):
@@ -70,12 +73,15 @@ async def get_user_analytics(
user=Depends(get_admin_user),
db: Session = Depends(get_session),
):
"""Get message counts per user with user info."""
"""Get message counts and token usage per user with user info."""
from open_webui.models.users import Users
counts = ChatMessages.get_message_count_by_user(
start_date=start_date, end_date=end_date, db=db
)
token_usage = ChatMessages.get_token_usage_by_user(
start_date=start_date, end_date=end_date, db=db
)
# Get user info for top users
top_user_ids = [uid for uid, _ in sorted(counts.items(), key=lambda x: -x[1])[:limit]]
@@ -84,11 +90,15 @@ async def get_user_analytics(
users = []
for user_id in top_user_ids:
u = user_info.get(user_id)
tokens = token_usage.get(user_id, {})
users.append(UserAnalyticsEntry(
user_id=user_id,
name=u.name if u else None,
email=u.email if u else None,
count=counts[user_id]
count=counts[user_id],
input_tokens=tokens.get("input_tokens", 0),
output_tokens=tokens.get("output_tokens", 0),
total_tokens=tokens.get("total_tokens", 0),
))
return UserAnalyticsResponse(users=users)