From 9b6e1645ac6783ef97dfcae12b18c1703c30522a Mon Sep 17 00:00:00 2001 From: devRaGonSa Date: Mon, 8 Jun 2026 12:40:29 +0200 Subject: [PATCH] Add annual ranking snapshot storage task --- ...167-add-annual-ranking-snapshot-storage.md | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 ai/tasks/pending/TASK-167-add-annual-ranking-snapshot-storage.md diff --git a/ai/tasks/pending/TASK-167-add-annual-ranking-snapshot-storage.md b/ai/tasks/pending/TASK-167-add-annual-ranking-snapshot-storage.md new file mode 100644 index 0000000..93d3366 --- /dev/null +++ b/ai/tasks/pending/TASK-167-add-annual-ranking-snapshot-storage.md @@ -0,0 +1,86 @@ +--- +id: TASK-167 +title: Add annual ranking snapshot storage +status: pending +type: backend +team: Arquitecto de Base de Datos +supporting_teams: + - Arquitecto Python + - Backend Senior +roadmap_item: foundation +--- + +# TASK-167 - Add annual ranking snapshot storage + +## Goal + +Implement storage primitives to persist annual top 20 player ranking snapshots, following the schema plan in `docs/annual-ranking-snapshot-schema-plan.md`, without adding generator logic or annual ranking APIs yet. + +## Context + +`TASK-166-design-annual-ranking-snapshot-schema.md` defined the intended schema and constraints for: +- `rcon_annual_ranking_snapshots` +- `rcon_annual_ranking_snapshot_items` + +This task creates the storage layer so future yearly ranking generators can run on top of materialized RCON data in SQLite and PostgreSQL-compatible paths. + +The implementation must stay backend-only and must not touch frontend assets. + +## Steps + +1. Read all files listed below before any edit. +2. Add snapshot table creation for both SQLite and PostgreSQL-compatible schema paths if present. +3. Include SQLite/Postgres-safe DDL in migration-like storage initializer surfaces used by the project. +4. Keep changes minimal and avoid endpoint or generator creation. +5. Validate syntax/initialization and keep changed files within expected scope. +6. Update task outcome once completed and move to `ai/tasks/done` only after scope checks pass. + +## Files to Read First + +- `AGENTS.md` +- `ai/repo-context.md` +- `ai/architecture-index.md` +- `docs/annual-ranking-snapshot-schema-plan.md` +- `backend/app/rcon_admin_log_materialization.py` +- `backend/app/postgres_rcon_storage.py` +- `backend/app/sqlite_to_postgres_migration.py` +- `backend/app/rcon_historical_leaderboards.py` +- `backend/app/rcon_historical_player_stats.py` + +## Expected Files to Modify + +- `backend/app/rcon_admin_log_materialization.py` or equivalent materialized-RCON storage init module +- `backend/app/postgres_rcon_storage.py` or equivalent PostgreSQL schema initializer +- `backend/app/sqlite_to_postgres_migration.py` if migration table lists and sequence sync require alignment +- `ai/tasks/done/TASK-167-add-annual-ranking-snapshot-storage.md` + +## Constraints + +- No generador anual de ranking en este scope. +- No endpoint anual agregado aún. +- No modificaciones de frontend. +- No tocar `frontend/assets/js/partida-actual.js`. +- No tocar `frontend/assets/img/clans/bxb.png`. +- Mantener compatibilidad SQLite/Postgres si la capa existente ya la usa. +- No reactivar Elo/MMR. +- No reintroducir Comunidad Hispana #03. +- No ampliar `historical workers` salvo cambios estrictamente necesarios en inicialización de storage. + +## Validation + +- `python -m compileall backend/app` +- `scripts/run-integration-tests.ps1` (si aplica). +- Validación de inicialización de storage para SQLite. +- Validación de compatibilidad SQL/DDL con Postgres en los módulos de compatibilidad existentes. +- `git diff --name-only` debe mostrar sólo el alcance esperado. + +## Outcome + +Documentar en el cierre de task: +- Archivos modificados. +- Tablas nuevas añadidas (`rcon_annual_ranking_snapshots`, `rcon_annual_ranking_snapshot_items`). +- Compatibilidad SQLite/Postgres. +- Validaciones ejecutadas. +- Limitaciones conocidas. +- Siguiente task recomendada: generador de snapshot anual top 20. +