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

  • Revisión de Inscripciones: Los entrenadores pueden revisar las solicitudes de inscripción a sus clases o eventos.

  • Aceptación/Rechazo: Herramientas para aceptar o rechazar inscripciones, gestionando la capacidad de las clases.

  • Registro de Asistencia: Funcionalidad para marcar la asistencia de los alumnos a las clases.

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

  • Inscripción 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 dedicado: Aplicación independiente en projects/trainer, desplegada en el target de hosting unosportclubcoach.

  • 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

    • /enrollments

  • Autenticación: Usa Firebase Auth (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 inscripciones.

    • 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/enrollments / GET /api/trainer/enrollments/:id – gestión de inscripciones.

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

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

Integración con Roles y Seguridad

  • Claim trainer: El middleware requireTrainerAccess en functions/index.js valida que el usuario autenticado posea trainer === true en sus custom claims.

  • 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, inscripciones y alumnos.