2.7 KiB
2.7 KiB
id, title, status, type, team, supporting_teams, roadmap_item, priority
| id | title | status | type | team | supporting_teams | roadmap_item | priority | ||
|---|---|---|---|---|---|---|---|---|---|
| TASK-169-add-annual-ranking-snapshot-api | Add annual ranking snapshot API | pending | backend | Backend Senior |
|
foundation | medium |
TASK-169-add-annual-ranking-snapshot-api
Goal
Exponer una API de lectura pública para el ranking anual top 20 precomputado desde snapshots almacenadas.
Context
La API debe consumir rcon_annual_ranking_snapshots y rcon_annual_ranking_snapshot_items generados por el módulo de generación (TASK-168) y las tablas añadidas por TASK-167.
Mantiene compatibilidad entre SQLite y Postgres usando el patrón de conexión compartido.
Steps
- Leer los archivos indicados en "Files to Read First".
- Implementar el endpoint GET
/api/stats/rankings/annualen backend sin recalcular ranking. - Añadir payload y registro de ruta siguiendo patrones existentes.
- Validar comportamientos esperados (snapshot existente, faltante, métrica no soportada).
Files to Read First
AGENTS.mdai/repo-context.mdai/architecture-index.mddocs/annual-ranking-snapshot-schema-plan.mddocs/stats-section-functional-plan.mdbackend/app/rcon_annual_rankings.pybackend/app/rcon_historical_leaderboards.pybackend/app/rcon_historical_player_stats.pybackend/app/routes.pybackend/app/payloads.pybackend/app/rcon_admin_log_materialization.pybackend/app/postgres_rcon_storage.py
Expected Files to Modify
ai/tasks/pending/TASK-169-add-annual-ranking-snapshot-api.md(al crear la tarea)backend/app/rcon_annual_rankings.pybackend/app/payloads.pybackend/app/routes.py
Constraints
- Endpoint:
GET /api/stats/rankings/annual?year=<year>&server_id=<server-or-all>&metric=kills&limit=<n> server_idopcional,allpor defecto.metricpor ahora solokills.limitopcional, por defecto 20, validado razonablemente.- Si no existe snapshot debe responder
snapshot_status="missing"conitems=[]y estado HTTP 200. - No generar snapshot en el endpoint.
- Mantener compatibilidad SQLite/Postgres.
- No tocar frontend.
- No tocar
frontend/assets/js/partida-actual.jsnifrontend/assets/img/clans/bxb.png. - No reactivar Elo/MMR.
- No incluir Comunidad Hispana #03.
- No modificar workers históricos salvo justificación imprescindible.
Validation
python -m compileall backend/apppowershell -ExecutionPolicy Bypass -File scripts/run-integration-tests.ps1- Validación manual del contrato con backend local o método equivalente.
Outcome
- registrar archivos modificados
- validar comportamiento con y sin snapshot
- indicar limitaciones conocidas
- proponer siguiente tarea