diff --git a/app/routers_v2/players.py b/app/routers_v2/players.py index 7ebd1b5..0fa7bb1 100644 --- a/app/routers_v2/players.py +++ b/app/routers_v2/players.py @@ -32,6 +32,7 @@ from ..db_engine import ( ) from ..db_helpers import upsert_players from ..dependencies import oauth2_scheme, valid_token +from ..services.refractor_boost import compute_variant_hash # --------------------------------------------------------------------------- # Persistent browser instance (WP-02) @@ -132,6 +133,19 @@ def normalize_franchise(franchise: str) -> str: return FRANCHISE_NORMALIZE.get(titled, titled) +def resolve_refractor_tier(player_id: int, variant: int) -> int: + """Determine the refractor tier (0-4) from a player's variant hash. + + Pure math — no DB query needed. Returns 0 for base cards or unknown variants. + """ + if variant == 0: + return 0 + for tier in range(1, 5): + if compute_variant_hash(player_id, tier) == variant: + return tier + return 0 + + router = APIRouter(prefix="/api/v2/players", tags=["players"]) @@ -786,6 +800,7 @@ async def get_batter_card( card_data["cardset_name"] = this_player.cardset.name else: card_data["cardset_name"] = this_player.description + card_data["refractor_tier"] = resolve_refractor_tier(player_id, variant) card_data["request"] = request html_response = templates.TemplateResponse("player_card.html", card_data) @@ -823,6 +838,7 @@ async def get_batter_card( card_data["cardset_name"] = this_player.cardset.name else: card_data["cardset_name"] = this_player.description + card_data["refractor_tier"] = resolve_refractor_tier(player_id, variant) card_data["request"] = request html_response = templates.TemplateResponse("player_card.html", card_data) diff --git a/storage/templates/player_card.html b/storage/templates/player_card.html index 9cdf814..478ac25 100644 --- a/storage/templates/player_card.html +++ b/storage/templates/player_card.html @@ -2,9 +2,32 @@
{% include 'style.html' %} + {% include 'tier_style.html' %}