Files
comunidadhll/ai/tasks/done/TASK-166-design-annual-ranking-snapshot-schema.md
2026-06-08 12:38:05 +02:00

105 lines
3.5 KiB
Markdown

---
id: TASK-166
title: Design annual ranking snapshot schema
status: done
type: documentation
team: Arquitecto de Base de Datos
supporting_teams: []
roadmap_item: foundation
priority: medium
---
# TASK-166 - Design annual ranking snapshot schema
## Goal
Define a backend storage plan for annual top-20 ranking snapshots (kills) that avoids
full recalculation on each public request.
## Context
- TASK-162 implementó el endpoint de búsqueda de jugadores para Stats.
- TASK-163 implementó el endpoint de stats personales.
- TASK-165 implementó la vista frontend de Stats.
This task is documentation-only and prepares the schema needed by the next backend
endpoint iteration:
- `GET /api/stats/rankings/annual?year=<year>&server_id=<server-or-all>&metric=kills`
## Steps
1. Revisión de archivos listados en `Files to Read First`.
2. Diseñar propuesta de tablas para snapshots anuales y sus items.
3. Definir restricciones de unicidad, índices y política de reemplazo.
4. Documentar compatibilidad SQLite/Postgres siguiendo el patrón usado en `rcon_historical_leaderboards.py`.
5. Especificar API y estados esperados para lectura de snapshot.
## Files to Read First
- `AGENTS.md`
- `ai/repo-context.md`
- `ai/architecture-index.md`
- `docs/stats-section-functional-plan.md`
- `docs/stats-frontend-integration-plan.md`
- `backend/app/rcon_historical_leaderboards.py`
- `backend/app/rcon_historical_player_stats.py`
- `backend/app/rcon_admin_log_materialization.py`
- `backend/app/postgres_rcon_storage.py`
- `backend/app/postgres_display_storage.py`
- `backend/app/sqlite_to_postgres_migration.py`
## Expected Files to Modify
- `ai/tasks/done/TASK-166-design-annual-ranking-snapshot-schema.md`
- `docs/annual-ranking-snapshot-schema-plan.md`
## Constraints
- No migrations in this task.
- No backend implementation code changes in this task.
- No frontend changes in this task.
- No Elo/MMR reactivation.
- No Comunidad Hispana #03 reintroduction.
- No modification of historical workers.
- No touch to:
- `frontend/assets/js/partida-actual.js`
- `frontend/assets/img/clans/bxb.png`
## Validation
- Confirm only documentation files were created/updated.
- `git diff --name-only` must match expected scope.
- Document that no automated tests are applicable for documentation-only task.
## Outcome
- Documento creado:
- `docs/annual-ranking-snapshot-schema-plan.md`
- Archivos revisados:
- `AGENTS.md`
- `ai/repo-context.md`
- `ai/architecture-index.md`
- `docs/stats-section-functional-plan.md`
- `docs/stats-frontend-integration-plan.md`
- `backend/app/rcon_historical_leaderboards.py`
- `backend/app/rcon_historical_player_stats.py`
- `backend/app/rcon_admin_log_materialization.py`
- `backend/app/postgres_rcon_storage.py`
- `backend/app/postgres_display_storage.py`
- `backend/app/sqlite_to_postgres_migration.py`
- Validación realizada:
- Confirmado que la tarea quedó en alcance documental y no se introdujeron cambios de backend/frontend.
- Se validó que los únicos archivos esperados para esta tarea estén cubiertos por su documentación.
- No se requiere ejecutar pruebas automáticas: es una tarea de documentación.
- Limitaciones:
- No se tocó código backend ni frontend.
- No se ejecutaron migraciones.
- Siguiente task recomendada:
- Crear migración y estructura de persistencia para snapshots anuales de ranking (`rcon_annual_ranking_*`) y su job de generación.
## Change Budget
- Prefer fewer than 5 modified files.
- Keep changes concise and reviewable.