Review: Add jersey fields to PlayerProfileResponse (#700)
Verdict: APPROVED
Ticket
Board item: #700 on
Reviewed: 2026-03-29
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.PlayerProfileResponseconfirmed 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 inmodels.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-S18verified inproject-westside-basketballunder 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_optionandjersey_order_statusare enums -- return.valuestrings (matchingsubscription_statusanddivisionpattern).