Integración LMS y LTI
Integración LMS y LTI
ColabEdu se integra bidireccionalmente con sistemas de gestión de aprendizaje externos (LMS como Canvas, Moodle y Google Classroom) utilizando el módulo ce-svc-lms-integrator en ce-svc-parent.
La integración cubre tres dimensiones operativas principales:
- Sincronización Operacional: Importación de organizaciones, cursos, rosters de alumnos y profesores desde el LMS.
- Aprovisionamiento de Aulas (Provisioning): Creación y limpieza de entornos de pruebas y onboarding a través de plantillas YAML.
- Publicación Bidireccional de Notas: Sincronización automática de calificaciones e informes hacia el libro de calificaciones del LMS.
Arquitectura de Sincronización
┌─────────────────────────────────────────────────────────┐│ CANVAS / MOODLE ││ ││ Course ──────────── Assignment ──── Submission ││ │ │ │ ││ │ LTI context_id │ assignment_id │ webhook ││ ▼ ▼ ▼ │├──────────────────────────┼───────────────┼──────────────┤│ Course ◄─ context_id resource_links ◄── lms_ ││ │ │ assignment_id │ ││ Pathway Exercise student_exercise_ ││ │ │ attempts ││ users.lms_external_id ────┘ │ ││ "canvas:12345" ▼ ││ LmsSubmissionIngestion ││ Service.resolveUser() ││ ││ COLABEDU │└─────────────────────────────────────────────────────────┘El Puente LTI v1.3 y el Patrón B→C
En un flujo estándar LTI 1.3, la vinculación requiere una acción manual del profesor (Deep Linking). Para evitar esto en pruebas automatizadas y tests E2E, ColabEdu implementa el patrón B→C (Bypass Deep Linking):
- El CLI ejecuta
lms register-link➔ persiste el ID nativo del assignment (lms_assignment_id) directamente en la tablalms_resource_links. - Al entregarse una tarea en el LMS, llega el webhook a
LmsWebhookController. - El sistema resuelve el enlace sin haber realizado el Deep Linking manual en la interfaz visual, permitiendo corregir y enviar la nota de vuelta mediante API de forma transparente.
LmsGradeSyncWorker (Cola de Redis)
El envío de calificaciones de vuelta al LMS es asíncrono y se gestiona a través de un consumidor de Redis Stream:
Pipeline de Grading │ ▼ (Estado FINALIZADO)Redis Stream: lms-grade-sync-queue │ ▼LmsGradeSyncWorker.onMessage() │ ├── Recupera evaluación del estudiante ├── Resuelve lms_assignment_id en lms_resource_links └── LmsService.publishGrade() ➔ Canvas/Moodle REST APIComandos del CLI para Operaciones LMS
El CLI ce-svc-cli incluye el grupo de comandos lms para operar estas integraciones de forma rápida:
Listar estado de cursos
lms status --suffix lms-test-2026Aprovisionar entorno desde YAML
lms provision --yaml escenario_canvas.yaml --suffix test-01Forzar publicación de notas manualmente
lms grade push --evaluationId <uuid>