chore: disable server3 defaults and simplify deployment
This commit is contained in:
36
README.md
36
README.md
@@ -91,12 +91,25 @@ estado live de `/api/servers`, pero el histórico sigue dependiendo del
|
|||||||
scoreboard público porque no hay todavÃa una canalización persistente basada
|
scoreboard público porque no hay todavÃa una canalización persistente basada
|
||||||
en eventos/logs RCON.
|
en eventos/logs RCON.
|
||||||
|
|
||||||
|
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:
|
Primer arranque:
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
docker compose up --build
|
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:
|
Accesos locales esperados:
|
||||||
|
|
||||||
- frontend: `http://localhost:8080`
|
- frontend: `http://localhost:8080`
|
||||||
@@ -170,8 +183,16 @@ Buenas practicas:
|
|||||||
despliegue
|
despliegue
|
||||||
- mantener `HLL_BACKEND_HISTORICAL_DATA_SOURCE=public-scoreboard` hasta tener
|
- mantener `HLL_BACKEND_HISTORICAL_DATA_SOURCE=public-scoreboard` hasta tener
|
||||||
una ingesta historica RCON realmente persistida
|
una ingesta historica RCON realmente persistida
|
||||||
|
- no reintroducir Comunidad Hispana #03 en `HLL_BACKEND_RCON_TARGETS` salvo que
|
||||||
|
una task nueva valide su disponibilidad
|
||||||
|
|
||||||
## Operaciones historicas con Docker
|
## 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:
|
Refresh historico puntual dentro del contenedor backend:
|
||||||
|
|
||||||
@@ -191,17 +212,18 @@ Regeneracion puntual de snapshots mediante refresh controlado:
|
|||||||
docker compose exec backend python -m app.historical_runner --max-runs 1
|
docker compose exec backend python -m app.historical_runner --max-runs 1
|
||||||
```
|
```
|
||||||
|
|
||||||
Automatizacion horaria recomendada:
|
Automatizacion horaria avanzada:
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
docker compose up -d backend historical-runner frontend
|
docker compose --profile advanced up -d backend historical-runner frontend
|
||||||
```
|
```
|
||||||
|
|
||||||
`historical-runner` es un servicio Compose separado que ejecuta
|
`historical-runner` es un servicio Compose separado que ejecuta
|
||||||
`python -m app.historical_runner --hourly`, refresca el historico de
|
`python -m app.historical_runner --hourly`. Sigue disponible para tareas
|
||||||
`comunidad-hispana-01`, `comunidad-hispana-02` y `comunidad-hispana-03`, y
|
historicas explicitas, pero no se recomienda como requisito normal de
|
||||||
regenera snapshots al terminar cada refresh correcto sin acoplar ese bucle al
|
despliegue. Los targets RCON por defecto solo incluyen `comunidad-hispana-01`
|
||||||
proceso HTTP del backend.
|
y `comunidad-hispana-02`; `comunidad-hispana-03` queda deshabilitado en la
|
||||||
|
configuracion por defecto porque ya no es una fuente operativa vigente.
|
||||||
|
|
||||||
Verificacion minima:
|
Verificacion minima:
|
||||||
|
|
||||||
|
|||||||
@@ -76,5 +76,7 @@ Community website repository with a static landing in the current phase and a pl
|
|||||||
- The V1 monthly MVP scoring proposal for persisted historical player metrics is documented in `docs/monthly-mvp-ranking-scoring-design.md`.
|
- The V1 monthly MVP scoring proposal for persisted historical player metrics is documented in `docs/monthly-mvp-ranking-scoring-design.md`.
|
||||||
- The audited boundary between direct live RCON and future event-driven RCON metrics is documented in `docs/rcon-data-capability-audit.md`.
|
- The audited boundary between direct live RCON and future event-driven RCON metrics is documented in `docs/rcon-data-capability-audit.md`.
|
||||||
- The first V2 player-event foundation now lives in dedicated `player_event_*` backend modules and starts from CRCON match-detail summaries, not from live RCON.
|
- The first V2 player-event foundation now lives in dedicated `player_event_*` backend modules and starts from CRCON match-detail summaries, not from live RCON.
|
||||||
|
- The default operational deployment is simplified to `backend` + `frontend`; historical workers and RCON historical capture are advanced/manual services.
|
||||||
|
- Comunidad Hispana #03 is disabled from default RCON targets, while existing historical/Elo code and persisted data remain available for explicit future reintroduction.
|
||||||
- Frontend data consumption should remain progressive, endpoint by endpoint, with static fallbacks preserved during migration.
|
- Frontend data consumption should remain progressive, endpoint by endpoint, with static fallbacks preserved during migration.
|
||||||
- The frontend integration strategy is documented in `docs/frontend-data-consumption-plan.md`.
|
- The frontend integration strategy is documented in `docs/frontend-data-consumption-plan.md`.
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ This repository is in foundation stage. The objective is to grow in a controlled
|
|||||||
- Backend: not implemented yet, but planned in Python
|
- Backend: not implemented yet, but planned in Python
|
||||||
- AI Platform: integrated to coordinate planning and task execution
|
- AI Platform: integrated to coordinate planning and task execution
|
||||||
- Product goal in current phase: maintain a clean landing and repository structure
|
- Product goal in current phase: maintain a clean landing and repository structure
|
||||||
|
- Default deployment: `backend` + `frontend`; historical workers are advanced/manual only.
|
||||||
|
- Comunidad Hispana #03 is not part of default RCON targets. Historical/Elo code and persisted data are preserved but paused operationally.
|
||||||
|
|
||||||
## Repository Areas
|
## Repository Areas
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,158 @@
|
|||||||
|
---
|
||||||
|
id: TASK-108
|
||||||
|
title: Disable server #03 defaults and simplify deployment
|
||||||
|
status: done
|
||||||
|
type: documentation
|
||||||
|
team: PM
|
||||||
|
supporting_teams:
|
||||||
|
- Backend Senior
|
||||||
|
- Arquitecto Python
|
||||||
|
roadmap_item: foundation
|
||||||
|
priority: high
|
||||||
|
branch: chore/disable-server3-defaults
|
||||||
|
---
|
||||||
|
|
||||||
|
# TASK-108 - Disable server #03 defaults and simplify deployment
|
||||||
|
|
||||||
|
## Goal
|
||||||
|
|
||||||
|
Remove Comunidad Hispana server #03 from the default operational deployment/configuration path and document the simplified normal mode for HLL Vietnam.
|
||||||
|
|
||||||
|
This task must keep the existing Elo/MMR, historical ingestion, migrations, and persisted data available in the repository. The goal is to stop treating server #03 and complex historical/Elo work as default operational requirements for the current phase, not to delete that work.
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
The AI Platform integration has just been updated and merged into `main`. The project now needs a simpler operational deployment path because the previous Elo/MMR and historical materialization work became too complex for the current phase, and Comunidad Hispana server #03 is no longer relevant because the server appears to have disappeared.
|
||||||
|
|
||||||
|
The recommended default deployment path should be `backend` + `frontend`. Historical workers and RCON historical services may remain available for explicit advanced use, but they should not be part of the recommended normal startup.
|
||||||
|
|
||||||
|
Preserve the current product identity: Spanish-speaking HLL Vietnam community, military/Vietnam/tactical/sober visual direction and controlled repository evolution.
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
|
||||||
|
1. Create or switch to branch `chore/disable-server3-defaults`.
|
||||||
|
2. Inspect all files listed in **Files to Read First** before changing anything.
|
||||||
|
3. Locate every default deployment/configuration reference that treats Comunidad Hispana server #03 as part of the normal RCON operational path.
|
||||||
|
4. Remove Comunidad Hispana server #03 from default RCON targets in `docker-compose.yml`.
|
||||||
|
5. Ensure the default operational deployment path is clearly `backend` + `frontend`.
|
||||||
|
6. Keep `historical-runner` and `rcon-historical-worker` available only as explicit/advanced services, not part of the recommended normal startup.
|
||||||
|
7. Update `README.md` deployment/runbook documentation accordingly.
|
||||||
|
8. Update any relevant docs to state:
|
||||||
|
- server #03 is disabled or removed from defaults;
|
||||||
|
- Elo/MMR and complex historical ranking/materialization are paused for now;
|
||||||
|
- code and data are not deleted in this task;
|
||||||
|
- rollback or reintroduction remains possible later.
|
||||||
|
9. Do not remove code, migrations, persisted data, or database schemas.
|
||||||
|
10. Do not change live server #01 or #02 definitions except where required for formatting or consistency.
|
||||||
|
11. Keep secrets as placeholders or environment variables; do not add real passwords.
|
||||||
|
12. Validate the change with the checks below.
|
||||||
|
13. Move this task file from `ai/tasks/pending/` to `ai/tasks/done/` when validation is complete, or to `ai/tasks/review/` only if human/orchestrator review is explicitly required.
|
||||||
|
14. Commit and push the completed work. Do not leave completed work only in local.
|
||||||
|
|
||||||
|
## Files to Read First
|
||||||
|
|
||||||
|
- `ai/architecture-index.md`
|
||||||
|
- `ai/repo-context.md`
|
||||||
|
- `docker-compose.yml`
|
||||||
|
- `README.md`
|
||||||
|
- `backend/.env.example`
|
||||||
|
- `backend/app/config.py`
|
||||||
|
- `backend/app/data_sources.py`
|
||||||
|
- `backend/app/historical_runner.py`
|
||||||
|
- `backend/app/rcon_historical_worker.py` if present
|
||||||
|
- `docs/`
|
||||||
|
|
||||||
|
## Expected Files to Modify
|
||||||
|
|
||||||
|
- `docker-compose.yml`
|
||||||
|
- `README.md`
|
||||||
|
- possibly `backend/.env.example`
|
||||||
|
- possibly docs under `docs/`
|
||||||
|
- possibly `ai/repo-context.md`
|
||||||
|
- possibly `ai/architecture-index.md`
|
||||||
|
- this task file, moved from `ai/tasks/pending/` to `ai/tasks/done/` or `ai/tasks/review/` according to the AI Platform workflow
|
||||||
|
|
||||||
|
If additional files become necessary, explain why in the task outcome and commit message.
|
||||||
|
|
||||||
|
## Expected Files Not to Modify
|
||||||
|
|
||||||
|
- `frontend/**`, unless there is a direct hardcoded visible reference to server #03 that must be removed
|
||||||
|
- database migrations
|
||||||
|
- persisted data
|
||||||
|
- Elo/MMR algorithm implementation files
|
||||||
|
- unrelated backend modules
|
||||||
|
|
||||||
|
## Constraints
|
||||||
|
|
||||||
|
- Keep the change narrow and operational.
|
||||||
|
- Do not delete Elo/MMR code.
|
||||||
|
- Do not delete historical ingestion code.
|
||||||
|
- Do not delete database migrations or persisted data.
|
||||||
|
- Do not alter database schemas.
|
||||||
|
- Do not introduce unnecessary frameworks or dependencies.
|
||||||
|
- Do not build new backend functionality.
|
||||||
|
- Do not change frontend behavior unless a visible server #03 default reference is directly found and must be adjusted.
|
||||||
|
- Do not modify unrelated files.
|
||||||
|
- Preserve HLL Vietnam project identity.
|
||||||
|
- Keep secrets as placeholders or environment variables; never add real credentials.
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
Before completing the task ensure:
|
||||||
|
|
||||||
|
- Run `git status`.
|
||||||
|
- Validate that `docker-compose.yml` remains syntactically valid YAML if a YAML parser is available.
|
||||||
|
- Run `powershell -ExecutionPolicy Bypass -File scripts/run-integration-tests.ps1`.
|
||||||
|
- Confirm `backend/runtime/` is not created or committed.
|
||||||
|
- Confirm server #03 is no longer present in default RCON targets.
|
||||||
|
- Confirm server #01 and server #02 remain present.
|
||||||
|
- Confirm no Elo/MMR code was deleted.
|
||||||
|
- Confirm no historical ingestion code was deleted.
|
||||||
|
- Confirm no database migrations, persisted data, or schema definitions were removed.
|
||||||
|
- Confirm no frontend behavior was unintentionally changed.
|
||||||
|
- Review `git diff --name-only` and confirm changed files match the expected scope.
|
||||||
|
|
||||||
|
If any validation cannot be run, document the reason in the outcome before moving the task.
|
||||||
|
|
||||||
|
## Commit And Push Requirements
|
||||||
|
|
||||||
|
1. Run validation before committing.
|
||||||
|
2. Run `git status`.
|
||||||
|
3. Stage only intended files.
|
||||||
|
4. Commit with a clear message, for example:
|
||||||
|
|
||||||
|
```text
|
||||||
|
chore: disable server3 defaults and simplify deployment
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Push branch `chore/disable-server3-defaults` to `origin`.
|
||||||
|
|
||||||
|
Do not leave completed work only in local.
|
||||||
|
|
||||||
|
## Outcome
|
||||||
|
|
||||||
|
- Removed Comunidad Hispana #03 from default RCON targets in `docker-compose.yml` and `backend/.env.example`; Comunidad Hispana #01 and #02 remain present.
|
||||||
|
- Simplified the recommended default deployment to `backend` + `frontend`. `docker compose up --build` now resolves only those services because historical workers are behind the `advanced` profile.
|
||||||
|
- Kept `historical-runner` and `rcon-historical-worker` available for explicit advanced use via `docker compose --profile advanced ...`.
|
||||||
|
- Paused Elo/MMR and complex historical materialization in documentation without deleting code, migrations, schemas, snapshots or persisted data.
|
||||||
|
- Changed backend historical defaults to `public-scoreboard` for normal operation while preserving RCON historical code for explicit advanced use.
|
||||||
|
- Updated root README, backend README, AI context and the decision log so future work does not treat #03 or historical/Elo automation as the default path.
|
||||||
|
|
||||||
|
Validation performed:
|
||||||
|
|
||||||
|
- `docker compose config --services` returned only `backend` and `frontend` for the default profile.
|
||||||
|
- Python YAML parser validation was skipped because `PyYAML` is not installed; Compose config validation succeeded instead.
|
||||||
|
- `powershell -ExecutionPolicy Bypass -File scripts/run-integration-tests.ps1` passed and reported no product integration tests configured for this platform-only scope.
|
||||||
|
- Confirmed `backend/runtime/` is not present.
|
||||||
|
- Reviewed `git diff --name-only`; modified files match the expected operational/documentation scope plus backend config default alignment.
|
||||||
|
- Confirmed no frontend files, migrations, persisted data, Elo/MMR implementation files, historical ingestion implementation files, or database schemas were removed.
|
||||||
|
|
||||||
|
Follow-up:
|
||||||
|
|
||||||
|
- If Comunidad Hispana #03 becomes available again, create a separate validation/reintroduction task instead of restoring it as a default target directly.
|
||||||
|
|
||||||
|
## Change Budget
|
||||||
|
|
||||||
|
- Prefer fewer than 5 modified files.
|
||||||
|
- Prefer changes under 200 lines when feasible.
|
||||||
|
- Split the work into follow-up tasks if limits are exceeded.
|
||||||
@@ -4,9 +4,9 @@ HLL_BACKEND_STORAGE_PATH=/app/data/hll_vietnam_dev.sqlite3
|
|||||||
HLL_BACKEND_ALLOWED_ORIGINS=http://127.0.0.1:8080,http://localhost:8080
|
HLL_BACKEND_ALLOWED_ORIGINS=http://127.0.0.1:8080,http://localhost:8080
|
||||||
HLL_BACKEND_REFRESH_INTERVAL_SECONDS=120
|
HLL_BACKEND_REFRESH_INTERVAL_SECONDS=120
|
||||||
HLL_BACKEND_LIVE_DATA_SOURCE=rcon
|
HLL_BACKEND_LIVE_DATA_SOURCE=rcon
|
||||||
HLL_BACKEND_HISTORICAL_DATA_SOURCE=rcon
|
HLL_BACKEND_HISTORICAL_DATA_SOURCE=public-scoreboard
|
||||||
HLL_BACKEND_RCON_TIMEOUT_SECONDS=20
|
HLL_BACKEND_RCON_TIMEOUT_SECONDS=20
|
||||||
HLL_BACKEND_RCON_TARGETS=[{"name":"Comunidad Hispana #01","slug":"comunidad-hispana-01","external_server_id":"comunidad-hispana-01","host":"152.114.195.174","port":7779,"password":"replace-me-01","source_name":"community-hispana-rcon","region":"ES","game_port":null,"query_port":null},{"name":"Comunidad Hispana #02","slug":"comunidad-hispana-02","external_server_id":"comunidad-hispana-02","host":"152.114.195.150","port":7879,"password":"replace-me-02","source_name":"community-hispana-rcon","region":"ES","game_port":null,"query_port":null},{"name":"Comunidad Hispana #03","slug":"comunidad-hispana-03","external_server_id":"comunidad-hispana-03","host":"5.196.78.45","port":27230,"password":"replace-me-03","source_name":"community-hispana-rcon","region":"ES","game_port":null,"query_port":null}]
|
HLL_BACKEND_RCON_TARGETS=[{"name":"Comunidad Hispana #01","slug":"comunidad-hispana-01","external_server_id":"comunidad-hispana-01","host":"152.114.195.174","port":7779,"password":"replace-me-01","source_name":"community-hispana-rcon","region":"ES","game_port":null,"query_port":null},{"name":"Comunidad Hispana #02","slug":"comunidad-hispana-02","external_server_id":"comunidad-hispana-02","host":"152.114.195.150","port":7879,"password":"replace-me-02","source_name":"community-hispana-rcon","region":"ES","game_port":null,"query_port":null}]
|
||||||
HLL_HISTORICAL_CRCON_PAGE_SIZE=50
|
HLL_HISTORICAL_CRCON_PAGE_SIZE=50
|
||||||
HLL_HISTORICAL_CRCON_TIMEOUT_SECONDS=15
|
HLL_HISTORICAL_CRCON_TIMEOUT_SECONDS=15
|
||||||
HLL_HISTORICAL_CRCON_DETAIL_WORKERS=8
|
HLL_HISTORICAL_CRCON_DETAIL_WORKERS=8
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ Valores soportados en esta fase:
|
|||||||
Defaults actuales:
|
Defaults actuales:
|
||||||
|
|
||||||
- `HLL_BACKEND_LIVE_DATA_SOURCE=rcon`
|
- `HLL_BACKEND_LIVE_DATA_SOURCE=rcon`
|
||||||
- `HLL_BACKEND_HISTORICAL_DATA_SOURCE=rcon`
|
- `HLL_BACKEND_HISTORICAL_DATA_SOURCE=public-scoreboard`
|
||||||
|
|
||||||
La seleccion efectiva se resuelve en `app/data_sources.py` y en adapters
|
La seleccion efectiva se resuelve en `app/data_sources.py` y en adapters
|
||||||
dedicados dentro de `app/providers/`:
|
dedicados dentro de `app/providers/`:
|
||||||
@@ -399,8 +399,12 @@ Runbook operativo minimo:
|
|||||||
|
|
||||||
- modo recomendado por defecto:
|
- modo recomendado por defecto:
|
||||||
- `HLL_BACKEND_LIVE_DATA_SOURCE=rcon`
|
- `HLL_BACKEND_LIVE_DATA_SOURCE=rcon`
|
||||||
- `HLL_BACKEND_HISTORICAL_DATA_SOURCE=rcon`
|
- `HLL_BACKEND_HISTORICAL_DATA_SOURCE=public-scoreboard`
|
||||||
- definir `HLL_BACKEND_RCON_TARGETS` fuera de la repo
|
- usar solo `comunidad-hispana-01` y `comunidad-hispana-02` en los targets
|
||||||
|
RCON por defecto
|
||||||
|
- modo historico/RCON avanzado:
|
||||||
|
- iniciar workers solo de forma explicita
|
||||||
|
- no reintroducir `comunidad-hispana-03` salvo validacion nueva
|
||||||
- override legacy completo:
|
- override legacy completo:
|
||||||
- `HLL_BACKEND_LIVE_DATA_SOURCE=a2s`
|
- `HLL_BACKEND_LIVE_DATA_SOURCE=a2s`
|
||||||
- `HLL_BACKEND_HISTORICAL_DATA_SOURCE=public-scoreboard`
|
- `HLL_BACKEND_HISTORICAL_DATA_SOURCE=public-scoreboard`
|
||||||
@@ -1211,8 +1215,8 @@ Flags utiles del runner:
|
|||||||
- `--retry-delay 10` para bajar la espera entre fallos
|
- `--retry-delay 10` para bajar la espera entre fallos
|
||||||
- `--max-runs 1` para una validacion puntual sin bucle indefinido
|
- `--max-runs 1` para una validacion puntual sin bucle indefinido
|
||||||
|
|
||||||
Para dejar automatizado el refresh historico horario de los tres servidores del
|
Para dejar automatizado el refresh historico horario en local, el comando
|
||||||
proyecto en local, el comando recomendado es:
|
avanzado sigue disponible:
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
python -m app.historical_runner --hourly
|
python -m app.historical_runner --hourly
|
||||||
@@ -1250,15 +1254,16 @@ Operativa local minima:
|
|||||||
- `backend/data/snapshots/comunidad-hispana-03/weekly-kills.json`
|
- `backend/data/snapshots/comunidad-hispana-03/weekly-kills.json`
|
||||||
- `backend/data/snapshots/all-servers/monthly-kills.json`
|
- `backend/data/snapshots/all-servers/monthly-kills.json`
|
||||||
|
|
||||||
Operativa minima con Docker Compose:
|
Operativa avanzada con Docker Compose:
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
docker compose up -d backend historical-runner frontend
|
docker compose --profile advanced up -d backend historical-runner frontend
|
||||||
```
|
```
|
||||||
|
|
||||||
El servicio `historical-runner` usa el mismo volumen persistente `./backend/data`
|
El servicio `historical-runner` usa el mismo volumen persistente `./backend/data`
|
||||||
y ejecuta `python -m app.historical_runner --hourly` como bucle operativo
|
y ejecuta `python -m app.historical_runner --hourly` como bucle operativo
|
||||||
dedicado, sin mezclar el scheduler con el proceso HTTP principal.
|
dedicado, sin mezclar el scheduler con el proceso HTTP principal. No forma
|
||||||
|
parte del despliegue normal, que queda limitado a `backend` + `frontend`.
|
||||||
|
|
||||||
En frontend, la landing ya no arranca con cards fake estaticas para servidores:
|
En frontend, la landing ya no arranca con cards fake estaticas para servidores:
|
||||||
|
|
||||||
@@ -1340,7 +1345,7 @@ Comprobaciones utiles con Compose:
|
|||||||
Compose para captura prospectiva RCON:
|
Compose para captura prospectiva RCON:
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
docker compose up -d rcon-historical-worker
|
docker compose --profile advanced up -d rcon-historical-worker
|
||||||
docker compose logs -f rcon-historical-worker
|
docker compose logs -f rcon-historical-worker
|
||||||
docker compose exec backend python -m app.rcon_historical_worker capture
|
docker compose exec backend python -m app.rcon_historical_worker capture
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ DEFAULT_PORT = 8000
|
|||||||
DEFAULT_STORAGE_FILENAME = "hll_vietnam_dev.sqlite3"
|
DEFAULT_STORAGE_FILENAME = "hll_vietnam_dev.sqlite3"
|
||||||
DEFAULT_REFRESH_INTERVAL_SECONDS = 300
|
DEFAULT_REFRESH_INTERVAL_SECONDS = 300
|
||||||
DEFAULT_LIVE_DATA_SOURCE = "rcon"
|
DEFAULT_LIVE_DATA_SOURCE = "rcon"
|
||||||
DEFAULT_HISTORICAL_DATA_SOURCE = "rcon"
|
DEFAULT_HISTORICAL_DATA_SOURCE = "public-scoreboard"
|
||||||
DEFAULT_RCON_TIMEOUT_SECONDS = 20.0
|
DEFAULT_RCON_TIMEOUT_SECONDS = 20.0
|
||||||
DEFAULT_HISTORICAL_CRCON_PAGE_SIZE = 50
|
DEFAULT_HISTORICAL_CRCON_PAGE_SIZE = 50
|
||||||
DEFAULT_HISTORICAL_CRCON_TIMEOUT_SECONDS = 15.0
|
DEFAULT_HISTORICAL_CRCON_TIMEOUT_SECONDS = 15.0
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ services:
|
|||||||
- ./backend/.env.example
|
- ./backend/.env.example
|
||||||
environment:
|
environment:
|
||||||
HLL_BACKEND_LIVE_DATA_SOURCE: ${HLL_BACKEND_LIVE_DATA_SOURCE:-rcon}
|
HLL_BACKEND_LIVE_DATA_SOURCE: ${HLL_BACKEND_LIVE_DATA_SOURCE:-rcon}
|
||||||
HLL_BACKEND_HISTORICAL_DATA_SOURCE: ${HLL_BACKEND_HISTORICAL_DATA_SOURCE:-rcon}
|
HLL_BACKEND_HISTORICAL_DATA_SOURCE: ${HLL_BACKEND_HISTORICAL_DATA_SOURCE:-public-scoreboard}
|
||||||
HLL_BACKEND_RCON_TIMEOUT_SECONDS: ${HLL_BACKEND_RCON_TIMEOUT_SECONDS:-20}
|
HLL_BACKEND_RCON_TIMEOUT_SECONDS: ${HLL_BACKEND_RCON_TIMEOUT_SECONDS:-20}
|
||||||
HLL_BACKEND_RCON_TARGETS: >-
|
HLL_BACKEND_RCON_TARGETS: >-
|
||||||
${HLL_BACKEND_RCON_TARGETS:-[{"name":"Comunidad Hispana #01","slug":"comunidad-hispana-01","external_server_id":"comunidad-hispana-01","host":"152.114.195.174","port":7779,"password":"replace-me-01","source_name":"community-hispana-rcon","region":"ES","game_port":null,"query_port":null},{"name":"Comunidad Hispana #02","slug":"comunidad-hispana-02","external_server_id":"comunidad-hispana-02","host":"152.114.195.150","port":7879,"password":"replace-me-02","source_name":"community-hispana-rcon","region":"ES","game_port":null,"query_port":null},{"name":"Comunidad Hispana #03","slug":"comunidad-hispana-03","external_server_id":"comunidad-hispana-03","host":"5.196.78.45","port":27230,"password":"replace-me-03","source_name":"community-hispana-rcon","region":"ES","game_port":null,"query_port":null}]}
|
${HLL_BACKEND_RCON_TARGETS:-[{"name":"Comunidad Hispana #01","slug":"comunidad-hispana-01","external_server_id":"comunidad-hispana-01","host":"152.114.195.174","port":7779,"password":"replace-me-01","source_name":"community-hispana-rcon","region":"ES","game_port":null,"query_port":null},{"name":"Comunidad Hispana #02","slug":"comunidad-hispana-02","external_server_id":"comunidad-hispana-02","host":"152.114.195.150","port":7879,"password":"replace-me-02","source_name":"community-hispana-rcon","region":"ES","game_port":null,"query_port":null}]}
|
||||||
ports:
|
ports:
|
||||||
- "8000:8000"
|
- "8000:8000"
|
||||||
volumes:
|
volumes:
|
||||||
@@ -18,6 +18,8 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
historical-runner:
|
historical-runner:
|
||||||
|
profiles:
|
||||||
|
- advanced
|
||||||
build:
|
build:
|
||||||
context: ./backend
|
context: ./backend
|
||||||
container_name: hll-vietnam-historical-runner
|
container_name: hll-vietnam-historical-runner
|
||||||
@@ -29,7 +31,7 @@ services:
|
|||||||
HLL_BACKEND_HISTORICAL_DATA_SOURCE: ${HLL_BACKEND_HISTORICAL_DATA_SOURCE:-rcon}
|
HLL_BACKEND_HISTORICAL_DATA_SOURCE: ${HLL_BACKEND_HISTORICAL_DATA_SOURCE:-rcon}
|
||||||
HLL_BACKEND_RCON_TIMEOUT_SECONDS: ${HLL_BACKEND_RCON_TIMEOUT_SECONDS:-20}
|
HLL_BACKEND_RCON_TIMEOUT_SECONDS: ${HLL_BACKEND_RCON_TIMEOUT_SECONDS:-20}
|
||||||
HLL_BACKEND_RCON_TARGETS: >-
|
HLL_BACKEND_RCON_TARGETS: >-
|
||||||
${HLL_BACKEND_RCON_TARGETS:-[{"name":"Comunidad Hispana #01","slug":"comunidad-hispana-01","external_server_id":"comunidad-hispana-01","host":"152.114.195.174","port":7779,"password":"replace-me-01","source_name":"community-hispana-rcon","region":"ES","game_port":null,"query_port":null},{"name":"Comunidad Hispana #02","slug":"comunidad-hispana-02","external_server_id":"comunidad-hispana-02","host":"152.114.195.150","port":7879,"password":"replace-me-02","source_name":"community-hispana-rcon","region":"ES","game_port":null,"query_port":null},{"name":"Comunidad Hispana #03","slug":"comunidad-hispana-03","external_server_id":"comunidad-hispana-03","host":"5.196.78.45","port":27230,"password":"replace-me-03","source_name":"community-hispana-rcon","region":"ES","game_port":null,"query_port":null}]}
|
${HLL_BACKEND_RCON_TARGETS:-[{"name":"Comunidad Hispana #01","slug":"comunidad-hispana-01","external_server_id":"comunidad-hispana-01","host":"152.114.195.174","port":7779,"password":"replace-me-01","source_name":"community-hispana-rcon","region":"ES","game_port":null,"query_port":null},{"name":"Comunidad Hispana #02","slug":"comunidad-hispana-02","external_server_id":"comunidad-hispana-02","host":"152.114.195.150","port":7879,"password":"replace-me-02","source_name":"community-hispana-rcon","region":"ES","game_port":null,"query_port":null}]}
|
||||||
depends_on:
|
depends_on:
|
||||||
- backend
|
- backend
|
||||||
volumes:
|
volumes:
|
||||||
@@ -37,6 +39,8 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
rcon-historical-worker:
|
rcon-historical-worker:
|
||||||
|
profiles:
|
||||||
|
- advanced
|
||||||
build:
|
build:
|
||||||
context: ./backend
|
context: ./backend
|
||||||
container_name: hll-vietnam-rcon-historical-worker
|
container_name: hll-vietnam-rcon-historical-worker
|
||||||
@@ -48,7 +52,7 @@ services:
|
|||||||
HLL_BACKEND_HISTORICAL_DATA_SOURCE: ${HLL_BACKEND_HISTORICAL_DATA_SOURCE:-rcon}
|
HLL_BACKEND_HISTORICAL_DATA_SOURCE: ${HLL_BACKEND_HISTORICAL_DATA_SOURCE:-rcon}
|
||||||
HLL_BACKEND_RCON_TIMEOUT_SECONDS: ${HLL_BACKEND_RCON_TIMEOUT_SECONDS:-20}
|
HLL_BACKEND_RCON_TIMEOUT_SECONDS: ${HLL_BACKEND_RCON_TIMEOUT_SECONDS:-20}
|
||||||
HLL_BACKEND_RCON_TARGETS: >-
|
HLL_BACKEND_RCON_TARGETS: >-
|
||||||
${HLL_BACKEND_RCON_TARGETS:-[{"name":"Comunidad Hispana #01","slug":"comunidad-hispana-01","external_server_id":"comunidad-hispana-01","host":"152.114.195.174","port":7779,"password":"replace-me-01","source_name":"community-hispana-rcon","region":"ES","game_port":null,"query_port":null},{"name":"Comunidad Hispana #02","slug":"comunidad-hispana-02","external_server_id":"comunidad-hispana-02","host":"152.114.195.150","port":7879,"password":"replace-me-02","source_name":"community-hispana-rcon","region":"ES","game_port":null,"query_port":null},{"name":"Comunidad Hispana #03","slug":"comunidad-hispana-03","external_server_id":"comunidad-hispana-03","host":"5.196.78.45","port":27230,"password":"replace-me-03","source_name":"community-hispana-rcon","region":"ES","game_port":null,"query_port":null}]}
|
${HLL_BACKEND_RCON_TARGETS:-[{"name":"Comunidad Hispana #01","slug":"comunidad-hispana-01","external_server_id":"comunidad-hispana-01","host":"152.114.195.174","port":7779,"password":"replace-me-01","source_name":"community-hispana-rcon","region":"ES","game_port":null,"query_port":null},{"name":"Comunidad Hispana #02","slug":"comunidad-hispana-02","external_server_id":"comunidad-hispana-02","host":"152.114.195.150","port":7879,"password":"replace-me-02","source_name":"community-hispana-rcon","region":"ES","game_port":null,"query_port":null}]}
|
||||||
HLL_RCON_HISTORICAL_CAPTURE_INTERVAL_SECONDS: ${HLL_RCON_HISTORICAL_CAPTURE_INTERVAL_SECONDS:-600}
|
HLL_RCON_HISTORICAL_CAPTURE_INTERVAL_SECONDS: ${HLL_RCON_HISTORICAL_CAPTURE_INTERVAL_SECONDS:-600}
|
||||||
HLL_RCON_HISTORICAL_CAPTURE_MAX_RETRIES: ${HLL_RCON_HISTORICAL_CAPTURE_MAX_RETRIES:-2}
|
HLL_RCON_HISTORICAL_CAPTURE_MAX_RETRIES: ${HLL_RCON_HISTORICAL_CAPTURE_MAX_RETRIES:-2}
|
||||||
HLL_RCON_HISTORICAL_CAPTURE_RETRY_DELAY_SECONDS: ${HLL_RCON_HISTORICAL_CAPTURE_RETRY_DELAY_SECONDS:-15}
|
HLL_RCON_HISTORICAL_CAPTURE_RETRY_DELAY_SECONDS: ${HLL_RCON_HISTORICAL_CAPTURE_RETRY_DELAY_SECONDS:-15}
|
||||||
|
|||||||
@@ -126,3 +126,16 @@ Las claves estables son:
|
|||||||
Esto permite bootstrap, refresco incremental e idempotencia sin mezclar
|
Esto permite bootstrap, refresco incremental e idempotencia sin mezclar
|
||||||
semanticas de estado actual con historico persistido. El modelo detallado queda
|
semanticas de estado actual con historico persistido. El modelo detallado queda
|
||||||
en `docs/historical-domain-model.md`.
|
en `docs/historical-domain-model.md`.
|
||||||
|
|
||||||
|
## Decision 014: despliegue normal simplificado sin servidor #03
|
||||||
|
|
||||||
|
El despliegue operativo normal vuelve a quedar reducido a `backend` +
|
||||||
|
`frontend`. Los servicios `historical-runner` y `rcon-historical-worker` se
|
||||||
|
mantienen disponibles solo para uso avanzado y explicito mediante el perfil
|
||||||
|
Compose `advanced`.
|
||||||
|
|
||||||
|
Comunidad Hispana #03 deja de formar parte de los targets RCON por defecto
|
||||||
|
porque ya no es una fuente operativa vigente. El codigo historico, los datos
|
||||||
|
persistidos, las migraciones y las piezas Elo/MMR no se eliminan; quedan
|
||||||
|
pausadas operativamente para esta fase y pueden reintroducirse mediante una
|
||||||
|
task futura si se valida de nuevo la fuente y el coste de mantenimiento.
|
||||||
|
|||||||
Reference in New Issue
Block a user