Ranking de Jugadores
Sportware tiene dos sistemas de ranking complementarios para medir el nivel y rendimiento de los jugadores. Actualmente ambos son internos (visibles solo en el panel de administración), pero están diseñados para ser publicados en el futuro.
1. Ranking Interno de Sportware (ranking_score)
Puntuación individual de cada jugador calculada a partir de sus resultados en partidos. Se almacena en users.ranking_score como decimal (precisión 4, escala 2).
Escala: 1.00 (mejor nivel) → 9.99 (nivel más bajo). null si el jugador no tiene partidos terminados.
Fórmula
Para cada partido jugado se calcula un result_score ponderado:
result_score = 0.60 × (ganó partido: 1 / perdió: 0)
+ 0.25 × (sets ganados / sets totales)
+ 0.15 × (juegos ganados / juegos totales)
Cada partido tiene un category_weight según el nivel de la categoría, con decaimiento exponencial (las categorías de mayor nivel valen el doble que las del nivel siguiente):
category_weight = 2.0 ^ (1.0 − nivel_equivalente)
El ranking_score final es el promedio ponderado de todos los result_score, mapeado a la escala 1.00–9.99:
raw_score = Σ(category_weight × result_score) / Σ(category_weight)
ranking_score = 1.0 + (1.0 − raw_score) × 8.99
Niveles equivalentes
| Nivel de categoría | Valor numérico |
|---|---|
first |
1.0 |
second |
2.0 |
third |
3.0 |
fourth |
4.0 |
intermediate |
4.5 |
fifth |
5.0 |
sum_5 |
3.0 |
sum_7 |
4.0 |
sum_9 |
5.0 |
sixth |
6.0 |
sum_11 |
6.0 |
seventh |
7.0 |
sum_13 |
7.0 |
eighth |
8.0 |
ninth |
9.0 |
Las categorías femeninas reciben una penalización de +1.5 niveles sobre el nivel base de la categoría equivalente masculina.
Cuándo se recalcula
PlayerRankingService.recalculate_for_tournament(tournament) recalcula el ranking_score de todos los jugadores que participaron en un torneo específico. Solo se consideran partidos terminados con ganador registrado.
Visibilidad actual
El ranking_score se muestra en el detalle de usuario del panel de administración (/admin/users/:id). No es público aún.
2. Ranking de Temporada (puntos por sistemas externos)
Sistema de puntos acumulados por temporada basado en los sistemas de ranking de organizaciones pádel reconocidas. Permite a los clubes gestionar sus torneos con los criterios de puntuación de torneos oficiales.
Cómo funciona
- Al crear o editar un torneo, el staff selecciona un sistema de ranking opcional (
tournament.ranking_system). - Cuando todos los partidos de una categoría terminan, el admin registra los resultados finales por fase (
POST /admin/tournaments/:id/categories/:id/record_player_phases). - El sistema asigna automáticamente puntos a cada jugador según su fase alcanzada y el sistema de ranking del torneo. Los puntos se guardan en
tournament_category_player_phases.ranking_points. - El ranking acumulado de una temporada se consulta en
GET /admin/seasons/:id/ranking, donde se puede filtrar por torneo específico o ver el acumulado total.
Sistemas de ranking disponibles
AAP Uruguay
| Fase | 100 pts | 200 pts |
|---|---|---|
| Campeón | 100 | 200 |
| Final | 80 | 160 |
| Semifinal | 60 | 120 |
| Cuartos | 40 | 80 |
| Round of 16 | 30 | 60 |
| Fase de grupos | 25 | 50 |
FIP Tour
| Fase | Platinum | Gold | Silver | Bronze | Finals |
|---|---|---|---|---|---|
| Campeón | 300 | 150 | 80 | 40 | 225 |
| Final | 180 | 90 | 45 | 22 | 135 |
| Semifinal | 90 | 50 | 25 | 14 | 70 |
| Cuartos | 50 | 25 | 14 | 8 | 40 |
| Round of 16 | 25 | 14 | 8 | 5 | 20 |
| Round of 32 | 14 | 8 | 5 | 3 | — |
Premier Padel
| Fase | Major | P1 | P2 | Finals |
|---|---|---|---|---|
| Campeón | 2000 | 1000 | 600 | 1500 |
| Final | 1200 | 600 | 360 | 900 |
| 3er puesto | — | — | — | 600 |
| 4o puesto | — | — | — | 400 |
| Semifinal | 720 | 360 | 180 | — |
| Cuartos | 360 | 180 | 90 | 270 |
| Round of 16 | 180 | 90 | 45 | — |
| Round of 32 | 90 | 45 | 22 | — |
| Round of 64 | 35 | 22 | — | — |
International Padel Federation — FIP World Cup Pairs
| Fase | Puntos |
|---|---|
| Campeón | 2000 |
| Final | 1200 |
| Semifinal | 720 |
| Cuartos | 360 |
| Round of 16 | 180 |
| Round of 32 | 90 |
| Round of 64 | 35 |
Vista de ranking de temporada (admin)
La tabla muestra, por cada jugador con puntos registrados:
| Columna | Descripción |
|---|---|
| Posición | Orden por puntos totales descendente |
| Jugador | Nombre del jugador |
| Puntos | Suma de ranking_points de todas las categorías |
| Torneos | Número de torneos distintos en los que participó |
| Resultados | Número total de entradas de fase registradas |
Se puede filtrar por torneo individual o ver el acumulado de toda la temporada.
Estado actual y roadmap
| Sistema | Almacenado en | Visible para admin | Visible para jugador |
|---|---|---|---|
| Ranking interno | users.ranking_score |
Sí (detalle usuario) | No (pendiente) |
| Ranking de temporada | tournament_category_player_phases.ranking_points |
Sí (/admin/seasons/:id/ranking) |
No (pendiente) |
Ambos sistemas están diseñados para ser expuestos públicamente en el futuro, tanto en el portal del jugador como a través de la API móvil.