Add historical snapshot storage layer
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# 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
|
||||
1. Revisar la estructura histórica actual y los endpoints/API que hoy calculan resumen, rankings y partidas recientes.
|
||||
2. 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
|
||||
3. 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
|
||||
4. Implementar el almacenamiento local de snapshots de forma coherente con la persistencia histórica actual.
|
||||
5. Documentar la estructura y propósito de esta nueva capa.
|
||||
6. No migrar todavía toda la UI a snapshots en esta task.
|
||||
7. 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.
|
||||
Reference in New Issue
Block a user