-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Overview
Add API endpoints for gWAR leaderboards and player gWAR breakdown, plus UI integration.
Parent Issue
Part of #94 (WAR and Advanced Stats)
API Endpoints
gWAR Leaderboards
GET /api/players/leaders/gwar/batting?season={year}&limit={n}
GET /api/players/leaders/gwar/pitching?season={year}&limit={n}
gWAR Breakdown (Component Details)
GET /api/players/{id}/gwar-breakdown?season={year}
Response:
{
"player": { "id": 123, "name": "Shohei Ohtani" },
"season": 2024,
"gwar": 8.5,
"officialWar": 8.3,
"components": {
"batting": 65.2,
"baserunning": 4.1,
"fielding": 0.0,
"positional": -10.8,
"replacement": 26.5
},
"methodology": "/docs/gwar"
}Files to Modify
api/dto/BattingStatsDto.java
Add fields:
gwar,gwarBatting,gwarBaserunning,gwarFielding,gwarPositional,gwarReplacement,oaa
api/dto/PitchingStatsDto.java
Add fields:
gwar,gwarPitching,gwarReplacement
api/controller/PlayerController.java
Add endpoints for gWAR leaderboards and breakdown.
api/service/PlayerApiService.java
Add service methods with caching.
domain/stats/PlayerBattingStatsRepository.java
Add query:
List<PlayerBattingStats> findTopGwar(Integer season, Pageable pageable);Files to Create
api/dto/GwarBreakdownDto.java
public record GwarBreakdownDto(
PlayerDto player,
Integer season,
BigDecimal gwar,
BigDecimal officialWar,
BigDecimal batting,
BigDecimal baserunning,
BigDecimal fielding,
BigDecimal positional,
BigDecimal replacement,
String methodology
) {}Frontend Integration
Update existing advanced stats UI to show:
- gWAR alongside official WAR
- Tooltip explaining gWAR methodology
- Component breakdown on player profile
Test Cases
- Leaderboard returns sorted by gWAR
- Breakdown includes all components
- Null handling for players without gWAR
- Caching works correctly
Acceptance Criteria
- gWAR leaderboard endpoints work
- Breakdown endpoint shows components
- DTOs include all gWAR fields
- Leaderboard queries are performant (indexed)
- Frontend shows gWAR on player stats
Dependencies
- gWAR Schema: League Constants and Component Fields #169 (gWAR Schema)
- gWAR Calculation Service #170 (gWAR Calculation Service)
- MLB API Sabermetrics Ingestion #171 (MLB API Sabermetrics Ingestion)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels