Skip to main content

Módulo Emociones

El módulo Emotions (src/domains/emotions/) gestiona el catálogo de emociones asociadas a las actividades de Vibra.

Schema Emotion

Definido en schemas/emotion.schema.ts. Colección: emotions.

CampoTipoDescripción
idstring (único)Identificador (ej. EMO-001)
namestring (requerido)Nombre de la emoción (ej. "Alegría")
descriptionstringDescripción del estado emocional
iconostring (requerido)Nombre del archivo de ícono (ej. joy.png)
orientationNotestringNota de orientación pedagógica
percentNotenumberPorcentaje de referencia (default: 0)
categoryenumPositiva, Negativa, Neutra, Basica, Compleja
intensitynumber (1–10)Nivel de intensidad
isActivebooleanSi está activa (default: true)

Endpoints

MétodoRutaDescripciónPermiso
POST/api/emotionsCrear emoción8
GET/api/emotionsListar emociones (paginado)Bypass
GET/api/emotions/:idObtener por ID
PUT/api/emotions/:idActualizar emoción8
DELETE/api/emotions/:idSoft delete (isActive=false)8
GET/api/emotions/by-name/:nameBuscar por nombre exacto
GET/api/emotions/distributionDistribución de respuestas por emoción
GET/api/emotions/evolutionEvolución temporal (últimos N días)

Distribución (/api/emotions/distribution)

Retorna un arreglo con { name, value, icono } para gráficas de tipo donut/pastel. Acepta filtros:

  • startDate / endDate (ISO string)
  • courseId — filtrar por curso

Evolución (/api/emotions/evolution)

Retorna { date, count } por día para los últimos N días (default: 30). Útil para gráficas de líneas temporales.

Relación con Activities

Cada Activity tiene una referencia emotion: ObjectId → Emotion. El módulo de actividades expone GET /api/activities/emotions/list que retorna los IDs de emociones disponibles según las actividades registradas. Esta relación permite:

  • Filtrar actividades por emoción
  • Asignar actividades según el estado emocional del participante
  • Generar gráficas de distribución emocional