Process historical snapshot tasks 047-051

This commit is contained in:
devRaGonSa
2026-03-23 13:29:06 +01:00
parent 1ea1d4b3c6
commit 68de2d955a
16 changed files with 939 additions and 227 deletions

View File

@@ -0,0 +1,86 @@
# TASK-047-fix-server-02-snapshot-generation
## Goal
Diagnosticar y corregir por qué `comunidad-hispana-02` sigue apareciendo sin snapshots válidos en la UI histórica, asegurando que resumen, tops y partidas recientes se generen y queden disponibles igual que en `comunidad-hispana-01`.
## Context
La capa histórica ya genera snapshots funcionales para al menos uno de los servidores, pero en la práctica `comunidad-hispana-02` sigue mostrando estados vacíos o “sin snapshot” en la interfaz. El problema no parece ser la ausencia de soporte de servidor en el código, sino un fallo de generación, persistencia, selección o consumo de snapshots. Antes de seguir ampliando la plataforma histórica, hay que dejar corregida la paridad entre ambos servidores actuales.
## Steps
1. Revisar la configuración histórica actual de `comunidad-hispana-01` y `comunidad-hispana-02`.
2. Revisar la ruta completa de snapshots para ambos servidores:
- histórico bruto
- generación de snapshots
- persistencia de snapshots
- lectura de snapshots
- consumo frontend
3. Identificar por qué `comunidad-hispana-02` no devuelve snapshots válidos aunque exista histórico bruto o soporte parcial.
4. Corregir la causa raíz, ya sea en:
- mapeo de servidor
- generación
- persistencia
- recuperación
- cache frontend
5. Asegurar que para `comunidad-hispana-02` queden disponibles snapshots de:
- resumen
- leaderboard semanal por métrica
- partidas recientes
6. Verificar que ambos servidores actuales se comportan de forma equivalente.
7. Documentar brevemente la causa detectada y la corrección.
8. No añadir todavía el servidor #03 en esta task.
9. 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/config.py
- backend/app/historical_ingestion.py
- backend/app/historical_storage.py
- backend/app/historical_snapshot_storage.py
- backend/app/historical_snapshots.py
- backend/app/payloads.py
- backend/app/routes.py
- frontend/historico.html
- frontend/assets/js/historico.js
- frontend/assets/css/historico.css
- docs/historical-coverage-report.md
- docs/historical-data-quality-notes.md
## Expected Files to Modify
- backend/app/historical_ingestion.py
- backend/app/historical_storage.py
- backend/app/historical_snapshot_storage.py
- backend/app/historical_snapshots.py
- backend/app/payloads.py
- backend/app/routes.py
- frontend/assets/js/historico.js
- backend/README.md
- opcionalmente documentación técnica adicional si ayuda a dejar trazabilidad
## Constraints
- No usar A2S para esta corrección.
- No crear páginas nuevas.
- No romper el flujo actual de `comunidad-hispana-01`.
- No hacer cambios destructivos.
- Mantener el trabajo centrado en que `comunidad-hispana-02` tenga snapshots funcionales.
## Validation
- `comunidad-hispana-02` deja de mostrar estados vacíos si existe histórico suficiente.
- Resumen, tops y partidas recientes funcionan también para `comunidad-hispana-02`.
- No se rompe `comunidad-hispana-01`.
- Los cambios quedan committeados y se hace push si el entorno lo permite.
## Change Budget
- Preferir menos de 7 archivos modificados o creados.
- Preferir menos de 260 líneas cambiadas.
## Outcome
- Causa detectada: `comunidad-hispana-02` ya tenía histórico bruto persistido, pero la API de snapshots devolvía `found: false` cuando faltaba la fila precalculada en `historical_precomputed_snapshots`, sin recomponerla desde `historical_*`.
- Corrección aplicada: los builders de payload histórico ahora regeneran automáticamente el lote de snapshots del servidor solicitado cuando falta una fila precalculada y luego reintentan la lectura.
- Validación realizada:
- simulación sobre una copia del SQLite eliminando las filas de snapshot de `comunidad-hispana-02`
- la API recompuso `6` snapshots del servidor y devolvió `found: true` para resumen, ranking semanal y partidas recientes
- verificado también el SQLite real: `comunidad-hispana-02` queda con `6` snapshots persistidos