Módulo del Panel de Entrenador

Propósito

Este módulo proporciona a los entrenadores una plataforma integral para gestionar sus clases, alumnos y eventos de entrenamiento, optimizando sus tareas diarias y mejorando la interacción con sus estudiantes.

Funcionalidades Clave

Gestión de Clases

  • Creación y Edición de Clases: Los entrenadores pueden crear nuevas clases, definir horarios, canchas asignadas y capacidad máxima.

  • Visualización de Clases: Acceso a una vista clara de todas sus clases programadas, incluyendo detalles como fecha, hora, ubicación y lista de alumnos inscritos.

  • Cancelación de Clases: Opción para cancelar clases, con la posibilidad de notificar a los alumnos afectados.

Gestión de Alumnos

  • Lista de Alumnos: Mantenimiento de un registro de los alumnos asociados al entrenador.

  • Perfiles Básicos: Visualización de información básica de cada alumno.

  • Asignación a Clases: Capacidad para asignar y desasignar alumnos a clases específicas.

Gestión de inscripciones (enrollment)

En trainer, la ruta /events y la API GET /trainer/events gestionan inscripciones a clases, no eventos PMV del panel. Para torneos/participantes del operador ver Módulo de Eventos (Panel).

  • Revisión de solicitudes de inscripción

  • Aceptación/rechazo (PATCH /trainer/events/:id/accept|reject)

  • Registro de asistencia (PATCH /trainer/events/:id/attendance)

Calendario y Disponibilidad

  • Vista de Calendario: Un calendario interactivo que muestra la programación de clases del entrenador y la disponibilidad general de las canchas.

  • Filtros de Eventos Propios: Opción para filtrar y visualizar únicamente los eventos y entrenamientos creados por el entrenador.

Registro Rápido de Clientes

  • Evento Directa: Herramienta para que los entrenadores puedan registrar rápidamente a nuevos clientes o inscribir a clientes existentes en sus eventos de entrenamiento.

Consulta de Estado de Pagos

  • Visualización de Pagos: Acceso de solo lectura al estado de los pagos de sus alumnos, permitiendo al entrenador tener un seguimiento financiero básico sin capacidades de edición.

Control de Acceso

  • Roles y Permisos: Implementación de un control de acceso basado en roles (RBAC) que restringe las funcionalidades del panel de entrenador, ocultando módulos como la gestión de tarifas y reportes financieros completos.

  • Rol trainer: Solo los usuarios con el claim booleano trainer habilitado pueden acceder al panel y a los endpoints asociados.

Aspectos Técnicos

Frontend

  • Proyecto Angular: projects/trainer (puerto 6102 con npm run dev:serve)

  • Tecnología: Angular 21 con componentes standalone, señales (signals) para estado local y Tailwind CSS 4 para estilos utilitarios.

  • Rutas principales:

    • /login, /recovery-password, /reset-password

    • /dashboard – resumen de métricas del entrenador.

    • /classes, /classes/:id, /classes/new, /classes/:id/edit

    • /students, /students/:id

    • /events — inscripciones (enrollment), no eventos PMV del panel

  • Autenticación: Usa OAuth2 local IdP (SDK web) y el mismo flujo de autenticación que el panel de administración.

Backend

  • API REST: El namespace de API para entrenadores está publicado bajo /api/trainer/**.

  • Router de trainer: Implementado en functions/routes/trainer/*.js, montado en functions/server.js bajo el prefijo /trainer.

  • Endpoints clave (resumen):

    • GET /api/trainer/dashboard/stats – estadísticas agregadas de clases, alumnos e eventos.

    • GET /api/trainer/classes / POST /api/trainer/classes – listado y creación de clases de entrenamiento.

    • GET /api/trainer/classes/:id / PUT /api/trainer/classes/:id / DELETE /api/trainer/classes/:id – detalle y actualización de clases.

    • POST /api/trainer/classes/:id/cancel – cancelación de una clase.

    • GET /api/trainer/students / GET /api/trainer/students/:id – consulta de alumnos asociados al entrenador.

    • POST /api/trainer/students/:id/assign – asignación de un alumno a una clase específica.

    • GET /api/trainer/events / GET /api/trainer/events/:id – gestión de eventos.

    • PATCH /api/trainer/events/:id/accept / PATCH /api/trainer/events/:id/reject – aceptación/rechazo de solicitudes.

    • PATCH /api/trainer/events/:id/attendance – marcado de asistencia.

Integración con Roles y Seguridad

  • Claim trainer: requireTrainerAccess en functions/server.js valida trainer === true en el JWT.

  • Gestión desde Sudo: El panel sudo permite a los super usuarios asignar o revocar el rol de entrenador a través de la pantalla de gestión de usuarios (/sudo/users), añadiendo o eliminando el claim booleano trainer.

  • Aislamiento de datos: Todas las consultas a base de datos filtran por trainer_id para garantizar que cada entrenador solo vea y modifique sus propias clases, eventos y alumnos.