This commit is contained in:
Laucha1312
2026-06-04 15:15:23 -03:00
parent 0841794c50
commit 90c5f85512
167 changed files with 15870 additions and 0 deletions
+648
View File
@@ -0,0 +1,648 @@
# 📖 Manual de Usuario — OnAPB
### Sistema de Gestión de Asociación de Básquet
> **Sitio:** [onapb.com](https://onapb.com)
---
## ¿A quién está dirigido este manual?
OnAPB es utilizado por cuatro tipos de personas. Este manual explica paso a paso qué puede hacer cada una:
| Capítulo | Perfil |
|---|---|
| [Capítulo 1](#cap1) | Visitantes (sin cuenta) |
| [Capítulo 2](#cap2) | Jugadores federados |
| [Capítulo 3](#cap3) | Aficionados / Hinchas |
| [Capítulo 4](#cap4) | Administradores de Club |
| [Capítulo 5](#cap5) | Súper Administradores (OnAPB) |
---
<a name="cap1"></a>
## 📌 Capítulo 1 — Visitante (Sin cuenta)
Cualquier persona puede ingresar a **onapb.com** sin necesidad de registrarse y acceder a información pública de la liga.
### 1.1 Página de Inicio (`/`)
Al entrar al sitio el visitante encuentra:
- **Carrusel / Hero**: Diapositivas destacadas configuradas por la asociación (noticias importantes, convocatorias, avisos).
- **Próximos Partidos**: Listado de los eventos más cercanos con día, hora y equipos.
- **Noticias recientes**: Artículos publicados por OnAPB.
- **Sponsors**: Franja rotativa con los patrocinadores de la liga visible en el pie de página.
### 1.2 Cartelera de Eventos (`/eventos`)
- Ver todos los partidos programados: próximos, en curso y finalizados.
- Cada tarjeta de evento muestra: equipos, categoría, fecha, hora y sede.
- Hacer clic en un evento abre el **detalle del partido** con información completa.
- Si el partido ya fue jugado, se muestran los marcadores finales.
### 1.3 Tabla de Posiciones y Goleadores de Torneo
- Desde la sección de torneos se puede ver:
- **Posiciones** por grupo o categoría.
- **Tabla de goleadores** del torneo con puntos acumulados.
- **Bracket de Playoffs**: diagrama del cuadro eliminatorio cuando corresponde.
### 1.4 Noticias (`/noticias`)
- Listado de artículos publicados por la asociación con imagen, título y texto completo.
### 1.5 Promociones y Lugares con Beneficios (`/promos`)
- Mapa y/o listado de locales comerciales asociados que ofrecen descuentos a miembros de OnAPB.
- Ver información de cada comercio (nombre, dirección, beneficio).
- Para **obtener el QR de descuento** es necesario tener una cuenta y estar logueado.
### 1.6 Registrarse (`/asociate`)
Para obtener todos los beneficios del sistema, el visitante puede crear una cuenta. Existen dos vías:
#### Vía A — Registrarse como Aficionado
1. Ir a `/asociate` y seleccionar la pestaña **"Soy Aficionado"**.
2. Completar el formulario: Nombre, Apellido, DNI, Email, Fecha de Nacimiento (opcional), Teléfono (opcional), Localidad (opcional), Contraseña.
3. Resolver el **captcha de seguridad** (Cloudflare Turnstile).
4. Hacer clic en **Registrarme**.
5. El sistema envía un **correo de bienvenida** a la dirección ingresada.
6. ✅ Listo. Ya se puede iniciar sesión con DNI y contraseña.
#### Vía B — Activar cuenta como Jugador Federado
> *Para jugadores que ya fueron cargados en el sistema por el administrador de su club.*
1. Ir a `/asociate` y seleccionar la pestaña **"Soy Jugador"**.
2. Ingresar Nombre, Apellido y DNI (tal como aparecen en la ficha).
3. Aceptar los términos y hacer clic en **Buscar**.
4. El sistema valida los datos con el padrón. Si hay coincidencia, muestra la ficha del jugador (nombre, club, categoría).
5. Completar el formulario de activación: Email, Teléfono (opcional), Contraseña.
6. Resolver el **captcha de seguridad**.
7. Hacer clic en **Activar mi cuenta**.
8. El sistema envía un **correo de bienvenida**.
9. ✅ Listo. La cuenta queda activa y se puede iniciar sesión.
> **Nota:** Si el DNI no se encuentra en el padrón de jugadores, el sistema sugiere registrarse como Aficionado.
### 1.7 Iniciar Sesión
- Desde el menú superior hacer clic en **"Iniciar Sesión"** o ir a la pantalla de login.
- Se muestra un formulario con dos pestañas:
- **Jugadores / Aficionados**: ingresar DNI y contraseña + captcha.
- **Administradores**: ingresar usuario y contraseña + captcha.
### 1.8 Recuperar Contraseña (`/recuperar`)
En caso de olvidar la contraseña:
1. Ir a `/recuperar`.
2. Ingresar el **DNI** y la **dirección de email** asociados a la cuenta.
3. El sistema envía un enlace de restablecimiento válido por **1 hora**.
4. Hacer clic en el enlace del correo y establecer la nueva contraseña (mínimo 6 caracteres, requiere confirmación).
---
<a name="cap2"></a>
## 🏅 Capítulo 2 — Jugador Federado
Un jugador que ya activó su cuenta (Vía B de `/asociate`) tiene acceso a un **Panel de Usuario** con funcionalidades específicas para deportistas federados.
### 2.1 Iniciar Sesión
- En la pantalla de login, pestaña **"Jugadores / Aficionados"**.
- Ingresar **DNI** y **contraseña**.
- El sistema detecta automáticamente si la cuenta corresponde a un Jugador o Aficionado.
### 2.2 Panel de Usuario (`/panel-usuario`)
Al acceder al panel, el jugador ve de un vistazo:
- Sus **datos personales**: nombre, DNI, club, categoría calculada automáticamente por edad.
- Sus **equipos asignados** (puede pertenecer a varios equipos dentro de su club).
- **Resumen de QRs**: cantidad de pases de eventos solicitados.
- **Notificaciones** del sistema (ícono en el menú superior con contador).
### 2.3 Solicitar QR para un Partido
Esta es la funcionalidad principal del jugador federado. Permite obtener un **código QR de acceso** a un evento.
**Pasos:**
1. Desde el menú público o desde el panel, ir a **Eventos** y buscar el partido deseado.
2. Entrar al **detalle del partido**.
3. Si el partido está en estado *Próximo* o *En Curso*, aparece el botón **"Solicitar QR"**.
4. Hacer clic en el botón. El sistema verifica automáticamente:
- Si el jugador **pertenece a uno de los equipos** del partido → genera la cantidad de QRs configurada (por defecto 3, para repartir entre familiares/acompañantes). Tipo: `invitado`.
- Si el jugador es de **categoría Libre** pero no juega ese partido → genera 1 QR con descuento del 50%. Tipo: `libre_50`.
- Si el jugador no cumple ninguna condición → el botón no estará disponible o muestra un mensaje explicativo.
5. ✅ El sistema genera los QRs y envía un **correo con los códigos** al email registrado.
6. El jugador es redirigido automáticamente a **Mis QRs** para ver los códigos generados.
> **Restricción:** Solo se puede solicitar QR una vez por partido. Si ya se solicitó, el botón queda inhabilitado con un mensaje informativo.
### 2.4 Mis QRs (`/panel-usuario/mis-qrs`)
- Lista de todos los códigos QR del jugador, ordenados del más reciente al más antiguo.
- Cada QR muestra:
- Imagen del código QR (escaneable)
- Evento al que pertenece (equipos, fecha, hora)
- Estado: **Válido** / **Usado** (según si fue escaneado en puerta)
- Tipo de QR (invitado, libre_50, etc.)
- Se puede filtrar por evento específico.
### 2.5 Beneficios de Promociones
1. Ir a **Promos** desde el menú principal.
2. Ver el mapa/listado de locales con beneficios.
3. Hacer clic en **"Obtener mi QR de beneficio"** en el local deseado.
4. El sistema genera un **QR de descuento único** para ese local.
5. Ver el QR en pantalla para presentarlo en el comercio.
> **Restricción:** Solo se puede generar 1 QR por local por usuario.
### 2.6 Seguir Equipos
- Desde la página pública de un equipo (`/equipos/{id}`), hacer clic en **"Seguir"**.
- Acceder a **Mis Equipos Seguidos** desde el Panel para ver el historial de partidos de los equipos favoritos.
- Hacer clic nuevamente en "Seguir" en un equipo ya seguido lo deja de seguir (toggle).
### 2.7 Notificaciones (`/notificaciones`)
- El ícono de campana en el menú muestra la cantidad de notificaciones no leídas.
- Las notificaciones pueden ser generadas por el sistema automáticamente (ej: "Tus QRs para el partido del sábado están disponibles").
- Desde el centro de notificaciones se puede:
- **Marcar como leída** una notificación individual.
- **Marcar todas como leídas**.
- **Eliminar** notificaciones individuales.
- **Eliminar todas** las notificaciones.
### 2.8 Editar Datos Personales
Desde el Panel de Usuario, sección **"Mi Cuenta"**:
- Actualizar **email** y **teléfono**.
- Los jugadores no pueden modificar su nombre, DNI o fecha de nacimiento (esos datos son gestionados por el admin del club).
### 2.9 Cambiar Contraseña
Desde el Panel de Usuario, sección **"Seguridad"**:
1. Ingresar la contraseña actual.
2. Ingresar la nueva contraseña (mínimo 6 caracteres).
3. Confirmar la nueva contraseña.
4. Guardar cambios.
### 2.10 Cerrar Sesión
- Hacer clic en **"Cerrar Sesión"** en el menú (esquina superior derecha o menú hamburguesa en móvil).
- La sesión se cierra de forma segura.
---
<a name="cap3"></a>
## 🎉 Capítulo 3 — Aficionado / Hincha
El aficionado tiene las mismas capacidades que el jugador en lo que respecta a disfrute de la plataforma, con algunas diferencias en la lógica de los QRs.
### 3.1 Inicio de Sesión y Registro
Idéntico al Jugador: login con DNI + contraseña. El registro es mediante la **Vía A** descripta en el Capítulo 1.
### 3.2 Panel de Usuario
Igual al del Jugador, con las siguientes diferencias visibles:
- **No se muestra** información de club ni categoría federada.
- El campo **"Localidad"** sí es editable (además de email y teléfono).
### 3.3 Solicitar QR para un Partido
El aficionado puede solicitar 1 QR por partido. A diferencia del jugador federado:
- No hay distinción por equipo ni categoría.
- Se genera 1 QR de tipo `publico`.
- En el futuro (Fase 6), este QR estará sujeto al pago de la entrada; actualmente se genera de forma directa.
El proceso es idéntico a los pasos 15 del apartado 2.3.
### 3.4 Mis QRs, Promociones, Notificaciones y Cuenta
Funciona exactamente igual que para el Jugador (ver apartados 2.4 al 2.10).
---
<a name="cap4"></a>
## 🏢 Capítulo 4 — Administrador de Club
El Admin de Club es el responsable designado de gestionar su institución dentro de OnAPB. Accede al panel de administración pero con alcance limitado exclusivamente a los datos de su club.
### 4.1 Inicio de Sesión
- En la pantalla de login, pestaña **"Administradores"**.
- Ingresar **usuario** (asignado por un Súper Admin) y **contraseña**.
### 4.2 Dashboard del Admin de Club (`/admin`)
Al ingresar, el Admin de Club ve:
- **Estadísticas rápidas** de su club: cantidad de equipos, jugadores y eventos relacionados.
- Nombre e identificación de su club.
- Accesos rápidos a los módulos disponibles.
### 4.3 Gestión de Jugadores (`/admin/jugadores`)
#### Ver listado de jugadores
- Lista de todos los jugadores pertenecientes a su club.
- Búsqueda por nombre, apellido o DNI.
- Cada jugador muestra: nombre, DNI, fecha de nacimiento, categoría (calculada automáticamente) y estado (activo/inactivo).
#### Crear un nuevo jugador
1. Hacer clic en **"Nuevo Jugador"**.
2. Completar el formulario:
- DNI, Nombre, Apellido, Fecha de Nacimiento.
- Club de Origen (puede ser cualquier club del sistema — útil para jugadores con pase).
- El campo "Club Actual" se asigna automáticamente al club del administrador.
3. Guardar.
4. El jugador se crea con estado **inactivo**. Necesitará completar su registro en `/asociate` para activar su cuenta.
> **Validación:** Si el DNI ya existe en el sistema, se muestra un error indicando a qué club pertenece el jugador actualmente.
#### Editar un jugador
- Modificar datos básicos (nombre, apellido, fecha de nacimiento, teléfono).
- No puede cambiar el club actual del jugador (eso requiere un pase gestionado por el SuperAdmin).
#### Eliminar un jugador
- El jugador se marca como eliminado (SoftDelete). No se borra físicamente.
#### Importar jugadores desde CSV
1. Hacer clic en **"Importar CSV"**.
2. Subir un archivo CSV en formato CAB (Argentina Basketball) o formato interno.
3. El sistema detecta automáticamente el formato y procesa cada fila.
4. Al finalizar, muestra un resumen: nuevos creados, omitidos (ya existían), errores.
#### Exportar jugadores a CSV
- Descargar el listado completo de jugadores del club en formato CSV.
- Compatible con el reimportador interno del sistema.
### 4.4 Gestión de Equipos (`/admin/equipos`)
#### Ver listado de equipos
- Lista de los equipos del club con cantidad de jugadores.
#### Crear un nuevo equipo
1. Hacer clic en **"Nuevo Equipo"**.
2. Seleccionar **Categoría** (ej: U13, U15, U17, Primera) y Division (A, B, etc.).
3. El club se asigna automáticamente.
#### Editar y eliminar equipos
- Modificar categoría y división.
- Eliminar (SoftDelete).
#### Gestionar jugadores del equipo
1. Desde el listado de equipos, hacer clic en el ícono de jugadores (**"Ver Plantel"**).
2. Ver la lista de jugadores asignados a ese equipo.
3. **Agregar jugador**: buscar por nombre/apellido/DNI (búsqueda en tiempo real) y hacer clic en "Agregar".
- Solo se pueden agregar jugadores del mismo club.
- El sistema previene la asignación duplicada.
4. **Remover jugador**: hacer clic en "Quitar" al lado del jugador.
### 4.5 Editar Identidad Visual del Club (`/admin/clubes/{id}/editar`)
El Admin de Club puede personalizar la apariencia de su club dentro del sistema:
- **Logo/Escudo**: subir una imagen (JPEG, PNG, WEBP, máx. 1MB) que aparecerá asociada al club en toda la plataforma.
- **Fondo de QR** (QR Background): subir una imagen que se usará como fondo decorativo en los códigos QR generados para los partidos de su club.
- **Color de texto del QR**: ingresar un color hexadecimal para personalizar la tipografía sobre el QR.
### 4.6 Gestión de Pases / Traspasos (`/admin/pases`)
Los pases son solicitudes formales para transferir un jugador de un club a otro.
#### Solicitar un pase
1. Ir a **Pases** y hacer clic en **"Nuevo Pase"**.
2. Seleccionar el jugador a transferir y el club de destino.
3. Enviar la solicitud.
4. El Súper Admin recibirá la solicitud para aprobarla o rechazarla.
#### Ver estado de pases
- Listado de todos los pases solicitados por el club.
- Estado posible: **Pendiente**, **Aprobado**, **Rechazado**.
### 4.7 Escanear QR en Eventos (`/admin/escanear-qr`)
Esta funcionalidad es para usar en la puerta del evento el día del partido.
1. Ir a **"Escanear QR"** en el menú.
2. Seleccionar el **evento** (partido) a gestionar. Solo aparecen eventos relacionados con su club.
3. Activar la **cámara** del dispositivo o ingresar manualmente el código del QR.
4. El sistema valida el QR en tiempo real:
-**QR Válido**: muestra nombre del titular, tipo de QR y pasa el estado a "Usado".
-**QR Inválido o Ya Usado**: muestra el error correspondiente.
### 4.8 Cerrar Sesión
- Hacer clic en **"Cerrar Sesión"** en el menú del panel administrador.
---
<a name="cap5"></a>
## 👑 Capítulo 5 — Súper Administrador (OnAPB)
El Súper Admin tiene control total sobre todas las entidades del sistema. Es el personal de la asociación OnAPB.
### 5.1 Inicio de Sesión
Igual que el Admin de Club: pestaña "Administradores", usuario y contraseña.
### 5.2 Dashboard del Súper Admin (`/admin`)
Al ingresar, el Súper Admin ve:
- **Estadísticas globales**: total de clubes, equipos, jugadores, eventos, promociones y noticias en todo el sistema.
- Accesos rápidos a todos los módulos.
---
### 5.3 Módulo de Clubes (`/admin/clubes`)
#### Ver todos los clubes
- Lista de todos los clubes registrados con conteo de equipos y jugadores.
#### Crear un club
1. Clic en **"Nuevo Club"**.
2. Ingresar ID Club (numérico) y Nombre.
3. Guardar.
#### Editar un club
- Modificar nombre, logo, fondo de QR y color de texto. (Igual que el Admin de Club pero con acceso a cambiar el nombre también).
#### Eliminar un club
- El club se marca como eliminado (SoftDelete). Los equipos y jugadores asociados quedan preservados.
---
### 5.4 Módulo de Equipos (`/admin/equipos`)
Idéntico al del Admin de Club pero con visión global (todos los clubes). Al crear un equipo, el Súper Admin puede seleccionar cualquier club del sistema.
---
### 5.5 Módulo de Jugadores (`/admin/jugadores`)
#### Ver todos los jugadores
- Lista global de todos los jugadores de todos los clubes.
- Filtro por nombre, apellido o DNI.
- Paginación de 25 registros por página.
#### Crear, editar, eliminar jugador
- Idéntico al Admin de Club pero con acceso a cambiar el **Club Actual** (útil para finiquitar traspasos).
#### Importar / Exportar CSV
- Importación masiva de jugadores en formato CAB, Interno o Legado.
- Importar para un club específico (seleccionado en el formulario).
---
### 5.6 Módulo de Eventos / Partidos (`/admin/eventos`)
#### Ver todos los eventos
- Lista de todos los partidos con filtros por estado: Próximos, En Curso, Finalizados.
#### Crear un nuevo partido
1. Clic en **"Nuevo Evento"**.
2. Completar:
- **Nombre del evento** (generado automáticamente en base a equipos).
- **Equipo Local** y **Equipo Visitante** (deben ser de la misma categoría y grupo si pertenecen a un torneo).
- **Fecha**, **Hora de Inicio** y **Hora de Fin**.
- **Sede**.
- **Torneo** (opcional): asignar el evento a un torneo existente.
- **Límite de QRs por jugador** (configurable).
3. Guardar. El evento queda en estado **"Próximo"**.
#### Editar un partido
- Modificar cualquier campo del evento.
#### Registrar resultados
1. Desde el listado de eventos, entrar al evento.
2. Ir a la sección **"Cargar Estadísticas"** o **"Resultado"**.
3. Ingresar marcador local y marcador visitante.
4. Registrar puntos individuales por jugador (para la tabla de goleadores).
5. Guardar. El evento cambia automáticamente a estado **"Finalizado"**.
#### Eliminar un evento
- El evento se marca como eliminado (SoftDelete). Los QRs asociados se limpian.
---
### 5.7 Módulo de Torneos (`/admin/torneos`)
#### Crear un torneo
1. Clic en **"Nuevo Torneo"**.
2. Ingresar nombre y año.
3. Guardar.
#### Añadir equipos al torneo
Desde la vista del torneo:
1. Buscar el equipo a agregar.
2. Asignarle un **grupo** (ej: Grupo A, Grupo B) si aplica.
3. Guardar.
#### Generar Fixture de Fase Regular
1. Desde el torneo, ir a **"Generar Fixture"**.
2. Configurar la cantidad de vueltas (ida, ida y vuelta).
3. El sistema genera un **preview** de todos los partidos a jugarse.
4. Confirmar para crear los eventos en el sistema.
#### Importar resultados históricos
- Subir un CSV con resultados de partidos ya jugados para cargar históricos de torneos anteriores.
#### Gestionar Playoffs
1. Al finalizar la fase regular, ir a **"Playoffs"**.
2. Configurar cuántos equipos clasifican a playoffs.
3. Generar el bracket eliminatorio.
4. A medida que se juegan los partidos, **"Avanzar ganador"** al siguiente cruce.
#### Ver posiciones y goleadores
- Desde `/torneos/{id}/posiciones`: tabla de posiciones filtrable por grupo/categoría.
- Desde `/torneos/{id}/goleadores`: ranking de anotadores.
- Desde `/torneos/{id}/playoffs`: bracket visual del cuadro eliminatorio.
---
### 5.8 Módulo de Pases / Traspasos (`/admin/pases`)
#### Ver todos los pases
- Lista de todas las solicitudes de traspaso pendientes, aprobadas y rechazadas.
#### Aprobar o rechazar un pase
1. Desde el listado, hacer clic en el pase pendiente.
2. Revisar los datos: jugador, club origen, club destino.
3. Hacer clic en **"Aprobar"** → el jugador cambia de club automáticamente.
4. O hacer clic en **"Rechazar"** → el pase queda como rechazado y el jugador permanece en su club actual.
#### Crear un pase directamente
El Súper Admin puede ejecutar una transferencia sin necesidad de solicitud previa, seleccionando jugador, club destino y guardando.
---
### 5.9 Módulo de Noticias (`/admin/noticias`)
#### Crear una noticia
1. Clic en **"Nueva Noticia"**.
2. Completar: Título, Contenido (texto largo), Imagen (opcional).
3. Guardar. La noticia aparece en `/noticias`.
#### Editar y eliminar noticias
- Actualizar cualquier campo.
- Eliminar elimina la noticia del sitio público.
---
### 5.10 Módulo de Promociones (`/admin/promociones`)
#### Crear una promoción / local con beneficio
1. Clic en **"Nueva Promoción"**.
2. Completar: Nombre del local, Descripción del beneficio, Dirección, Imagen, Coordenadas (para el mapa).
3. Guardar. El local aparece en `/promos`.
#### Editar y eliminar promociones
- Actualizar información del local.
- Eliminar la promoción del sistema.
---
### 5.11 Módulo de Carrusel / Hero (`/admin/carousel`)
El carrusel es la sección de diapositivas destacadas en la portada del sitio.
#### Agregar una diapositiva
1. Clic en **"Nueva Diapositiva"**.
2. Subir una imagen (recomendado: formato ancho/horizontal).
3. Completar un enlace opcional (ej: enlace a una noticia o evento).
4. Guardar.
#### Editar y eliminar diapositivas
- Actualizar imagen o enlace.
- Eliminar la diapositiva del carrusel.
---
### 5.12 Módulo de Sponsors (`/admin/sponsors`)
#### Agregar un sponsor
1. Clic en **"Nuevo Sponsor"**.
2. Subir el logo del patrocinador.
3. Ingresar URL del sitio del sponsor (opcional).
4. Guardar. El logo aparece en la franja rotativa del pie de página.
#### Editar y eliminar sponsors
- Reemplazar logo o cambiar URL.
- Eliminar el sponsor de la franja.
---
### 5.13 Módulo de Usuarios Administradores (`/admin/usuarios`)
#### Ver todos los administradores
- Lista de todos los usuarios con acceso al panel de administración.
#### Crear un nuevo administrador
1. Clic en **"Nuevo Usuario Admin"**.
2. Ingresar:
- **Usuario** (nombre de login).
- **Contraseña**.
- **Rol**: `1 = Súper Admin` o `2 = Admin de Club`.
- **Club** (solo si rol 2): asociar al club que administrará.
3. Guardar.
#### Editar y eliminar administradores
- Cambiar contraseña, rol o club asignado.
- Eliminar el acceso de un administrador.
---
### 5.14 Módulo de Categorías (`/admin/categorias`)
Las categorías definen los rangos de edad de los jugadores (ej: U13 = 12-13 años).
#### Crear una categoría
1. Ingresar nombre (ej: "U13"), edad mínima (ej: 12) y edad máxima (ej: 13).
2. Marcar si es **"Categoría Libre"** (los jugadores de esta categoría obtienen 50% de descuento en entradas).
3. Guardar.
#### Editar y eliminar categorías
- Las categorías modificadas se aplican automáticamente a todos los jugadores ya existentes (la categoría se calcula dinámicamente).
---
### 5.15 Escanear QR en Eventos (`/admin/escanear-qr`)
Idéntico al del Admin de Club, pero con visión de todos los eventos del sistema. Ver apartado 4.7 para el proceso detallado.
---
### 5.16 Configuración General (`/admin/configuracion`)
Ajustes globales del sistema:
- Frecuencia de backups automáticos.
- Otros parámetros de comportamiento del sistema.
---
### 5.17 OnAPB Genius — Asistente de IA
El portal incluye un asistente conversacional basado en IA (Google Gemini) que permite consultar y operar el sistema mediante lenguaje natural. Se invoca desde el botón flotante del chat.
**Quién puede usar qué:**
| Rol | Tools disponibles |
|---|---|
| Visitante / Aficionado / Jugador | Chat de ayuda general del portal (sin acceso a operaciones) |
| Administrador de Club | Solo tools de **lectura** |
| Súper Administrador | Lectura + **escritura** + **rollback** |
**Tools disponibles para Súper Admin:**
**Lectura (consulta de datos):**
- `listar_torneos` — Lista todos los torneos con ID, nombre y fechas. Usala cuando necesites buscar el ID de un torneo por su nombre.
- `listar_equipos` — Lista equipos. Filtros opcionales: `id_torneo`, `grupo` ("A", "B", ...).
- `listar_eventos` — Lista partidos. Filtros opcionales: `fecha_desde`, `fecha_hasta` (formato YYYY-MM-DD), `id_torneo`.
**Escritura (modifican la base de datos — requieren tu confirmación explícita):**
- `crear_partido` — Crea un nuevo partido. Campos: `id_equipo_local`, `id_equipo_visitante`, `fecha_evento`, `hora_inicio`, `hora_fin`, `sede`, `id_torneo`.
- `cargar_puntaje` — Actualiza el marcador de un partido existente. Campos: `id_evento` (UUID), `marcador_local`, `marcador_visitante`.
- `redactar_noticia` — Publica una noticia. Campos: `titulo`, `contenido`, `id_torneo` (opcional), `categoria` (opcional).
**Rollback (deshacer una creación):**
- `eliminar_noticia` — Borra una noticia por su `id_noticia` (numérico).
- `eliminar_partido` — Borra (soft delete) un partido por su `id_evento` (UUID).
**Cómo se usa (flujo típico):**
1. Escribí en lenguaje natural lo que querés ("creá una noticia sobre el partido del sábado", "qué equipos hay en el torneo Apertura", "cargá el marcador del partido de ayer 78 a 65").
2. Si pedís una acción de escritura, Genius **primero te muestra un resumen** con los datos a usar y te pregunta "¿Confirmás?". Tenés que responder "sí", "dale", "confirmo" u "ok" para que ejecute.
3. Tras crear algo, Genius te devuelve el ID del recurso. Guardalo por si querés revertir.
4. Para deshacer: pedile "eliminá la noticia ID X" o "borrá el partido que acabás de crear". Volverá a pedir confirmación antes de borrar.
**Buenas prácticas:**
- Si mencionás un torneo/equipo por nombre, Genius usa `listar_torneos` / `listar_equipos` para resolver el ID. No hace falta que lo sepas de memoria.
- Verificá siempre el resumen de confirmación antes de responder "sí". La IA puede interpretar mal fechas o nombres ambiguos.
- Si algo sale mal, revisá `storage/logs/laravel.log` donde quedan registrados los errores de las tools.
- Los límites de la cuenta gratuita de Gemini están configurados en `.env` (`GENIUS_MAX_MESSAGES_PER_SESSION`, `GENIUS_SESSION_WINDOW_MINUTES`). Podés ajustarlos si cambia el uso.
---
## ❓ Preguntas Frecuentes
**¿Cómo sé si ya tengo una cuenta de jugador?**
Si sos jugador federado, tu DNI ya está en el sistema cargado por el admin de tu club. Solo debés ir a `/asociate` → pestaña "Soy Jugador" e ingresar tus datos para activar la cuenta.
**¿Puedo tener cuenta de jugador Y de aficionado con el mismo DNI?**
No. El sistema detecta si ya existe un registro (como jugador o aficionado) y te informa antes de permitir el registro.
**¿Qué pasa si el QR que generé fue escaneado?**
El estado del QR cambia a "Usado" y no puede ser utilizado nuevamente. Cada QR tiene un solo uso.
**¿Puedo generar el QR de una promo más de una vez?**
No. Por cada usuario y cada promoción, solo se puede generar un QR de beneficio.
**¿Qué significa cada tipo de QR?**
- `invitado` → Jugador que pertenece a un equipo del partido. Puede generar múltiples (para acompañantes).
- `libre_50` → Jugador de categoría Libre. Obtiene descuento del 50% en la entrada.
- `publico` → Aficionado. Acceso estándar.
---
*Manual redactado para el Proyecto Integrador OnAPB — Taller de Integración, FCYT UADER 2026.*