9.0 KiB
id, title, status, type, team, supporting_teams, roadmap_item, priority
| id | title | status | type | team | supporting_teams | roadmap_item | priority | |
|---|---|---|---|---|---|---|---|---|
| TASK-207 | Annual ranking default load and KPM columns | done | frontend | Frontend Senior |
|
foundation | medium |
TASK-207 - Annual ranking default load and KPM columns
Goal
Ajustar el ranking anual publico en stats para que muestre la temporada fija 2026 con carga automatica inicial y anadir la columna KPM en los listados publicos multi-registro donde existan datos suficientes sin tocar backend ni endpoints.
Context
Tras TASK-206, la presentacion publica del frontend ya es consistente, pero el bloque anual de stats sigue requiriendo seleccion manual de anio y una accion extra para cargar un ranking que ahora debe mostrarse como lectura fija de temporada. Ademas, las tablas publicas con varios jugadores no muestran de forma uniforme KPM aunque ya existen datos o pueden derivarse desde kills y matches_considered.
Preserve the current product identity: Spanish-speaking HLL Vietnam community, military/Vietnam/tactical/sober visual direction and controlled repository evolution.
Steps
- Crear la task y moverla a
ai/tasks/in-progress. - Fijar el ranking anual de
statsa la temporada 2026 sin selector editable de anio ni boton obligatorio de carga. - Cargar automaticamente el ranking anual al abrir
stats.html, manteniendo estados de carga y error controlados. - Cambiar la tabla anual para mostrar
Killsy anadirKPM, usandokills_per_matchcuando exista o calculandolo desdekills / matches_considered. - Revisar
ranking.htmlyhistorico.htmlpara unificar la etiqueta visual aKPMy anadir la columna donde aplique sin duplicarla. - Validar por inspeccion, revisar
git diff --name-only, documentar exclusiones y mover la task aai/tasks/doneal terminar.
Files to Read First
AGENTS.mdai/repo-context.mdai/architecture-index.mdfrontend/stats.htmlfrontend/ranking.htmlfrontend/historico.htmlfrontend/assets/js/stats.jsfrontend/assets/js/ranking.jsfrontend/assets/js/historico.jsfrontend/assets/css/styles.cssai/tasks/done/TASK-206-public-frontend-visual-consistency-and-annual-ranking-layout.md
Expected Files to Modify
ai/tasks/done/TASK-207-annual-ranking-default-load-and-kpm-columns.mdfrontend/stats.htmlfrontend/ranking.htmlfrontend/historico.htmlfrontend/assets/js/stats.jsfrontend/assets/js/ranking.jsfrontend/assets/js/historico.jsfrontend/assets/css/styles.css
Constraints
- Keep the change minimal.
- Preserve HLL Vietnam project identity.
- Do not introduce unnecessary frameworks or dependencies.
- Do not implement backend functionality unless the task explicitly requires it.
- Do not expand Elo/MMR, historical workers or RCON server #03 handling unless the task explicitly requires it.
- Do not overwrite repository-specific context with generic platform template text.
- No ejecutar
ai-platform run. - No modificar
backend/, endpoints, logica de datos, generacion de snapshots ni scripts backend. - No tocar
ai/system-metrics.md. - No tocar
frontend/assets/img/weapons/, assets/SVGs de armas ni copias relacionadas. - No reactivar Elo/MMR ni reintroducir Comunidad Hispana #03.
Validation
Before completing the task ensure:
stats.htmlno muestra selector editable de anio para el ranking anualstats.htmlmuestra de forma simple la temporada fija 2026- el ranking anual se carga automaticamente al abrir la pagina
- ya no hace falta pulsar un boton para la carga inicial del ranking anual
- la tabla anual muestra
KillsyKPMy ya no muestraValor / Kills KPMusakills_per_matchsi existe okills / matches_consideredcon 2 decimales cuando haya datos suficientesranking.htmlusa la etiqueta visualKPMsin duplicar columnashistorico.htmlystats.htmlsolo muestranKPMadicional donde aplique por datos disponiblesgit diff --name-onlymatches the expected scope- no unrelated files were modified
- integration tests are run when relevant and configured
Outcome
Archivos modificados:
frontend/stats.htmlfrontend/ranking.htmlfrontend/historico.htmlfrontend/assets/js/stats.jsfrontend/assets/js/ranking.jsfrontend/assets/js/historico.jsfrontend/assets/js/historico-partida.jsfrontend/assets/js/main.jsfrontend/assets/css/styles.cssfrontend/assets/css/historico-scoreboard-detail.cssai/tasks/in-progress/TASK-207-annual-ranking-default-load-and-kpm-columns.md
Temporada anual fija:
- Se elimino el selector editable de anio y cualquier control de carga manual del bloque anual en
stats. - La interfaz muestra la temporada fija con un bloque visual simple
Temporada 2026. - El titulo del bloque anual queda orientado a la lectura fija:
Top 20 temporada 2026.
Carga automatica del ranking anual:
stats.jsdeja de leer un input de anio y fijaannualDefaultYear = 2026.- Tras confirmar
health, la pagina dispara automaticamente la carga del ranking anual usandoyear=2026,metric=kills,limit=20yserver_id=all. - Se mantienen mensajes de carga, vacio y error controlados; ya no hace falta pulsar
Cargar ranking anual.
KPM anadido y unificado:
statsanual ahora muestra columnasPosicion,Jugador,Kills,Partidas,KPM,Muertes,TeamkillsyK/D.ranking.htmlcambia la etiqueta visual dekills_per_matchaKPMtanto en el selector como en la tabla.ranking.jsevita duplicarKPMcuando la metrica activa ya eskills_per_match, ocultando la columna secundaria en ese caso.historico.htmlyhistorico.jsanaden una columnaKPMal ranking multi-registro; si no hay datos suficientes se muestra-.
Busqueda de jugador endurecida:
statsahora exige un minimo de 4 caracteres utiles antes de permitir la busqueda.- El boton
Buscar jugadorqueda deshabilitado hasta cumplir el minimo y la validacion tambien se aplica al pulsar o enviar con Enter. - Si el texto no alcanza el minimo, el frontend muestra
Introduce al menos 4 caracteres para buscar un jugador.y no lanza la llamada a/api/stats/players/search.
Logos de clanes ampliados:
- Se aumento la presencia visual general de los logos de la seccion de clanes mediante layout y CSS, sin tocar imagenes.
BxBrecibe un ajuste especifico adicional para que deje de verse pequeno dentro de su tarjeta.- El ajuste mantiene responsive y no reemplaza assets.
Brands en botones externos:
- El detalle de jugador dentro de
historico-partidaahora usa los logos disponibles enfrontend/assets/img/brands/paraHellor,HLL RecordsyHelo. Steamconserva boton solo con texto porque no existe logo brand disponible en esa carpeta.- Los enlaces actuales no cambian; solo se enriquece su presentacion visual con logos decorativos cuando hay asset.
Calculo de KPM:
- Si el backend ya entrega
kills_per_match, el frontend usa ese valor. - Si no existe
kills_per_matchy haykillsmasmatches_considered, el frontend calculakills / matches_considered. - Si faltan datos o
matches_considered <= 0, el frontend muestra-. - La comprobacion pedida
1222 / 32da38.19.
Validaciones realizadas:
git status --short --untracked-files=allejecutado antes de modificar.- Confirmacion previa de cambios no relacionados en
ai/system-metrics.mdy en assets/SVGs de armas; no se tocaron. - Lectura previa de
AGENTS.md,ai/repo-context.md,ai/architecture-index.md,frontend/stats.html,frontend/ranking.html,frontend/historico.html,frontend/assets/js/stats.js,frontend/assets/js/ranking.js,frontend/assets/js/historico.js,frontend/assets/css/styles.cssyTASK-206. - Lectura adicional para esta ampliacion de
frontend/historico-partida.html,frontend/assets/js/historico-partida.js,frontend/assets/js/main.js,frontend/assets/css/historico-scoreboard-detail.css, rutas existentes enfrontend/assets/img/brands/y rutas existentes de la seccion de clanes. - Parseo sintactico local con
node --check frontend/assets/js/stats.js,node --check frontend/assets/js/historico.js,node --check frontend/assets/js/ranking.jsynode --check frontend/assets/js/historico-partida.js. - Verificacion especifica por inspeccion del minimo de 4 caracteres, de la presencia de logos de clan ampliados y de la asignacion de brands a botones externos sin rutas rotas.
- Verificacion por inspeccion de presencia/eliminacion de textos y columnas clave con
rg. - Revision de
git diff --name-onlyfiltrado a los archivos esperados para confirmar alcance acotado. - No existe una validacion frontend automatizada configurada para este alcance; la validacion queda documentada por inspeccion y parseo local.
Confirmaciones de alcance:
- No se tocaron
backend/, endpoints, logica de datos, snapshots ni scripts backend. - No se tocaron
ai/system-metrics.md,frontend/assets/img/weapons/ni SVGs de armas. - No se reactivo Elo/MMR ni se reintrodujo Comunidad Hispana #03.
Change Budget
- Prefer fewer than 5 modified files.
- Prefer changes under 200 lines when feasible.
- Split the work into follow-up tasks if limits are exceeded.