public-clubsy

Carga de estructura deportiva por plantilla (CSV)

Objetivo

Permitir la carga masiva de categorías, ligas y equipos en la temporada activa del club desde una plantilla CSV.

Esta guía documenta el comportamiento real implementado en la pantalla de estructura deportiva.

Dónde se usa

Archivos de referencia

Formato obligatorio del CSV

Encabezados requeridos (en este orden recomendado):

entity,name,category,league

Columnas

Reglas de validación

La importación valida antes de insertar:

  1. El archivo debe tener al menos encabezado + 1 fila de datos.
  2. Deben existir las columnas entity y name.
  3. Si entity=team, category y league son obligatorios.
  4. entity fuera de category|league|team se considera error.
  5. Para equipos, la categoría/liga deben existir:
    • en BD de la temporada activa, o
    • en el mismo archivo (si se crean en filas category/league).

Si hay errores de validación, no se ejecuta la importación y se muestra un resumen de errores.

Comportamiento de inserción

Normalización de texto

Antes de comparar/insertar:

Ejemplo:

Ejemplo válido

entity,name,category,league
category,Senior,,
category,Juvenil,,
league,Oro,,
league,Plata,,
team,Equipo Senior A,Senior,Oro
team,Equipo Senior B,Senior,Plata
team,Equipo Juvenil A,Juvenil,Plata

Resultado esperado:

Ejemplo inválido

entity,name,category,league
team,Equipo sin liga,Senior,
foo,Registro desconocido,,
team,,Senior,Oro
team,Equipo con referencia faltante,Sub13,Oro

Errores esperados:

Flujo recomendado de operación

  1. Descargar plantilla base.
  2. Completar categorías y ligas primero.
  3. Completar equipos referenciando nombres exactos de categoría/liga.
  4. Importar plantilla.
  5. Revisar resumen de creación.
  6. Repetir si hay errores con datos correctos.

Buenas prácticas

Alcance actual

Esta importación cubre:

No cubre todavía:

Troubleshooting

“CSV requiere columnas: entity,name,category,league”

El encabezado no coincide. Verificar primera fila.

“Plantilla sin datos”

El archivo solo tiene encabezado o está vacío.

“team requiere category y league”

Fila de equipo incompleta.

“categoría/liga no existe”

Agregar fila de creación en el mismo CSV o crearla antes en la app.