5.1 KiB
5.1 KiB
id, title, status, type, team, supporting_teams, roadmap_item, priority
| id | title | status | type | team | supporting_teams | roadmap_item | priority |
|---|---|---|---|---|---|---|---|
| TASK-170 | Connect annual ranking snapshot to Stats frontend | done | frontend | Frontend Senior | foundation | medium |
TASK-170 - Connect annual ranking snapshot to Stats frontend
Goal
Conectar el bloque anual top 20 del módulo Stats con la API pública ya creada:
GET /api/stats/rankings/annual?year=<year>&server_id=<server-or-all>&metric=kills&limit=20
Context
Después de implementar el endpoint anual en backend y diseñar la integración frontend de Stats, esta tarea conecta el bloque de placeholder con datos reales de snapshots precomputados y mantiene el comportamiento por estados sin romper la sección actual.
No se implementan cambios de backend ni migraciones en esta tarea.
Steps
- Revisar los archivos obligatorios antes de iniciar cambios:
AGENTS.mdai/repo-context.mdai/architecture-index.mddocs/stats-section-functional-plan.mddocs/stats-frontend-integration-plan.mddocs/annual-ranking-snapshot-schema-plan.mdfrontend/stats.htmlfrontend/assets/js/stats.jsfrontend/assets/css/styles.cssbackend/app/routes.pybackend/app/payloads.pybackend/app/rcon_annual_rankings.py
- Mantener el placeholder de ranking anual en el HTML, reemplazándolo por estados y tabla dinámica del endpoint.
- Implementar consumo del endpoint anual con estado por:
- ready
- missing
- error/backend no disponible
- Mantener
metric=killsylimit=20fijos en V1. - Validar carga/estado con
node --checky pruebas de endpoint si hay backend.
Files to Read First
AGENTS.mdai/repo-context.mdai/architecture-index.mddocs/stats-section-functional-plan.mddocs/stats-frontend-integration-plan.mddocs/annual-ranking-snapshot-schema-plan.mdfrontend/stats.htmlfrontend/assets/js/stats.jsfrontend/assets/css/styles.cssbackend/app/routes.pybackend/app/payloads.pybackend/app/rcon_annual_rankings.py
Expected Files to Modify
frontend/stats.htmlfrontend/assets/js/stats.jsfrontend/assets/css/styles.css(solo si se requiere ajuste visual para el bloque anual)ai/tasks/pending/TASK-170-connect-annual-ranking-snapshot-to-stats-frontend.md(estado + outcome)
Constraints
- Mantener frontend vanilla sin frameworks ni cambios de backend.
- No crear migraciones.
- No modificar
frontend/assets/js/partida-actual.js. - No modificar
frontend/assets/img/clans/bxb.png. - No reintroducir Comunidad Hispana #03.
- Mantener el bloque anual como consumo de snapshot (
ready,missingo backend no disponible). - No implementar generador anual desde frontend.
Validation
Antes de cerrar:
node --check frontend/assets/js/stats.js- (si aplica)
python -m http.servery comprobar HTTP 200 parafrontend/stats.htmlyfrontend/assets/js/stats.js. - Consumir
GET /api/stats/rankings/annualdesde la UI cuando backend local esté disponible. - Verificar caso con snapshot existente y caso sin snapshot (
snapshot_status="missing"). scripts/run-integration-tests.ps1si aplica.git diff --name-onlyy validar que el alcance no excede la task.git status --short --untracked-files=ally confirmar que no se tocópartida-actual.jsniimg/clans/bxb.png.
Outcome
- Archivos modificados:
frontend/stats.htmlfrontend/assets/js/stats.jsfrontend/assets/css/styles.css(ajustes del bloque anual)ai/tasks/done/TASK-170-connect-annual-ranking-snapshot-to-stats-frontend.md
- Endpoint consumido:
GET /api/stats/rankings/annual?year=<year>&server_id=<server-or-all>&metric=kills&limit=20
- Comportamiento
snapshot_status=ready:- Muestra el bloque de ranking anual con filas del top (
ranking_position,player_name,metric_value,matches_considered,kills,deaths,teamkills,kd_ratio), metadatos de servidor, fuente y fecha.
- Muestra el bloque de ranking anual con filas del top (
- Comportamiento
snapshot_status=missing:- Muestra estado informativo de no disponibilidad de ranking para el año seleccionado.
- No lanza error ni bloquea el resto del flujo.
- Comportamiento con backend no disponible:
- El estado general y anual muestran error (
Backend no disponible...) y no se hacen cambios de UI inconsistentes.
- El estado general y anual muestran error (
- Validaciones ejecutadas:
node --check frontend/assets/js/stats.jspowershell -ExecutionPolicy Bypass -File scripts/run-integration-tests.ps1- Servido local con
python -m http.servery comprobación HTTP 200 defrontend/stats.htmlyfrontend/assets/js/stats.js git status --short --untracked-files=allgit diff --name-only
- Limitaciones conocidas:
- No se pudo validar integración real contra backend porque
http://127.0.0.1:8000no estaba disponible en este entorno. - Los textos en este bloque se mantienen en ASCII para evitar cambios de encoding.
- No se pudo validar integración real contra backend porque
- Siguiente tarea recomendada:
- Conectar la vista de
Statsconfrontend/index.html/frontend/historico.htmlsi aplica y/o añadir mejoras visuales en el bloque anual.
- Conectar la vista de
Change Budget
- Preferir cambios < 5 archivos y < 200 líneas.
- Mantener cambio pequeño y verificable.