Clientes y listas de clientes
Cómo un coach acepta miembros, asigna entrenamientos, lee los check-ins semanales y escribe a cada cliente, y qué ve el miembro.
Para el paquete Full Stack
Quién entrena a quién
Un miembro tiene como máximo un coach activo. Dos permisos se reparten el trabajo:
| Permiso | Lo tiene | Qué abre |
|---|---|---|
coaching.clients | Head Coach, Personal Trainer | La lista de clientes propia de quien llama: My Clients, el plan, los check-ins semanales y los mensajes de cada cliente. Los clientes de nadie más. |
coaching.assign | Head Coach, Coach, Gym Manager | El lado del gimnasio: mover a cualquier miembro a un coach, o sacarlo de todas las listas de clientes. |
La carga de datos da al Head Coach la lista de clientes más completa, da una más pequeña al Personal Trainer de demostración (trainer@example.com) y a cada otra cuenta de Personal Trainer y de Coach, y deja al resto de los miembros (once en una carga nueva) sin coach, para que un coach tenga a quién aceptar. Solo una cuenta con coaching.clients ve Mis clientes: el Head Coach y los Personal Trainer. El rol Coach de la carga de datos no lo concede, así que una cuenta que lo tiene, como john.smith@staff.com, tiene clientes en su lista pero nunca los ve.
Lo que ve un coach
- El resumen del coach en
/en/dashboard: cuántos clientes entrenaron esta semana, quién ha dejado de dar señales (nada terminado en 7 días), los check-ins semanales que esperan respuesta y el trabajo asignado para hoy en toda la lista de clientes. - My Clients en
/en/dashboard/clients: la lista de clientes con la última sesión de cada cliente, las sesiones y los minutos de esta semana, y cuánto de su plan ha completado. Add client busca los miembros que no tienen coach y acepta a uno. - La página de un cliente en
/en/dashboard/clients/<username>: su semana, el trabajo asignado marcado como hecho, perdido o próximo, sus check-ins semanales con un cuadro de respuesta y el hilo de mensajes.
Asignar trabajo
- Un coach da a un cliente un entrenamiento del catálogo, una fecha de inicio y una nota opcional. El entrenamiento aparece en la página Workouts del miembro.
- Las sesiones que termina el propio miembro son las que marcan como hecho el trabajo asignado. Nada se marca a mano.
- Un coach quita una asignación desde la página del cliente.
Check-ins semanales
- Desde la página Workouts, un miembro envía un check-in semanal por semana: cómo se sintió la semana del 1 al 5, un peso opcional y notas opcionales. Si lo envía de nuevo esa semana, lo sustituye.
- El coach lo lee en la página del cliente y en el resumen, primero los que no tienen respuesta, y responde. El miembro ve la respuesta debajo de su check-in semanal.
- Enviar un check-in semanal y responder a uno envían cada uno una notificación a la otra parte.
Mensajes
Cada coach y cliente comparten un hilo privado. Un mensaje admite hasta 2.000 caracteres y hasta 6 adjuntos (imágenes, clips o archivos), que pasan por la ruta de subida y necesitan un bucket de medios. Cada mensaje envía una notificación a la otra parte.
Mover miembros entre coaches
En la página de un miembro, dentro de Gym, el personal con coaching.assign elige el coach del miembro, o lo saca de todas las listas de clientes. La lista ofrece las cuentas que tienen el rol llamado Coach, con cuántos clientes tiene cada una.
Da al rol Coach una lista de clientes
El rol Coach de los datos de demostración no concede coaching.clients, así que a una cuenta que solo tiene ese rol no se le ofrece My Clients para los miembros que tiene asignados. Concede coaching.clients al rol Coach en la pantalla Coach Roles si tus coaches deben trabajar con sus listas de clientes. El Head Coach y los Personal Trainers aceptan miembros ellos mismos, desde Add client.
Las rutas de coaching
Todas las rutas están bajo /api/fitness/coaching y necesitan un token bearer. Las rutas de la lista de clientes responden para la cuenta que hace la petición y para nadie más.
| Rutas | Permiso | Qué hacen |
|---|---|---|
GET /clients, GET /clients/:username, GET /available-members, POST /clients | coaching.clients | La lista de clientes, un cliente, los miembros sin coach, aceptar a uno ({ username }) |
GET /workouts, GET|POST /clients/:username/plan, DELETE /plan/:id | coaching.clients | El catálogo del que asignar, el plan de un cliente, asignar ({ workoutSlug, startsOn, note? }), quitar |
GET /roster/assigned-work, GET /roster/check-ins | coaching.clients | El trabajo de hoy y los check-ins semanales de esta semana en toda la lista de clientes |
GET /clients/:username/check-ins, POST /check-ins/:id/reply | coaching.clients | Los check-ins semanales de un cliente, y una respuesta ({ body }, hasta 2.000 caracteres) |
GET|POST /clients/:username/messages | coaching.clients | El hilo con un cliente |
GET /my-coach, GET /my-plan, GET /check-ins, GET /messages | fitness.view | El lado del miembro: su coach, su plan, sus check-ins semanales y su hilo |
POST /check-ins, POST /messages | fitness.edit | Enviar el check-in semanal de esta semana ({ energy, weightKg?, notes? }), escribir al coach |
GET /coaches, GET /assignments/:username, POST /assignments, DELETE /assignments/:username | coaching.assign | Las cuentas con rol Coach, quién entrena a un miembro, mover un miembro ({ coachUsername, memberUsername }), sacar a un miembro |
Los errores vuelven como claves que traduce el panel, como already_your_client, member_has_coach, not_a_coach, no_coach y message_required.