Files
comunidadhll/ai/tasks/done/TASK-173-add-annual-ranking-snapshot-runbook.md
2026-06-08 17:36:57 +02:00

122 lines
3.8 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
id: TASK-173
title: Add annual ranking snapshot runbook
status: done
type: documentation
team: PM
supporting_teams: [Backend Senior, Frontend Senior, Arquitecto de Base de Datos]
roadmap_item: foundation
priority: medium
---
# TASK-173 - Add annual ranking snapshot runbook
## Goal
Documentar la operacion del ranking anual top 20 para la seccion Stats: como generar, regenerar y validar usando snapshots precomputados para evitar recalcular anualmente en cada request.
## Context
TASK-173 define el proceso operativo para el bloque anual de Stats que consume:
- `GET /api/stats/rankings/annual?year=<year>&server_id=<server-or-all>&metric=kills&limit=20`
El documento mantiene alcance documentación-only y reitera que la fuente preferente es RCON materializado.
## Steps
1. Revisar archivos obligatorios indicados en la task.
2. Crear/actualizar runbook sin tocar backend ni frontend.
3. Documentar fuente, comandos, validaciones y casos esperados.
## Files to Read First
- AGENTS.md
- ai/repo-context.md
- ai/architecture-index.md
- docs/stats-section-functional-plan.md
- backend/app/rcon_annual_rankings.py
- backend/app/routes.py
- frontend/assets/js/stats.js
- ai/tasks/done/TASK-170-connect-annual-ranking-snapshot-to-stats-frontend.md
- ai/tasks/done/TASK-171-validate-stats-section-with-backend-data.md
- ai/tasks/done/TASK-172-polish-stats-section-empty-states-and-copy.md
## Expected Files to Modify
- `docs/annual-ranking-snapshot-runbook.md`
- `ai/tasks/done/TASK-173-add-annual-ranking-snapshot-runbook.md`
## Constraints
- Documentacion-only.
- No modificar backend.
- No modificar frontend.
- No crear migraciones.
- No cambiar scripts salvo que exista comando explícito y se limite a documentación.
- No tocar:
- `frontend/assets/js/partida-actual.js`
- `frontend/assets/img/clans/bxb.png`
- Mantener restricciones funcionales:
- no reactivar Elo/MMR
- no reintroducir Comunidad Hispana #03
## Validation
- Confirmar que `docs/annual-ranking-snapshot-runbook.md` existe.
- Ejecutar `git diff --name-only`.
- Validar alcance esperado de archivos modificados.
- Si no hay test automáticos por ser documentación-only, documentarlo en Outcome.
## Outcome
### Status
Done
### Files modified
- `docs/annual-ranking-snapshot-runbook.md`
- `ai/tasks/done/TASK-173-add-annual-ranking-snapshot-runbook.md`
### Documentation created
- Runbook creado en `docs/annual-ranking-snapshot-runbook.md` con:
- propósito del snapshot anual top 20,
- fuente de datos materializada RCON (`rcon_materialized_matches`, `rcon_match_player_stats`) y filtro `source_basis=admin-log-match-ended`,
- endpoint consumidor `GET /api/stats/rankings/annual?...`,
- pasos de generacion y regeneracion,
- validacion de existencia,
- validacion desde API y desde frontend Stats,
- casos esperados:
- `snapshot_status="ready"` con items,
- `snapshot_status="ready"` vacío,
- `snapshot_status="missing"`,
- metrica no soportada en V1.
- alertas:
- no recalcular ranking anual por request público,
- no usar scoreboard publico como fuente primaria si RCON disponible,
- no reintroducir Elo/MMR,
- no reintroducir Comunidad Hispana #03.
### Validacion
- Confirmado que `docs/annual-ranking-snapshot-runbook.md` existe.
- `git diff --name-only` y `git status --short --untracked-files=all` revisados para validar alcance.
- Esta tarea es documentación-only; no aplica tests automáticos.
### Limitaciones conocidas
- No se cambian scripts ni operaciones de mantenimiento en esta tarea.
- No se realizan cambios de backend/frontend.
### Siguiente task recomendada
- Automatizar la ejecucion del generador anual (cron/manual) y capturar artefactos de operador.
## Change Budget
- Prefer < 5 files.
- Prefer cambios acotados y revisables.
- Mantener doc corta y accionable.