5.6 KiB
id, title, status, type, team, supporting_teams, roadmap_item, priority
| id | title | status | type | team | supporting_teams | roadmap_item | priority | |||
|---|---|---|---|---|---|---|---|---|---|---|
| TASK-214 | Audit public query performance bottlenecks | done | research | Analista |
|
foundation | high |
TASK-214 - Audit public query performance bottlenecks
Goal
Auditar los posibles cuellos de botella de las consultas publicas de HLL Vietnam y producir un analisis tecnico accionable para futuras optimizaciones, sin implementar cambios funcionales todavia.
Context
El ranking anual ya sufrio un cuello de botella grave y quedo corregido al sacar initialize_rcon_materialized_storage() del path publico de lectura anual en PostgreSQL. Tras ese fix, las latencias confirmadas de API de ranking son bajas, pero la UI publica aun puede percibirse lenta o quedarse temporalmente en estados de carga.
La regla arquitectonica objetivo de esta auditoria es explicita:
- los endpoints publicos deben leer read models propios en PostgreSQL
- no deben consultar RCON directo
- no deben consultar scoreboard publico
- no deben recalcular rankings en runtime
- no deben escanear
rcon_match_player_statssalvo en procesos internos - no deben inicializar o migrar storage dentro de request publico
- no deben bloquearse por health checks no necesarios
Preserve the current product identity: Spanish-speaking HLL Vietnam community, military/Vietnam/tactical/sober visual direction and controlled repository evolution.
Steps
- Revisar primero la documentacion base, las rutas publicas y los frontends que las consumen.
- Auditar endpoints publicos, fallbacks, read models, polling, cargas secuenciales y riesgos de runtime.
- Redactar el informe tecnico en
docs/PERFORMANCE_PUBLIC_QUERY_AUDIT.md. - Cerrar esta task en
ai/tasks/done/documentando hallazgos, validacion y exclusiones.
Files to Read First
AGENTS.mdai/repo-context.mdai/architecture-index.mddocs/decisions.mdbackend/app/routes.pybackend/app/payloads.py
Expected Files to Modify
docs/PERFORMANCE_PUBLIC_QUERY_AUDIT.mdai/tasks/done/TASK-214-audit-public-query-performance-bottlenecks.md
Constraints
- Keep the change minimal.
- Preserve HLL Vietnam project identity.
- Do not introduce unnecessary frameworks or dependencies.
- Do not implement backend functionality unless the task explicitly requires it.
- Do not expand Elo/MMR, historical workers or RCON server #03 handling unless the task explicitly requires it.
- Do not overwrite repository-specific context with generic platform template text.
- No ejecutar
ai-platform run. - No implementar optimizaciones funcionales todavia.
- No cambiar comportamiento de endpoints.
- No tocar frontend funcional.
- No tocar backend funcional.
- No tocar tests.
- No tocar assets de armas.
- No tocar SVGs.
- No modificar imagenes fisicas.
- No reactivar Elo/MMR.
- No reintroducir Comunidad Hispana #03.
- No hacer
push.
Validation
Before completing the task ensure:
git status --short --untracked-files=allgit diff --name-only- confirmar que solo se crean o modifican:
docs/PERFORMANCE_PUBLIC_QUERY_AUDIT.mdai/tasks/done/TASK-214-audit-public-query-performance-bottlenecks.md
- no unrelated files were modified
- documentation remains consistent with the repository state
Outcome
Archivos creados:
docs/PERFORMANCE_PUBLIC_QUERY_AUDIT.mdai/tasks/done/TASK-214-audit-public-query-performance-bottlenecks.md
Resumen de hallazgos:
ranking.jsystats.jsbloquean carga principal detras de/health.ranking.jsno protege request race ni estados de carga obsoletos./api/rankingweekly/monthly conserva fallback runtime sobre tablas materializadas.- search y profile de
statspueden caer a runtime si faltan read models dedicados. historico.jsya muestra un patron frontend mas sano: cache, deduplicacion yrequestId./api/current-matchsigue consultando RCON directo en request publico.partida-actual.jshace polling agresivo a tres endpoints en paralelo.- varias queries runtime filtran con
COALESCE(CAST(... AS TEXT)), con riesgo de degradar indices.
Validacion ejecutada:
- lectura de contexto base:
AGENTS.md,ai/repo-context.md,ai/architecture-index.md,docs/decisions.md - lectura de endpoints y builders:
backend/app/routes.py,backend/app/payloads.py - lectura de modulos clave:
backend/app/rcon_annual_rankings.py,backend/app/rcon_historical_leaderboards.py,backend/app/rcon_historical_player_stats.py,backend/app/rcon_historical_read_model.py,backend/app/postgres_rcon_storage.py,backend/app/historical_runner.py,backend/app/main.py,backend/app/config.py - lectura de frontends clave:
frontend/assets/js/ranking.js,stats.js,historico.js,historico-partida.js,partida-actual.js,main.js - lectura de paginas clave:
frontend/ranking.html,stats.html,historico.html,partida-actual.html - lectura de tests relevantes:
backend/tests/test_annual_ranking_payload.py,test_rcon_materialization_pipeline.py,test_historical_snapshot_refresh.py - validacion de alcance con
git status --short --untracked-files=allygit diff --name-only
Confirmaciones de exclusiones:
- no se toco codigo funcional de frontend ni backend
- no se tocaron tests
- no se tocaron endpoints ni contratos
- no se tocaron assets de armas, SVGs ni imagenes fisicas
- no se reactivo Elo/MMR
- no se reintrodujo Comunidad Hispana #03
- no se ejecuto
ai-platform run - no se hizo
push
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.