Review: Add jersey fields to PlayerProfileResponse (#700)

review-700-jersey-profile-fields Doc

review ready

Verdict: APPROVED

Ticket forgejo_admin/basketball-api#257 -- "Add jersey fields to PlayerProfileResponse"
Board item: #700 on board-westside-basketball (backlog)
Reviewed: 2026-03-29

Template Completeness

Section Status Notes
Type PASS "Feature"
Lineage PASS References westside-landing#197
Repo PASS <code>forgejo_admin/basketball-api</code>
User Story PASS As a parent viewing my child's profile / see jersey status / know ordering status
Context PASS Explains current state, references model fields, admin precedent
File Targets PASS Includes modify and NOT-touch sections
Acceptance Criteria PASS 3 concrete, verifiable checkboxes
Test Expectations PASS 2 unit tests + run command
Constraints PASS Follow existing pattern, mirror AdminPlayerItem names, no new deps
Checklist PASS Standard 3-item checklist
Related PASS 4 references including project, frontend consumer, admin PRs

File Target Verification

  • src/basketball_api/routes/players.py -- EXISTS. PlayerProfileResponse confirmed at line 40. _player_profile_response() confirmed at line 92.
  • Model fields -- jersey_option (line 240), jersey_order_status (line 243), jersey_size (line 246), jersey_number (line 249) all verified in models.py.
  • Minor inaccuracy: Ticket says "models.py lines 208-212" but actual lines are 240-249. Not blocking -- field names are correct.
  • AdminPlayerItem claim: Ticket says PRs #248/#249 added jersey fields to AdminPlayerItem, but current AdminPlayerItem (admin.py:289-302) does NOT include them. Inaccurate context, but does not affect this ticket's scope.

Traceability

  • Board item #700 labels: type:feature,arch:basketball-api,story:WS-S18 -- all correct
  • story:WS-S18 verified in project-westside-basketball under Parent stories

Dependency Check

  • Ticket states dependency on #255 (dual-auth). #255 is still open (PR #258 pending).
  • NOT a real dependency for this ticket. Profile endpoint uses get_current_user (standard Keycloak OIDC), not session auth. Purely additive schema work.
  • Can proceed independently.

Decomposition Assessment

  • 1 file to modify, 2 discrete changes, 2 new tests. Well within 3-change / 5-minute budget.

Recommendations

  • Agent should grep for jersey field patterns in existing tests to match enum import style.
  • jersey_option and jersey_order_status are enums -- return .value strings (matching subscription_status and division pattern).