4.2 KiB
4.2 KiB
TASK-030-historical-snapshot-quality-pass
Goal
Revisar y ajustar la calidad de los snapshots persistidos tras la primera captura A2S real, asegurando consistencia de datos, timestamps, procedencia y utilidad de cara a historico y visualizacion.
Context
Una vez incorporado el target real y validada una primera captura, el siguiente paso es comprobar la calidad del dato persistido. No basta con guardar snapshots; deben ser consistentes y utiles para construir historico, estadisticas y visualizacion sin ruido innecesario.
Steps
- Revisar snapshots persistidos a partir de la captura real de Comunidad Hispana #01.
- Verificar consistencia de campos clave:
- nombre del servidor
- host o referencia de origen
- timestamp
- mapa actual
- jugadores
- capacidad
- fuente efectiva
- Revisar si hay problemas de calidad como:
- duplicados innecesarios
- timestamps incoherentes
- normalizacion deficiente
- mezcla poco clara entre fallback y captura real
- Ajustar la capa de persistencia, normalizacion o payloads si fuera necesario para mejorar claridad.
- Revisar el impacto en endpoints historicos existentes:
/api/servers/latest/api/servers/history/api/servers/{id}/history
- Mantener el cambio centrado en calidad y coherencia del historico, no en nuevas visualizaciones.
- Actualizar documentacion minima si el modelo efectivo de snapshot cambia ligeramente.
Files to Read First
- AGENTS.md
- ai/repo-context.md
- ai/architecture-index.md
- backend/README.md
- backend/app/collector.py
- backend/app/normalizers.py
- backend/app/storage.py
- backend/app/routes.py
- backend/app/payloads.py
- datos persistidos generados en la task anterior
Expected Files to Modify
- backend/app/normalizers.py
- backend/app/storage.py
- backend/app/routes.py
- backend/app/payloads.py
- backend/README.md
- opcionalmente documentacion tecnica relacionada si la claridad del historico necesita ajuste
Constraints
- No tocar frontend en esta task.
- No anadir nuevas fuentes externas.
- No introducir complejidad analitica alta.
- No hacer cambios destructivos.
- Mantener el resultado centrado en calidad de datos historicos.
Validation
- Los snapshots reales persistidos son consistentes y utiles.
- Los endpoints historicos reflejan correctamente el dato real almacenado.
- La distincion entre captura real y fallback queda razonablemente clara.
- El backend queda listo para una siguiente task de mejora visual o estadistica sobre datos reales.
Change Budget
- Preferir menos de 5 archivos modificados.
- Preferir menos de 180 lineas cambiadas.
Outcome
backend/app/normalizers.pyanadesnapshot_originysource_refal modelo normalizado para que la procedencia no se infiera de forma ambigua en historico.backend/app/snapshots.pyconserva esos campos en cada snapshot persistible.backend/app/storage.pymigra la tabla SQLite sin destruir datos, serializa ambos campos en las consultas historicas y backfilla referencias A2S registradas para snapshots ya existentes.backend/README.mddocumenta los nuevos metadatos historicos y el valor esperado para la captura real de Comunidad Hispana #01.
Validation Result
- Ejecutado: lectura de
list_latest_snapshots(),list_snapshot_history()ylist_server_history('comunidad-hispana-01')desde Python. - Resultado: los snapshots historicos exponen
snapshot_originconreal-a2socontrolled-fallbackysource_refcoherente. - Ejecutado fuera del sandbox:
python -m app.collector --source a2s --no-fallback. - Resultado: nuevo snapshot real persistido con
source_ref=a2s://152.114.195.174:7778,current_map=Remagen,players=0,max_players=100. - Endpoints verificados:
/api/servers/latest,/api/servers/historyy/api/servers/{id}/historydevuelven el snapshot real mas reciente con la nueva metadata de procedencia.
Decision Notes
- No se tocaron
routes.pynipayloads.pyporque ya reutilizan directamente los registros serializados de almacenamiento y heredaron la mejora sin cambios de contrato adicionales. - No se introdujo deduplicacion agresiva de snapshots porque dos capturas reales con distinto
captured_atsiguen siendo historico valido; el ajuste se centro en claridad y consistencia de procedencia.