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
Dependencies
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
gWAR Breakdown (Component Details)
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.javaAdd fields:
gwar,gwarBatting,gwarBaserunning,gwarFielding,gwarPositional,gwarReplacement,oaaapi/dto/PitchingStatsDto.javaAdd fields:
gwar,gwarPitching,gwarReplacementapi/controller/PlayerController.javaAdd endpoints for gWAR leaderboards and breakdown.
api/service/PlayerApiService.javaAdd service methods with caching.
domain/stats/PlayerBattingStatsRepository.javaAdd query:
Files to Create
api/dto/GwarBreakdownDto.javaFrontend Integration
Update existing advanced stats UI to show:
Test Cases
Acceptance Criteria
Dependencies