Fix
This commit is contained in:
191
docs/rcon-data-capability-audit.md
Normal file
191
docs/rcon-data-capability-audit.md
Normal file
@@ -0,0 +1,191 @@
|
||||
# RCON Data Capability Audit
|
||||
|
||||
## Validation Date
|
||||
|
||||
- 2026-03-24
|
||||
|
||||
## Scope
|
||||
|
||||
Auditoria tecnica del alcance real de RCON en esta repo, separando con claridad:
|
||||
|
||||
- RCON directo implementado hoy en el backend
|
||||
- historico CRCON / scoreboard publico
|
||||
- metricas que solo serian posibles con captura propia de eventos o logs
|
||||
|
||||
No se implementa ninguna tabla, ruta, scoring ni captura adicional.
|
||||
|
||||
## Evidence Reviewed
|
||||
|
||||
- `backend/app/rcon_client.py`
|
||||
- `backend/app/providers/rcon_provider.py`
|
||||
- `backend/app/data_sources.py`
|
||||
- `backend/app/payloads.py`
|
||||
- `backend/README.md`
|
||||
- `docs/historical-crcon-source-discovery.md`
|
||||
- `docs/monthly-player-ranking-data-audit.md`
|
||||
- `docs/monthly-mvp-ranking-scoring-design.md`
|
||||
|
||||
## Current RCON Surface In This Repository
|
||||
|
||||
La implementacion RCON actual es minima y solo cubre estado live.
|
||||
|
||||
Capacidades confirmadas en codigo hoy:
|
||||
|
||||
- handshake `ServerConnect`
|
||||
- autenticacion `Login`
|
||||
- consulta `GetServerInformation`
|
||||
|
||||
No hay evidencia en la repo de otros comandos RCON ya integrados para:
|
||||
|
||||
- eventos de kill
|
||||
- detalle por arma
|
||||
- relaciones killer -> victim
|
||||
- teamkills por evento
|
||||
- destruccion de garrisons u OPs
|
||||
- historico de partidas cerradas
|
||||
|
||||
## What The Current Live Provider Exposes Today
|
||||
|
||||
El proveedor `RconLiveDataSource` solo normaliza estos campos para `/api/servers`:
|
||||
|
||||
- `external_server_id`
|
||||
- `server_name`
|
||||
- `status`
|
||||
- `players`
|
||||
- `max_players`
|
||||
- `current_map`
|
||||
- `region`
|
||||
- `source_name`
|
||||
- `snapshot_origin`
|
||||
- `source_ref`
|
||||
|
||||
Esto significa que RCON directo hoy ya alimenta de forma confirmada:
|
||||
|
||||
- disponibilidad online del servidor
|
||||
- nombre del servidor
|
||||
- numero de jugadores actual
|
||||
- capacidad maxima
|
||||
- mapa actual
|
||||
- metadata de procedencia del snapshot
|
||||
|
||||
## Data That Is Not Exposed By Direct RCON Today
|
||||
|
||||
Aunque la task pide revisar equipos, scoreboard actual y otros campos live, la
|
||||
repo no confirma que el proveedor actual los este devolviendo hoy.
|
||||
|
||||
No quedan expuestos en el snapshot live actual:
|
||||
|
||||
- composicion por equipos
|
||||
- scoreboard de jugadores en tiempo real
|
||||
- kills por jugador en la partida en curso
|
||||
- deaths por jugador en la partida en curso
|
||||
- support/combat/offense/defense live
|
||||
- teamkills live
|
||||
|
||||
Importante:
|
||||
|
||||
- esto no prueba que el protocolo HLL RCON no pueda ofrecer mas cosas
|
||||
- solo prueba que la implementacion actual de esta repo no las consulta ni las
|
||||
serializa
|
||||
|
||||
## Historical Boundary
|
||||
|
||||
La separacion entre live e historico queda clara en la repo:
|
||||
|
||||
- `get_live_data_source()` puede resolver `rcon`
|
||||
- `get_historical_data_source()` devuelve un placeholder `RconHistoricalDataSource`
|
||||
- ese proveedor historico lanza `RuntimeError("Historical RCON provider is not implemented yet.")`
|
||||
|
||||
Conclusion operativa:
|
||||
|
||||
- RCON esta operativo hoy para estado live de `/api/servers`
|
||||
- RCON no esta operativo hoy para ingesta historica
|
||||
- el historico reutilizable del proyecto sigue viniendo de CRCON / scoreboard publico
|
||||
|
||||
## Capability Matrix For Future MVP V2 Metrics
|
||||
|
||||
| Metrica / senal | RCON directo hoy en esta repo | Requeriria eventos/logs + persistencia | Estado actual |
|
||||
| --- | --- | --- | --- |
|
||||
| Estado del servidor | Si | No | Disponible |
|
||||
| Jugadores actuales totales | Si | No | Disponible |
|
||||
| Capacidad maxima | Si | No | Disponible |
|
||||
| Mapa actual | Si | No | Disponible |
|
||||
| Equipos live | No confirmado | Posiblemente no, depende de ampliar cliente | No expuesto hoy |
|
||||
| Scoreboard live por jugador | No confirmado | Posiblemente no, depende de ampliar cliente | No expuesto hoy |
|
||||
| Kills por arma | No | Si | Requiere pipeline nuevo |
|
||||
| Distincion artillery / tank / infantry | No | Si | Requiere pipeline nuevo |
|
||||
| Killer -> victim | No | Si | Requiere pipeline nuevo |
|
||||
| `most_killed` | No | Si | Requiere pipeline nuevo |
|
||||
| `death_by` | No | Si | Requiere pipeline nuevo |
|
||||
| Teamkills por evento | No | Si | Requiere pipeline nuevo |
|
||||
| Teamkills agregados por partida/mes | No desde RCON actual | Si | Requiere pipeline nuevo |
|
||||
| Garrisons destruidos | No confirmado | Si como minimo | No confirmado |
|
||||
| OPs destruidos | No confirmado | Si como minimo | No confirmado |
|
||||
| Otras metricas tacticas finas | No | Si | Requiere pipeline nuevo |
|
||||
| Partidas cerradas historicas | No | Si | No disponible hoy via RCON |
|
||||
|
||||
## What Can Feed An MVP V2 From RCON
|
||||
|
||||
Subset viable usando solo RCON directo ya implementado:
|
||||
|
||||
- ninguno de los componentes avanzados de scoring MVP
|
||||
- solo datos de presencia live del servidor, utiles para panel operativo pero no
|
||||
para ranking mensual
|
||||
|
||||
Subset viable si se amplia solo el cliente RCON pero sin pipeline historico:
|
||||
|
||||
- quiza mas detalle live si el protocolo ofrece comandos adicionales
|
||||
- aun asi no bastaria para un ranking mensual auditable, porque faltaria
|
||||
persistencia por evento o por partida cerrada
|
||||
|
||||
Subset viable si se construye una linea nueva de eventos/logs RCON:
|
||||
|
||||
- kills por arma
|
||||
- killer/victim
|
||||
- teamkills por evento
|
||||
- clasificacion artillery/tank/infantry
|
||||
- senales tacticas si el origen real las emite
|
||||
|
||||
Condiciones minimas para que eso sirva a un MVP V2:
|
||||
|
||||
- ampliar el cliente RCON con comandos o feeds adicionales reales
|
||||
- capturar eventos de forma continua fuera del request path HTTP
|
||||
- persistir historico propio por partida, jugador y evento
|
||||
- definir agregados reproducibles para mes y servidor
|
||||
|
||||
## Separation From CRCON / Public Scoreboard
|
||||
|
||||
La repo ya confirma que ciertas metricas avanzadas existen en CRCON publico,
|
||||
pero eso no debe confundirse con RCON directo.
|
||||
|
||||
La evidencia actual de CRCON/scoreboard publico incluye campos como:
|
||||
|
||||
- `kills_by_type`
|
||||
- `most_killed`
|
||||
- `death_by`
|
||||
- `weapons`
|
||||
- `death_by_weapons`
|
||||
|
||||
Eso pertenece al historico JSON publico ya documentado y no a la superficie
|
||||
RCON hoy implementada en `rcon_client.py`.
|
||||
|
||||
## Practical Conclusion
|
||||
|
||||
Para esta repo, la respuesta precisa hoy es:
|
||||
|
||||
- RCON directo sirve para estado live de servidores
|
||||
- RCON directo no sirve todavia para alimentar un MVP mensual V2
|
||||
- cualquier MVP V2 con armas, duelos, teamkills por evento o tacticas requiere
|
||||
una canalizacion nueva de eventos/logs y persistencia historica propia
|
||||
- garrisons y OPs siguen sin evidencia confirmada en la repo como metrica
|
||||
disponible por RCON
|
||||
|
||||
## Recommended Next Step
|
||||
|
||||
Antes de disenar scoring V2 sobre RCON, la siguiente decision tecnica correcta
|
||||
seria una task separada de discovery para definir:
|
||||
|
||||
- si el origen RCON real del servidor expone mas comandos aparte de `GetServerInformation`
|
||||
- si existe flujo de eventos reutilizable
|
||||
- que granularidad y frecuencia tendria la persistencia de esos eventos
|
||||
- que subset minimo merece convertirse en modelo historico propio
|
||||
Reference in New Issue
Block a user