3.6 KiB
3.6 KiB
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
- Revisar la estructura actual de rankings históricos por servidor.
- Diseñar una estrategia clara para soportar rankings totales agregados, preferiblemente mediante una clave lógica como:
all-servers
- Implementar el agregado global para:
- top kills
- top muertes
- top soporte
- top partidas con más de 100 kills
- Asegurar que estos rankings globales:
- no mezclan mal identidades de jugador
- respetan la ventana semanal o política temporal definida
- son compatibles con snapshots
- Integrar el agregado global en resumen y metadatos cuando aplique.
- Documentar la semántica de
all-servers. - No crear todavía una UI nueva compleja en esta task si no es estrictamente necesario.
- 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-serverspara la capa histórica agregada sin crear una fila física adicional enhistorical_servers. list_weekly_leaderboard()y los payloads/snapshots asociados ya devuelven rankings globales parakills,deaths,supportymatches_over_100_kills.list_historical_server_summaries(server_slug='all-servers')devuelve un resumen agregado con identidad estableall-servers.list_snapshot_server_keys()ya incluyeall-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ógicoall-serversbuild_historical_server_snapshots(server_key='all-servers')devolvió6snapshotsbuild_weekly_leaderboard_snapshot_payload(server_id='all-servers', metric='kills')devolviófound: true