> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getcoremetrics.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sesiones

> Cómo organiza ZoneMetrics los entrenamientos monitoriza, calcula resúmenes por asistente y entrega información posterior a la sesión?

Una sesión es la unidad principal de actividad monitorizada en ZoneMetrics. Agrupa a un conjunto de asistentes para un período de entrenamiento definido, recopila su telemetría de frecuencia cardíaca en tiempo real y produce automáticamente un resumen detallado cuando el entrenamiento termina.

## Estructura de la sesión

Cada sesión tiene las características siguientes:

| Característica   | Descripción                                                                                      |
| ---------------- | ------------------------------------------------------------------------------------------------ |
| Tipo de sesión   | Una etiqueta para el formato del entrenamiento, como `"CrossFit"` o `"Ciclismo"`.                |
| Asistentes       | Nombres de los asistentes inscritos en la sesión (mínimo 1).                                     |
| Zona objetivo    | Zona global de esfuerzo objetivo opcional que los entrenadores establecen para el entrenamiento. |
| Minutos por zona | Objetivos opcionales de minutos por zona: `{ z1, z2, z3, z4, z5 }`.                              |

## Crear una sesión

<Steps>
  <Step title="Inscribir asistentes">
    Prepara la lista de asistentes que deseas incluir. Cada asistente debe pertenecer a tu instalación.
  </Step>

  <Step title="Establecer parámetros opcionales de entrenamiento">
    Si deseas guiar la intensidad, proporciona un `objetivo` (1–5) y objetivos de minutos por zona.
  </Step>

  <Step title="Comenzar la sesión">
    La sesión comienza inmediatamente (la fecha del sistema se establece en la marca de tiempo actual).
  </Step>

  <Step title="Agregar asistentes durante la sesión (opcional)">
    Durante la sesión, puedes añadir asistentes adicionales mientras la sesión aún está activa.
  </Step>
</Steps>

<Note>
  La verificación de consentimiento RGPD se ejecuta antes de que se cree la sesión. Si el **modo RGPD**
  está habilitado para tu instalación, cada asistente en `attendeeIds` debe tener una
  fecha de `gdprConsentedAt` registrada.
</Note>

## Finalizar una sesión

Tras finalizar una sesión activa, ZoneMetrics realiza las siguientes acciones:

1. Registra la fecha de finalización de la sesión y la marca como inactiva para evitar más actualizaciones.
2. Recupera toda la telemetría recopilada durante la sesión.
3. Calcula un resumen para cada asistente inscrito.
4. Guarda localmene el resumen de forma atómica junto con la actualización de la sesión.
5. Envía notificaciones posteriores a la sesión (correo electrónico, notificaciones push) y recomendaciones opcionales de IA.

La entrega de notificaciones ocurre de forma asíncrona y no bloquea la respuesta.

## Resumen de la sesión

Cuando una sesión termina, ZoneMetrics calcula y almacena automáticamente un resumen que desglosa el rendimiento de cada asistente.

### Estadísticas por asistente

| Valor               | Descripción                                                                  |
| ------------------- | ---------------------------------------------------------------------------- |
| `avgHeartRate`      | Frecuencia cardíaca promedio en todos los puntos de telemetría de la sesión. |
| `maxHeartRate`      | Frecuencia cardíaca más alta registrada.                                     |
| `minHeartRate`      | Frecuencia cardíaca más baja registrada.                                     |
| `estimatedCalories` | Calorías activas quemadas (ver cálculo de calorías a continuación).          |
| `effortPoints`      | Minutos pasados en la Zona 4 o Zona 5.                                       |
| `zoneDistribution`  | Lista de `{ zone, name, time, percentage }` para las cinco zonas.            |
| `totalTime`         | Duración total de la sesión en segundos.                                     |

### Cálculo de calorías

Las calorías se estiman utilizando una fórmula basada en MET derivada de la reserva de frecuencia cardíaca (método Karvonen/Swain). La fórmula calcula el esfuerzo del asistente como una fracción de su reserva de frecuencia cardíaca, lo convierte en un valor MET y aplica su peso corporal y duración de la sesión. La tasa metabólica basal se resta para que el resultado refleje solo las calorías atribuibles al ejercicio en sí.

```
hrr_fraction = (avgHR - restingHR) / (maxHR - restingHR)
MET          = 1 + 14 × hrr_fraction
activeCalories = (MET - 1) × weight_kg × durationHours
```

Esto significa que dos asistentes que completan la misma sesión pueden tener estimaciones de calorías diferentes según su frecuencia cardíaca en reposo, frecuencia cardíaca máxima y peso corporal.

## Entrega posterior a la sesión

Después de que una sesión termina, ZoneMetrics puede enviar resultados a los asistentes a través de dos canales.

<CardGroup cols={2}>
  <Card title="Resúmenes por correo electrónico" icon="mail">
    Los asistentes que han activado las notificaciones por correo electrónico reciben un correo electrónico de resumen de sesión. El correo incluye estadísticas de frecuencia cardíaca, distribución de zonas, estimación de calorías y puntos de esfuerzo. Si el asistente ha activado las recomendaciones de IA, el correo también incluye consejos personalizados posteriores al entrenamiento.
  </Card>

  <Card title="Notificaciones push" icon="bell">
    Los asistentes que han activado las notificaciones push reciben una breve notificación push con la duración de la sesión, calorías y frecuencia cardíaca promedio. Las notificaciones solo se envían a los asistentes que las han habilitado en su perfil.
  </Card>
</CardGroup>

<Info>
  Tanto la entrega por correo electrónico como por push son de tipo "fire-and-forget". Un fallo en la entrega no afecta
  el registro de la sesión ni el resumen almacenado.
</Info>

## Recuperar un resumen

Puedes obtener el resumen almacenado para cualquier sesión completada.
