82 lines
3.6 KiB
Markdown
82 lines
3.6 KiB
Markdown
# TASK-049-global-all-servers-historical-tops
|
|
|
|
## Goal
|
|
Añadir soporte para rankings históricos globales agregando los tres servidores de la comunidad, de forma que el proyecto pueda mostrar tops totales además de tops por servidor.
|
|
|
|
## Context
|
|
Actualmente los rankings históricos están organizados por servidor. El siguiente paso es poder consultar tops globales, por ejemplo:
|
|
- top kills total
|
|
- top muertes total
|
|
- top soporte total
|
|
- top partidas con más de 100 kills total
|
|
|
|
La forma más limpia es tratar este agregado como una entidad lógica propia, por ejemplo `all-servers`, compatible con la capa de snapshots y con la futura UI.
|
|
|
|
## Steps
|
|
1. Revisar la estructura actual de rankings históricos por servidor.
|
|
2. Diseñar una estrategia clara para soportar rankings totales agregados, preferiblemente mediante una clave lógica como:
|
|
- `all-servers`
|
|
3. Implementar el agregado global para:
|
|
- top kills
|
|
- top muertes
|
|
- top soporte
|
|
- top partidas con más de 100 kills
|
|
4. Asegurar que estos rankings globales:
|
|
- no mezclan mal identidades de jugador
|
|
- respetan la ventana semanal o política temporal definida
|
|
- son compatibles con snapshots
|
|
5. Integrar el agregado global en resumen y metadatos cuando aplique.
|
|
6. Documentar la semántica de `all-servers`.
|
|
7. No crear todavía una UI nueva compleja en esta task si no es estrictamente necesario.
|
|
8. Al completar la implementación:
|
|
- dejar el repositorio consistente
|
|
- hacer commit
|
|
- hacer push al remoto si el entorno lo permite
|
|
|
|
## Files to Read First
|
|
- AGENTS.md
|
|
- backend/README.md
|
|
- backend/app/historical_storage.py
|
|
- backend/app/historical_snapshot_storage.py
|
|
- backend/app/historical_snapshots.py
|
|
- backend/app/payloads.py
|
|
- backend/app/routes.py
|
|
- docs/historical-domain-model.md
|
|
- docs/historical-data-quality-notes.md
|
|
|
|
## Expected Files to Modify
|
|
- backend/app/historical_storage.py
|
|
- backend/app/historical_snapshot_storage.py
|
|
- backend/app/historical_snapshots.py
|
|
- backend/app/payloads.py
|
|
- backend/app/routes.py
|
|
- backend/README.md
|
|
- opcionalmente documentación técnica adicional
|
|
|
|
## Constraints
|
|
- No romper rankings por servidor existentes.
|
|
- No usar A2S para rankings globales históricos.
|
|
- No hacer cambios destructivos.
|
|
- Mantener el trabajo centrado en el agregado global de tops y snapshots.
|
|
|
|
## Validation
|
|
- Existe soporte histórico para tops globales `all-servers`.
|
|
- Los rankings globales funcionan para las métricas ya soportadas.
|
|
- Los rankings por servidor siguen funcionando.
|
|
- La documentación backend refleja la nueva capacidad.
|
|
- Los cambios quedan committeados y se hace push si el entorno lo permite.
|
|
|
|
## Change Budget
|
|
- Preferir menos de 6 archivos modificados o creados.
|
|
- Preferir menos de 240 líneas cambiadas.
|
|
|
|
## Outcome
|
|
- Se añadió la clave lógica `all-servers` para la capa histórica agregada sin crear una fila física adicional en `historical_servers`.
|
|
- `list_weekly_leaderboard()` y los payloads/snapshots asociados ya devuelven rankings globales para `kills`, `deaths`, `support` y `matches_over_100_kills`.
|
|
- `list_historical_server_summaries(server_slug='all-servers')` devuelve un resumen agregado con identidad estable `all-servers`.
|
|
- `list_snapshot_server_keys()` ya incluye `all-servers`, por lo que la capa de snapshots queda compatible con el agregado global.
|
|
- Validación local:
|
|
- `list_weekly_leaderboard(server_id='all-servers', metric='kills', limit=5)` devolvió resultados agregados con servidor lógico `all-servers`
|
|
- `build_historical_server_snapshots(server_key='all-servers')` devolvió `6` snapshots
|
|
- `build_weekly_leaderboard_snapshot_payload(server_id='all-servers', metric='kills')` devolvió `found: true`
|