262 lines
7.8 KiB
Markdown
262 lines
7.8 KiB
Markdown
# HLL Vietnam
|
|
|
|
HLL Vietnam es la base inicial del repositorio para una futura web de comunidad enfocada en la comunidad hispana de Discord del juego HLL Vietnam.
|
|
|
|
En esta primera fase, el proyecto se centra en una landing sencilla, limpia y profesional que sirva como punto de entrada para la comunidad. La implementacion actual utiliza HTML, CSS y JavaScript sin frameworks pesados para mantener una base facil de mantener y ampliar.
|
|
|
|
## Estado actual
|
|
|
|
- Landing inicial de comunidad.
|
|
- Estructura de repositorio preparada para crecer.
|
|
- Carpeta de backend reservada para una futura implementacion en Python.
|
|
- Carpeta `ai/` ya integrada como capa operativa para orquestacion por tasks y trabajo con Codex.
|
|
|
|
## Estructura del repositorio
|
|
|
|
```text
|
|
/
|
|
|-- README.md
|
|
|-- .gitignore
|
|
|-- AGENTS.md
|
|
|-- docs/
|
|
| |-- project-overview.md
|
|
| |-- roadmap.md
|
|
| `-- decisions.md
|
|
|-- frontend/
|
|
| |-- index.html
|
|
| |-- historico.html
|
|
| |-- Dockerfile
|
|
| |-- .dockerignore
|
|
| `-- assets/
|
|
| |-- css/
|
|
| |-- js/
|
|
| `-- img/
|
|
|-- backend/
|
|
| |-- README.md
|
|
| |-- requirements.txt
|
|
| |-- Dockerfile
|
|
| |-- .dockerignore
|
|
| |-- .env.example
|
|
| `-- app/
|
|
| `-- __init__.py
|
|
|-- ai/
|
|
| |-- README.md
|
|
| |-- architecture-index.md
|
|
| |-- repo-context.md
|
|
| |-- system-metrics.md
|
|
| |-- task-template.md
|
|
| |-- prompts/
|
|
| | `-- plan-feature.md
|
|
| |-- orchestrator/
|
|
| | `-- README.md
|
|
| `-- tasks/
|
|
| |-- pending/
|
|
| |-- in-progress/
|
|
| `-- done/
|
|
|-- docker-compose.yml
|
|
`-- scripts/
|
|
```
|
|
|
|
## Backend futuro
|
|
|
|
El backend principal esta previsto en Python, pero en esta fase no se introduce infraestructura final de produccion. La base actual prioriza un bootstrap pequeno, una persistencia local clara y una evolucion controlada.
|
|
|
|
## Como abrir el frontend localmente
|
|
|
|
1. Ve a la carpeta `frontend/`.
|
|
2. Abre `index.html` directamente en el navegador.
|
|
|
|
No hace falta servidor para esta primera version.
|
|
|
|
## Ejecucion con Docker
|
|
|
|
El repositorio ya incluye:
|
|
|
|
- `backend/Dockerfile`
|
|
- `frontend/Dockerfile`
|
|
- `docker-compose.yml`
|
|
- `backend/.env.example`
|
|
|
|
Seleccion de proveedor por entorno hoy:
|
|
|
|
- desarrollo:
|
|
- `HLL_BACKEND_LIVE_DATA_SOURCE=rcon`
|
|
- `HLL_BACKEND_HISTORICAL_DATA_SOURCE=rcon`
|
|
- produccion realista en esta fase:
|
|
- `HLL_BACKEND_LIVE_DATA_SOURCE=rcon`
|
|
- `HLL_BACKEND_HISTORICAL_DATA_SOURCE=rcon`
|
|
|
|
Esto refleja la politica operativa actual: RCON es la fuente primaria para
|
|
live e historico. El scoreboard publico queda como fallback historico cuando
|
|
RCON falla, no cubre una operacion concreta o aun no tiene cobertura suficiente.
|
|
|
|
Modo normal recomendado:
|
|
|
|
- levantar solo `backend` + `frontend`
|
|
- mantener `historical-runner` y `rcon-historical-worker` como servicios
|
|
avanzados bajo demanda
|
|
- mantener Comunidad Hispana #03 fuera de los targets RCON por defecto
|
|
- dejar Elo/MMR y la materializacion historica compleja en pausa operativa
|
|
hasta una reintroduccion explicita
|
|
|
|
Primer arranque:
|
|
|
|
```powershell
|
|
docker compose up --build
|
|
```
|
|
|
|
Con la configuracion actual, ese comando levanta solo `backend` y `frontend`.
|
|
Los workers historicos estan en el perfil Compose `advanced` y no forman parte
|
|
del arranque normal.
|
|
|
|
Accesos locales esperados:
|
|
|
|
- frontend: `http://localhost:8080`
|
|
- backend: `http://localhost:8000`
|
|
- health del backend: `http://localhost:8000/health`
|
|
|
|
Persistencia:
|
|
|
|
- el SQLite historico se conserva en `backend/data/hll_vietnam_dev.sqlite3`
|
|
- los snapshots JSON se conservan en `backend/data/snapshots/`
|
|
- `docker-compose.yml` monta `./backend/data` dentro del contenedor en `/app/data`
|
|
|
|
Reinicio normal:
|
|
|
|
```powershell
|
|
docker compose up -d
|
|
```
|
|
|
|
Parada:
|
|
|
|
```powershell
|
|
docker compose down
|
|
```
|
|
|
|
Recreacion de imagenes tras cambios:
|
|
|
|
```powershell
|
|
docker compose up --build
|
|
```
|
|
|
|
## Runbook de proveedores
|
|
|
|
Verificacion minima del proveedor activo:
|
|
|
|
```powershell
|
|
Invoke-WebRequest http://localhost:8000/health | Select-Object -Expand Content
|
|
```
|
|
|
|
La respuesta incluye `live_data_source` y `historical_data_source`.
|
|
|
|
Modo desarrollo recomendado:
|
|
|
|
```powershell
|
|
docker compose up --build
|
|
```
|
|
|
|
Modo live con RCON en Docker Compose:
|
|
|
|
```powershell
|
|
$env:HLL_BACKEND_LIVE_DATA_SOURCE='rcon'
|
|
$env:HLL_BACKEND_HISTORICAL_DATA_SOURCE='rcon'
|
|
$env:HLL_BACKEND_RCON_TARGETS='[
|
|
{
|
|
"name": "Comunidad Hispana #01",
|
|
"host": "203.0.113.10",
|
|
"port": 28015,
|
|
"password": "replace-me",
|
|
"external_server_id": "comunidad-hispana-01",
|
|
"region": "ES",
|
|
"game_port": 7777,
|
|
"query_port": 7778
|
|
}
|
|
]'
|
|
docker compose up -d backend frontend
|
|
```
|
|
|
|
Buenas practicas:
|
|
|
|
- no versionar credenciales reales en `backend/.env.example`
|
|
- preferir exportarlas como variables de entorno del host o del secreto del
|
|
despliegue
|
|
- mantener `HLL_BACKEND_HISTORICAL_DATA_SOURCE=rcon` como valor normal y usar
|
|
`public-scoreboard` solo como fallback historico controlado
|
|
- no reintroducir Comunidad Hispana #03 en `HLL_BACKEND_RCON_TARGETS` salvo que
|
|
una task nueva valide su disponibilidad
|
|
|
|
## Operaciones historicas avanzadas con Docker
|
|
|
|
Estas operaciones quedan disponibles para uso explicito, pero no son parte del
|
|
arranque recomendado. La ruta normal de despliegue es `backend` + `frontend`.
|
|
El codigo, las migraciones, los snapshots historicos y Elo/MMR se conservan en
|
|
la repo, pero Elo/MMR y la materializacion historica compleja quedan pausados
|
|
operativamente en esta fase.
|
|
|
|
Refresh historico puntual dentro del contenedor backend:
|
|
|
|
```powershell
|
|
docker compose exec backend python -m app.historical_ingestion refresh
|
|
```
|
|
|
|
Bootstrap o backfill historico:
|
|
|
|
```powershell
|
|
docker compose exec backend python -m app.historical_ingestion bootstrap
|
|
```
|
|
|
|
Regeneracion puntual de snapshots mediante refresh controlado:
|
|
|
|
```powershell
|
|
docker compose exec backend python -m app.historical_runner --max-runs 1
|
|
```
|
|
|
|
Automatizacion horaria avanzada:
|
|
|
|
```powershell
|
|
docker compose --profile advanced up -d backend historical-runner frontend
|
|
```
|
|
|
|
`historical-runner` es un servicio Compose separado que ejecuta
|
|
`python -m app.historical_runner --hourly`. Sigue disponible para tareas
|
|
historicas explicitas, pero no se recomienda como requisito normal de
|
|
despliegue. Los targets RCON por defecto solo incluyen `comunidad-hispana-01`
|
|
y `comunidad-hispana-02`; `comunidad-hispana-03` queda deshabilitado en la
|
|
configuracion por defecto porque ya no es una fuente operativa vigente.
|
|
|
|
Verificacion minima:
|
|
|
|
- `docker compose ps historical-runner`
|
|
- `docker compose logs -f historical-runner`
|
|
- revisar `generated_at` en `backend/data/snapshots/`
|
|
|
|
## Arquitectura historica RCON-first
|
|
|
|
La linea historica actual usa RCON como fuente primaria. El flujo previsto es:
|
|
|
|
- captura de sesiones RCON para cobertura, frescura y ventanas competitivas
|
|
- ingesta de AdminLog mediante `app.rcon_admin_log_ingestion`
|
|
- parsing de eventos AdminLog hacia eventos normalizados
|
|
- almacenamiento en tablas `rcon_admin_log_*` y `rcon_historical_*`
|
|
- materializacion de partidas cerradas y estadisticas de jugador desde eventos RCON
|
|
- enriquecimiento opcional con snapshots de perfil de jugador, sin tratarlos
|
|
como hechos autoritativos de una partida
|
|
|
|
El scoreboard publico queda limitado a enriquecimiento, links confiables o
|
|
fallback historico cuando RCON falla, no tiene cobertura suficiente o no cubre
|
|
una operacion concreta. Elo/MMR sigue pausado y Comunidad Hispana #03 permanece
|
|
fuera de los targets RCON por defecto.
|
|
|
|
Comandos manuales RCON dentro del contenedor backend:
|
|
|
|
```powershell
|
|
docker compose exec backend python -m app.rcon_admin_log_ingestion --minutes 1440
|
|
docker compose exec backend python -m app.rcon_historical_worker capture
|
|
```
|
|
|
|
Si se prefiere operar fuera de Docker, el backend sigue pudiendo arrancar localmente con `python -m app.main` desde `backend/`.
|
|
|
|
## Evolucion prevista
|
|
|
|
La capa inspirada en `ai-dev-platform-template` ya esta integrada y adaptada al contexto real de HLL Vietnam. Las siguientes iteraciones deben centrarse en usarla para planificar y ejecutar tasks reales del producto sin ampliar alcance fuera de ese flujo.
|