2.7 KiB
2.7 KiB
TASK-042-historical-snapshots-storage-and-model
Goal
Diseñar e implementar una capa de almacenamiento de snapshots históricos precalculados para el proyecto, preparada para servir rápidamente resumen, rankings y partidas recientes sin recalcular agregados pesados en tiempo real.
Context
La página histórica ya funciona, pero parte de la información puede requerir agregaciones costosas si se calculan en el momento de cada carga o al cambiar de pestaña. El objetivo es introducir una capa de snapshots precalculados y persistidos que permita responder de forma rápida y estable. Esto debe incluir no solo el resumen del servidor, sino también los tops/rankings semanales.
Steps
- Revisar la estructura histórica actual y los endpoints/API que hoy calculan resumen, rankings y partidas recientes.
- Diseñar un modelo de snapshot persistido que soporte, como mínimo:
- resumen de servidor
- top kills semanales
- top muertes semanales
- top partidas con más de 100 kills por jugador
- top puntos de soporte semanales
- partidas recientes
- Definir para cada snapshot metadatos claros, por ejemplo:
- server_key
- snapshot_type
- metric
- window
- payload_json
- generated_at
- source_range_start
- source_range_end
- is_stale
- Implementar el almacenamiento local de snapshots de forma coherente con la persistencia histórica actual.
- Documentar la estructura y propósito de esta nueva capa.
- No migrar todavía toda la UI a snapshots en esta task.
- 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_models.py
- backend/app/historical_storage.py
- backend/app/payloads.py
- backend/app/routes.py
- docs/historical-domain-model.md
Expected Files to Modify
- backend/README.md
- backend/app/historical_models.py
- backend/app/historical_storage.py
- opcionalmente nuevos módulos, por ejemplo:
- backend/app/historical_snapshots.py
- backend/app/historical_snapshot_storage.py
- opcionalmente documentación técnica adicional
Constraints
- No basar esta capa en A2S.
- No crear todavía nueva UI en esta task.
- No hacer cambios destructivos.
- Mantener el trabajo centrado en almacenamiento y modelo de snapshots.
Validation
- Existe un modelo de snapshot persistido claro.
- El modelo cubre resumen, rankings y partidas recientes.
- La estructura está lista para ser rellenada periódicamente.
- Los cambios quedan committeados y se hace push al remoto si el entorno lo permite.
Change Budget
- Preferir menos de 6 archivos modificados o creados.
- Preferir menos de 220 líneas cambiadas.