ANALYTICS / PANEL

P2LRN Analytics

Panel embebible de analítica educativa y learning analytics para seguimiento de alumnos, progreso de cursos, actividad, intentos y calificaciones en webs y plataformas LMS.

1. Qué muestra

Resumen

Alumnos, cursos, matrículas, finalización, nota oficial media, tiempo activo y señales que requieren revisión.

Alumnos

Progreso, cursos, intentos, tiempo activo, última actividad y detalle por curso.

Cursos

Alumnos iniciados y completados, progreso medio, nota media, aprobados, actividad e intentos.

Notas

Distribución y libro de calificaciones, diferenciando expresamente notas autoritativas de puntuaciones informativas.

Actividad

Learning events normalizados, categorías, evolución reciente e interacciones recibidas desde Player y Host.

Señales

Reglas transparentes para inactividad, progreso bajo, nota baja e intentos fallidos repetidos.

2. Datos del curso y resultados

El paquete .p2lrn define el contenido y las actividades del curso. El seguimiento de una realización llega desde Player, desde un resultado .p2lrn-result o desde la plataforma donde se integra P2LRN.

Abrir un resultado offline

En Analytics pulsa Abrir resultado y selecciona el .p2lrn-result. Se muestran alumno, curso, intento, aperturas, sesiones, tiempo activo, eventos e incidencias disponibles.

Desde Studio

Después de revisar una devolución pulsa Abrir en Analytics. El resultado se transfiere al panel sin tener que volver a seleccionarlo.

Datos de una plataforma

Una web o LMS puede asignar directamente su dataset al componente para reunir varios alumnos, cursos y calificaciones autorizadas.

Una puntuación offline no es una nota oficial.

Analytics mantiene las puntuaciones importadas de .p2lrn-result como informativas. Sólo se incluyen en los promedios oficiales las calificaciones que una fuente autorizada marque expresamente como autoritativas.

3. CDN

Carga el componente y entrégale las métricas del curso abierto desde Player o los resultados .p2lrn-result importados. No es obligatorio utilizar una API. El atributo src sólo sirve cuando ya existe un documento JSON de métricas, no para apuntar directamente al archivo .p2lrn.

HTML
<script src="https://p2lrn.netlify.app/analytics/current/dist/p2lrn-analytics.js"></script>
<p2lrn-analytics id="analytics-curso" course-id="curso-actual"></p2lrn-analytics>
<script>
  // datasetCurso contiene métricas reales de este curso, obtenidas de Player
  // o de resultados .p2lrn-result ya validados; no es el archivo .p2lrn.
  document.querySelector("#analytics-curso").data = datasetCurso;
</script>

Para fijar una prerelease concreta, sustituye current por 0.5.0-alpha.11.

4. NPM

En proyectos con dependencias gestionadas, instala Analytics y registra el componente desde tu aplicación.

Terminal
npm install @p2lrn/analytics@0.5.0-alpha.11
JavaScript / TypeScript
import '@p2lrn/analytics';

const panel = document.querySelector('p2lrn-analytics');
panel.data = datasetCurso; // datos reales del curso y resultados de sus alumnos
// refresh() sólo es necesario cuando se ha configurado un dataSource o src.

5. Dataset del Host

El contrato utiliza seis colecciones. Los identificadores son opacos para Analytics y su significado pertenece a tu plataforma.

learners

Identidad visible autorizada: id, nombre, correo opcional, grupo, cohorte y etiquetas.

courses

Curso, código y metadatos de presentación.

enrollments

Relación alumno–curso y progreso global cuando el Host ya lo calcula.

attempts

Intentos, estado, progreso, timestamps y tiempo activo. Un intento de actividad con entityId no completa por sí solo el curso; tampoco lo hace un intento failed. La finalización global requiere matrícula completada, progreso explícito al 100 % o un intento completado de nivel curso.

grades

Calificaciones con valor, máximo, aprobado y la bandera authoritative. Para medias globales de curso, omite entityId o usa el mismo courseId; una nota de actividad con otro entityId aparece en el libro, pero no altera la media del curso.

events

Eventos P2LRN normalizados con alumno, curso, intento, categoría, contexto y payload.

JSON · ejemplo reducido
{
  "learners": [{"id":"u-1","name":"Ana"}],
  "courses": [{"id":"c-1","title":"Matemáticas"}],
  "enrollments": [{"learnerId":"u-1","courseId":"c-1","progress":0.72}],
  "attempts": [{"id":"a-1","learnerId":"u-1","courseId":"c-1","activeTimeMs":840000}],
  "grades": [{"learnerId":"u-1","courseId":"c-1","value":82,"maxValue":100,"authoritative":true}],
  "events": [{"type":"p2lrn:progress","timestamp":"2026-10-28T10:00:00Z","learnerId":"u-1","courseId":"c-1"}]
}

6. Fuente de datos de una plataforma

Cuando P2LRN está integrado en una web o LMS, la plataforma puede entregar al panel el dataset del curso o implementar un dataSource propio. Analytics no exige una ruta API concreta ni obtiene métricas inventadas a partir del contenido del curso.

JavaScript / TypeScript
const panel = document.querySelector('p2lrn-analytics');

panel.data = datasetDelCurso;

// O bien:
panel.dataSource = {
  async load(filtros) {
    return obtenerDatosAutorizadosDelCurso(filtros);
  }
};

Si una aplicación ya dispone de una ruta autenticada propia, también puede utilizar createHttpAnalyticsDataSource apuntando a esa ruta de la aplicación. P2LRN no define ni impone una URL fija.

Las calificaciones sólo se consideran oficiales cuando la fuente autorizada las marca expresamente con authoritative: true. Un resultado offline no establece ese indicador por sí solo.

La aplicación integradora decide cómo identifica al usuario y qué datos puede consultar. El panel se limita a representar el dataset recibido.

7. Eventos y tiempo activo

Los eventos de Player pueden convertirse a learning-event/1. Analytics entiende categorías de ciclo de vida, navegación, evaluación, progreso, finalización, atención, medios, interoperabilidad, colaboración y error.

Para tiempo activo, el panel acepta activeTimeMs del intento y eventos p2lrn:active-time/p2lrn:attention. Cuando recibe valores acumulados del mismo intento conserva el mayor, evitando sumar dos veces el mismo intervalo.

8. Señales de seguimiento

Las señales no son un diagnóstico ni una predicción automática. Son reglas visibles que el Host puede ajustar.

Inactividad

Por defecto, 14 días sin actividad en un curso no completado.

Progreso bajo

Por defecto, menos del 35 % cuando el alumno ya ha empezado.

Nota baja

Por defecto, menos del 60 % en una nota autoritativa.

Intentos fallidos

Por defecto, dos o más intentos con estado failed.

El panel muestra el motivo de cada señal para que una persona pueda interpretarla y decidir qué hacer.

9. API del componente

data

Asigna directamente un dataset en memoria.

dataSource

Objeto con load(filters) para conectar el Host.

refresh()

Recarga la fuente y vuelve a calcular las vistas.

setView(view)

Cambia entre overview, learners, courses, grades y activity.

selectLearner(id) / selectCourse(id)

Abren el detalle correspondiente.

exportCsv(kind)

Exporta alumnos, cursos o notas en CSV.

importOfflineResult(file)

Abre un .p2lrn-result y lo convierte en un dataset de Analytics manteniendo sus puntuaciones como informativas.

page-size / pageSize

Número de filas por página para alumnos y libro de notas. Predeterminado: 50; rango: 10–200.

10. API de agregación

También puedes usar Analytics sin montar el panel.

JavaScript / TypeScript
import {
  normalizeAnalyticsDataset,
  computeAnalyticsSnapshot,
  filterAnalyticsDataset,
  analyticsToCsv
} from '@p2lrn/analytics';

const dataset = normalizeAnalyticsDataset(raw);
const snapshot = computeAnalyticsSnapshot(dataset);
const csv = analyticsToCsv(snapshot, {kind:'courses'});

11. Eventos del Web Component

p2lrn-analytics-ready

El componente se ha registrado y está listo.

p2lrn-analytics-refresh

Una carga de datos terminó correctamente.

p2lrn-analytics-select

Se seleccionó un alumno o curso.

p2lrn-analytics-export

Se generó un CSV.

p2lrn-analytics-import

Se abrió correctamente un resultado offline.

p2lrn-analytics-error

La carga de la fuente produjo un error.

12. Privacidad y seguridad

  • No incluyas alumnos, correos, notas o historial dentro de un paquete .p2lrn.
  • Autoriza el endpoint de Analytics según institución, rol, curso y alcance del usuario conectado.
  • No confíes en learnerId o courseId enviados por el navegador para decidir permisos.
  • El CSV contiene los datos visibles en el panel; su descarga debe respetar la política de tu plataforma.
  • Las puntuaciones informativas del navegador no deben convertirse silenciosamente en notas oficiales.