diff --git a/backend/services/gamification.py b/backend/services/gamification.py index 429a9b7..dcff809 100644 --- a/backend/services/gamification.py +++ b/backend/services/gamification.py @@ -222,11 +222,27 @@ def check_and_award_badges(session: Session, user: User) -> List[Badge]: def get_leaderboard(session: Session, limit: int = 10) -> List[dict]: """Get top users by XP""" - users = session.exec( - select(User) + # Test accounts to hide until we have real users + TEST_USER_EMAILS = ["tenwest", "testuser"] + MIN_USERS_TO_SHOW_TEST = 12 + + # Count total real users + total_users = session.exec( + select(func.count(User.id)) .where(User.is_active == True) - .order_by(User.xp.desc()) - .limit(limit) + ).one() or 0 + + # Build query + query = select(User).where(User.is_active == True) + + # If we don't have enough real users, hide test accounts + if total_users < MIN_USERS_TO_SHOW_TEST: + for test_email in TEST_USER_EMAILS: + query = query.where(~User.email.ilike(f"{test_email}@%")) + query = query.where(~User.email.ilike(f"%{test_email}%")) + + users = session.exec( + query.order_by(User.xp.desc()).limit(limit) ).all() return [ diff --git a/frontend/app/videos/page.tsx b/frontend/app/videos/page.tsx index d776ca7..c4dffd3 100644 --- a/frontend/app/videos/page.tsx +++ b/frontend/app/videos/page.tsx @@ -107,8 +107,8 @@ export default function VideosPage() {