Complete TASK-072 RCON provider setup

This commit is contained in:
devRaGonSa
2026-03-24 10:42:34 +01:00
parent b68839ed97
commit 0ac05aed00
7 changed files with 412 additions and 19 deletions

View File

@@ -0,0 +1,74 @@
# TASK-072-rcon-provider-for-production
## Goal
Implementar un proveedor RCON para producción que permita usar acceso directo a los servidores como fuente principal de datos live e histórica, seleccionado por configuración sin alterar la UI.
## Context
La intención del proyecto es desplegar la web con acceso a los servidores mediante RCON. Eso debe convivir con el modo dev actual. El proveedor RCON debe quedar integrado en la nueva abstracción de fuentes y seleccionable por entorno.
## Steps
1. Revisar la abstracción de proveedor de datos ya creada.
2. Diseñar el proveedor RCON y la configuración necesaria para usarlo en producción.
3. Definir claramente qué capacidades cubrirá esta primera versión del proveedor RCON:
- estado live de servidores
- ingestión histórica o enriquecida, según lo que la integración permita hoy
4. Implementar el proveedor RCON sin romper el proveedor actual.
5. Añadir configuración por entorno para elegir:
- public-scoreboard en dev
- rcon en prod
6. Documentar variables necesarias, credenciales y limitaciones de la integración.
7. Mantener los contratos backend → frontend estables.
8. No introducir todavía una V2 del MVP ni persistencia extra de armas/duelos salvo que sea estrictamente necesario para dejar la integración operativa.
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/payloads.py
- backend/app/routes.py
- backend/app/source_provider.py
- documentación o librerías ya presentes para RCON si existen en la repo
## Expected Files to Modify
- backend/app/config.py
- backend/app/historical_ingestion.py
- backend/app/payloads.py
- backend/app/routes.py
- opcionalmente nuevos módulos, por ejemplo:
- backend/app/providers/rcon_provider.py
- backend/app/rcon_client.py
- backend/README.md
- opcionalmente backend/.env.example o backend.env.example
## Constraints
- No romper el modo dev actual.
- No exponer credenciales en la repo.
- No cambiar el contrato visible de la UI.
- No hacer cambios destructivos.
- Mantener el trabajo centrado en el proveedor RCON de producción.
## Validation
- Existe un proveedor RCON seleccionable por configuración.
- El backend puede correr en modo dev con la fuente actual y en modo prod con RCON.
- La documentación deja claras variables y límites.
- 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
- Se implemento `backend/app/rcon_client.py` con conexion TCP y cifrado XOR minimo para comandos HLL RCON.
- Se anadio `backend/app/providers/rcon_provider.py` como proveedor live seleccionable por configuracion.
- `/health` ahora expone `live_data_source` y `historical_data_source` para verificar el proveedor activo.
- Se mantuvo el modo dev actual y se documento la limitacion actual: el historico sigue dependiendo de `public-scoreboard`.
## Validation Notes
- `python -m compileall backend/app` completo sin errores.
- `build_health_payload()` devuelve correctamente los proveedores activos por defecto.
- La repo no contiene una canalizacion historica basada en eventos/logs RCON; por eso la parte historica RCON sigue quedando documentada como no operativa en esta version.