From 0953a45b9fc21f043f7a6726f6191ac116b36f07 Mon Sep 17 00:00:00 2001 From: Cal Corum Date: Thu, 19 Mar 2026 13:14:23 -0500 Subject: [PATCH] fix: sort /teams/{id}/evolutions by current_tier desc, current_value desc (#116) Closes #116 The endpoint was returning results in player_id insertion order, causing /evo status in Discord to show a wall of T0/value-0 cards before any progressed players. Sort by current_tier DESC, current_value DESC so the most-evolved cards always appear first. Co-Authored-By: Claude Sonnet 4.6 --- app/routers_v2/teams.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/routers_v2/teams.py b/app/routers_v2/teams.py index 74956ca..dc7265c 100644 --- a/app/routers_v2/teams.py +++ b/app/routers_v2/teams.py @@ -1544,8 +1544,8 @@ async def list_team_evolutions( Joins EvolutionCardState → EvolutionTrack (for card_type filtering and threshold context) and EvolutionCardState → Player (for player_name), both eager-loaded in a single query. Results are paginated via - page/per_page (1-indexed pages); items are ordered by player_id for - stable ordering. + page/per_page (1-indexed pages); items are ordered by current_tier DESC, + current_value DESC so the most-progressed cards appear first. Query parameters: card_type -- filter to states whose track.card_type matches (e.g. 'batter', 'sp') @@ -1572,7 +1572,10 @@ async def list_team_evolutions( .switch(EvolutionCardState) .join(Player) .where(EvolutionCardState.team == team_id) - .order_by(EvolutionCardState.player_id) + .order_by( + EvolutionCardState.current_tier.desc(), + EvolutionCardState.current_value.desc(), + ) ) if card_type is not None: