feat(server): stats queries support include_test filter
Leaderboard and rank queries take an optional include_test param (default false). Real users never see soak-harness traffic unless they explicitly opt in via ?include_test=true. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -159,6 +159,7 @@ async def get_leaderboard(
|
||||
metric: str = Query("wins", pattern="^(wins|win_rate|avg_score|knockouts|streak|rating)$"),
|
||||
limit: int = Query(50, ge=1, le=100),
|
||||
offset: int = Query(0, ge=0),
|
||||
include_test: bool = Query(False, description="Include soak-harness test accounts"),
|
||||
service: StatsService = Depends(get_stats_service_dep),
|
||||
):
|
||||
"""
|
||||
@@ -172,8 +173,9 @@ async def get_leaderboard(
|
||||
- streak: Best win streak
|
||||
|
||||
Players must have 5+ games to appear on leaderboards.
|
||||
By default, soak-harness test accounts are hidden.
|
||||
"""
|
||||
entries = await service.get_leaderboard(metric, limit, offset)
|
||||
entries = await service.get_leaderboard(metric, limit, offset, include_test)
|
||||
|
||||
return {
|
||||
"metric": metric,
|
||||
@@ -228,10 +230,11 @@ async def get_player_stats(
|
||||
async def get_player_rank(
|
||||
user_id: str,
|
||||
metric: str = Query("wins", pattern="^(wins|win_rate|avg_score|knockouts|streak|rating)$"),
|
||||
include_test: bool = Query(False, description="Include soak-harness test accounts"),
|
||||
service: StatsService = Depends(get_stats_service_dep),
|
||||
):
|
||||
"""Get player's rank on a leaderboard."""
|
||||
rank = await service.get_player_rank(user_id, metric)
|
||||
rank = await service.get_player_rank(user_id, metric, include_test)
|
||||
|
||||
return {
|
||||
"user_id": user_id,
|
||||
@@ -348,11 +351,12 @@ async def get_my_stats(
|
||||
@router.get("/me/rank", response_model=PlayerRankResponse)
|
||||
async def get_my_rank(
|
||||
metric: str = Query("wins", pattern="^(wins|win_rate|avg_score|knockouts|streak|rating)$"),
|
||||
include_test: bool = Query(False, description="Include soak-harness test accounts"),
|
||||
user: User = Depends(require_user),
|
||||
service: StatsService = Depends(get_stats_service_dep),
|
||||
):
|
||||
"""Get current user's rank on a leaderboard."""
|
||||
rank = await service.get_player_rank(user.id, metric)
|
||||
rank = await service.get_player_rank(user.id, metric, include_test)
|
||||
|
||||
return {
|
||||
"user_id": user.id,
|
||||
|
||||
Reference in New Issue
Block a user