2.1 KiB
2.1 KiB
id, title, status, type, team, supporting_teams, roadmap_item, priority
| id | title | status | type | team | supporting_teams | roadmap_item | priority | ||
|---|---|---|---|---|---|---|---|---|---|
| TASK-163 | Add player personal stats endpoint | done | backend | Backend Senior |
|
foundation | medium |
TASK-163 - Add player personal stats endpoint
Goal
Implementar únicamente el endpoint backend de estadísticas personales:
GET /api/stats/players/{player_id}.
Use existing RCON materialized data for weekly/monthly context.
Files modified
backend/app/rcon_historical_player_stats.py(nuevo)backend/app/payloads.pybackend/app/routes.py
Endpoint created
GET /api/stats/players/{player_id}- Parámetros:
server_id(opcional, aliasserver)timeframe(weekly|monthly, validación en ruta)
- Respuesta:
statusdata.player_iddata.player_namedata.matches_considereddata.killsdata.deathsdata.teamkillsdata.kd_ratiodata.kills_per_matchdata.deaths_per_matchdata.window_startdata.window_enddata.window_kinddata.weekly_rankingdata.monthly_rankingdata.source
- Parámetros:
Validaciones realizadas
python -m compileall backend/appscripts/run-integration-tests.ps1- Endpoint manual con backend levantado y
Invoke-WebRequest:- Query corta:
/api/stats/players/a?timeframe=weekly=>200 OK - Query normal:
/api/stats/players/valid-player-uuid?timeframe=monthly=>200 OK - Sin resultados:
/api/stats/players/nonexistent-9999?timeframe=weekly=>200 OKcon métricas en cero - Rechazo de timeframe inválido:
/api/stats/players/a?timeframe=yearly=>400 Bad Request
- Query corta:
Limitaciones conocidas
- El ranking semanal/mensual incluye solo jugadores con
kills > 0. source_rangepuede ir ennullcuando no hay datos materializados.player_namese resuelve alplayer_idsi no hay nombre persistido en el rango solicitado.
Siguiente task recomendada
- Endpoint de vista inicial de estadísticas personales del jugador en frontend (consumo del contrato
GET /api/stats/players/{player_id}).