e88fd571f0
- Create `mentorship_assignments` table with relevant fields and indexes. - Add `peer_review_settings` table for lesson-specific peer review configurations. - Enhance `peer_reviews` and `course_submissions` tables with additional fields for instructor reviews and final scores. - Implement My Notes page to display user annotations with delete functionality. - Create Lesson Annotations component for managing notes with editing and deletion capabilities. - Develop Mentor Panel component to display mentor and mentee information. - Add Course Mentorships page for assigning mentors to students with modal for selection. Co-authored-by: Copilot <copilot@github.com>
14 KiB
14 KiB
OpenCCB: Hoja de Ruta (Roadmap) del Proyecto
Fase 1: Cimientos ✅
- Configuración del Workspace de Rust (Edición 2024)
- Estructura de Microservicios (CMS y LMS)
- Infraestructura Multi-Base de Datos
- Inicialización del Frontend (Studio y Experience)
- Dockerización y Script de instalación unificado
Fase 2: Funcionalidades Core del CMS ✅
- Editor de Estructura de Cursos
- Sistema de Carga de Archivos
- Constructor de Actividades Interactivas
- Tipos de evaluación avanzada (Secuenciación, Emparejamiento, etc.)
Fase 3: Autenticación y Seguridad ✅
- Autenticación basada en JWT
- Control de Acceso Basado en Roles (RBAC)
- Registro e Interfaz de Auditoría
Fase 4: Experiencia LMS y Calificaciones ✅
- Portal del Estudiante (Experience)
- Sistema de Calificación Holístico con pesos
- Políticas de Evaluación e Intentos
- Umbrales de Aprobación Dinámicos
- Generación de Certificados básicos
Fase 5: Analíticas e Insights ✅
- Dashboard de Analíticas para Instructores
- Dashboard de Progreso del Estudiante
Fase 6: Refactorización a Single-Tenant ✅
- Reposicionamiento como módulo premium
- Personalización de Marca (Branding Premium)
- Interfaz de Usuario e Inicio de Sesión Simplificados
Fase 7: Compromiso y Social ✅
- Analíticas de Vanguardia (Cohortes, Retención, Heatmaps)
- Integración de IA (Resúmenes, Quices, Tutor RAG)
- Rutas de Aprendizaje Personalizadas
- Gamificación Base (XP, Niveles, Leaderboards)
Fase 8: Funcionalidades Enterprise ✅
- Perfil de Usuario y Ciclo de Vida
- Reportes Avanzados exportables a CSV
- SSO (Google, Okta, Azure AD)
- LTI 1.3 Tool Provider (Interoperabilidad)
Fase 9: Portabilidad de Cursos ✅
- Esquema JSON Universal y Portabilidad de contenidos
Fase 10: Consola de Administración Global ✅
- Panel de control para organizaciones y auditoría universal
Fase 11 - 14: IA y Gamificación Avanzada ✅
- Quices de Código y Puntos Calientes (Hotspots)
- Evaluaciones por Audio con IA
- Generador de Cursos "Mágico"
- Juegos para niños e Internacionalización (EN, ES, PT)
Fase 15 - 19: UI Adaptativa y Monetización ✅
- Dynamic API Resolution (Acceso LAN)
- Optimización móvil completa
- Monetización con Mercado Pago
- Analíticas Predictivas (Riesgo de Abandono)
- Integración de Videoconferencia (Jitsi)
- Landing Pages para Marketing de Cursos
Fase 20 - 21: IA Generativa y Búsqueda Semántica ✅
- Diagramas Mermaid automáticos
- Búsqueda Semántica con PGVector (Representación de 768 dim)
- Detección de duplicados y RAG mejorado
Fase 22: Estabilidad y Funcionalidades Pendientes 🛠️ (En Ejecución)
- Generación de Certificados Premium: Mejorar UI de configuración de templates en Studio.
- Tracking de Progreso Atómico: Reemplazar hardcodes por cálculo real de completitud.
- Notificaciones de Foros: Implementar despacho de alertas vía SMTP.
- Importación Masiva (Excel): Finalizar soporte para Question Bank.
Fase 23 - 27: Infraestructura Crítica ✅ (Completado)
- Integración SMTP: Password reset, notificaciones transaccionales (inscripción, completitud) y emails de marketing.
- Búsqueda Global Unificada: Endpoint
/searchen LMS (cursos, lecciones, foros, anuncios) con full-text e índices GIN. Barra de búsqueda en navbar del Experience. - Soporte SCORM/xAPI: Player nativo (iframe) para lecciones
content_type=scorm|xapiy bloquescorm, con tracking de statements xAPI en LMS. - Accesibilidad WCAG 2.1: Auditoría y ajustes de contraste/navegación.
- PWA y Soporte Offline: Service workers para aprendizaje sin conexión. (MVP base implementado: registro SW, caché estático, navegación network-first con fallback offline y API GET network-first; UX añadida: prompt de instalación PWA y banner online/offline; cola offline para progreso (grades/interactions/xAPI) con flush automático al reconectar; panel visible de sync, deduplicación por huella de mutación y pruebas E2E offline→online para grades/interactions; validado en producción con endpoints
/manifest.webmanifest,/sw.jsy/offline.htmlen HTTP 200).
🚀 Fases Estratégicas (Nuevas)
Fase 32: IA de Moderación y Ética 🛡️
- Auditoría de IA: Sistema de validación para prevenir "halucinaciones" en el Tutor RAG. (MVP backend + UI Studio: endpoints protegidos para listar logs de chat con señales de riesgo y marcar revisión humana en
ai_usage_logs.request_metadata, con panel operativo en Admin. Señales endurecidas a 10 reglas con score ponderado + endpointGET /ai/audit/metricscon distribución de scores y ranking de señales.) - Moderación Automática: Detección de lenguaje ofensivo o inapropiado en foros y chats. (MVP backend por diccionario en creación de hilos/respuestas de foro y mensajes de chat tutor/role-play).
- Ética de Datos: Herramientas para transparencia en el uso de datos por los modelos de IA local. (MVP backend + UI Studio: endpoint protegido
/ai/data-ethics/summarycon métricas de uso, eventos recientes y campos almacenados; panel Admin en/admin/data-ethics.)
Fase 33: Aprendizaje Colaborativo Síncrono 🤝
- Pizarras Compartidas: Espacio de dibujo colaborativo integrado en lecciones. (MVP completo: backend REST + UI Experience con polling, autosave debounce 1.5s, control de conflictos optimista
revision/409y panel de resolución con diff local vs remoto.) - Edición Multiusuario: Soporte para documentos compartidos en tiempo real (tipo Google Docs).
- Salas de Estudio: Grupos efímeros para resolución de dudas grupales por video.
Fase 34: Análisis Pedagógico Profundo 📊
- Métricas de Calidad: Análisis automático de la efectividad de las lecciones (completion_rate, failure_rate, abandonment, avg_attempts). (Backend
GET /courses/{id}/pedagogical/quality-metrics+ UI Studio con barras proporcionales.) - Índice de Discriminación: Estadísticas sobre qué preguntas de quiz discriminan mejor el conocimiento. (Backend
GET /courses/{id}/pedagogical/discrimination-indexcon agrupación pormetadata.block_scores+ clasificación Excelente/Buena/Aceptable/Revisar.) - Sugerencias Curriculares: Reglas automáticas (5 tipos) recomendando cambios en la estructura del curso basada en rendimiento real. (Backend
GET /courses/{id}/pedagogical/suggestions+ panel Studio con severidad alta/media/info/positivo.)
Fase 35: Ecosistema de Plugins 🔌
- Arquitectura Modular: Tabla
org_pluginscon CRUD completo encms-service(GET /plugins,POST /plugins,PUT /plugins/{id},DELETE /plugins/{id}). Validación HTTPS obligatoria. - Soporte para Web Components: Bloque
pluginen Experience carga el componente en<iframe sandbox>seguro con postMessage para config; sin acceso al DOM de OpenCCB. - OpenCCB Market: Galería en Studio (
/admin/plugins) con toggle habilitado/deshabilitado, registro de nuevos plugins y tarjetas con estado visual.
Fase 36: LTI 1.3 Tool Consumer 🔗
- Consumo de herramientas externas: MVP implementado con
lti_external_toolspor curso, gestión en Studio (/courses/[id]/lti-tools), selector visual en editor de lecciones y bloque embebidolti-toolen Experience vía iframe sandbox. - Delegación de Calificaciones: MVP implementado con endpoint público
POST /lti/tools/{tool_id}/grade-passback, firma HMAC-SHA256 (x-openccb-lti-signature+x-openccb-lti-timestamp), registro de eventos y sincronización auser_grades.
Estado Actual: Plataforma madura con IA generativa integrada, arquitectura Premium Single-Tenant, búsqueda semántica y monetización operativa.
Fase 37: Tiempo Real y Seguridad Operacional ⚡
- SSE para Pizarras Colaborativas: Reemplazado polling de 5s por
EventSourceenCollaborativeWhiteboard.tsx. EndpointGET /lessons/{id}/collaborative-canvas/streamenlms-serviceusa canaltokio::sync::mpsc+ReceiverStream; el servidor consulta la DB cada 2s y emite eventos SSE solo cuando cambia larevision. El cliente cierra la conexión al desmontar el componente. - Rotación de Secretos LTI: Endpoint
POST /courses/{id}/lti-tools/{tool_id}/rotate-secretgenera un nuevo secreto alfanumérico de 32 chars, actualiza la DB y lo retorna una sola vez. UI en Studio (/courses/[id]/lti-tools) con botón 🔑 por herramienta, modal de confirmación de riesgo, y panel de copia-única del nuevo secreto con botón clipboard.
Fase 38: Salas de Estudio con BigBlueButton 🎥
- Tabla
study_rooms: migración con camposstatus(pending/active/ended),bbb_meeting_id,attendee_pw,moderator_pw,max_participants,scheduled_at,started_at,ended_at. - Integración BBB:
handlers_study_rooms.rsconstruye URLs BBB con checksum SHA256 (action + params + BBB_SECRET). Endpoints:GET /courses/{id}/study-rooms,POST /courses/{id}/study-rooms,POST .../join,POST .../end,DELETE .../. Variables de entorno:BBB_URLyBBB_SECRET. - Studio: página
/courses/[id]/study-rooms— crear sala, lista con estado, botones Iniciar/Unirse (BBB en nueva pestaña)/Finalizar/Eliminar, instrucciones de configuración integradas. Tab "Salas de Estudio" enCourseEditorLayout. - Experience: página
/courses/[id]/study-roomscon lista de salas activas/programadas y botón "Unirse". Acceso directo desde la página del curso como tarjeta de navegación.
Fase 39: Grabaciones BBB + OAuth2 AGS ✅
- Grabaciones BBB:
GET /courses/{id}/study-rooms/{room_id}/recordings— llama agetRecordingsde la API BBB y parsea XML de respuesta. StructBbbRecordingconrecord_id,name,state,start_time,end_time,participants,playback_url,duration_minutes. - Studio study-rooms: botón "Grabaciones" en salas finalizadas — panel expandible con lista de grabaciones + links de reproducción.
- Experience study-rooms: sección de grabaciones en salas finalizadas con botón toggle y lista de grabaciones con links.
- OAuth2 AGS (
handlers_lti_consumer.rs):POST /lti/tools/{tool_id}/ags-score— token caching en tablalti_ags_tokens, client_credentials grant, POST de scores alags_lineitem_urldel LMS externo. Modo dual: HMAC legacy sigue funcionando. - Migración AGS: ALTER TABLE
lti_external_toolsagrega camposags_client_id,ags_client_secret,ags_token_url,ags_lineitem_url. CREATE TABLElti_ags_tokens. - Studio lti-tools: sección AGS colapsable en el formulario de creación — 4 campos opcionales (client_id, client_secret, token_url, lineitem_url).
- api.ts: Interface
BbbRecording,getStudyRoomRecordings()en Studio y Experience. Campos AGS enLtiExternalTool,CreateLtiExternalToolPayload,UpdateLtiExternalToolPayload.
Fase 40: Edición Colaborativa de Documentos 📝 ✅
- Tabla
lesson_collaborative_docs: migración con camposcontent TEXT,revision BIGINT,last_modified_by UUID. Índice único por(lesson_id, organization_id). - Backend: 3 endpoints —
GET /lessons/{id}/collaborative-doc,PUT /lessons/{id}/collaborative-doc(concurrencia optimista porrevision),GET /lessons/{id}/collaborative-doc/stream(SSE, polling 2s). Respuesta 409 conserver_content/server_revisionen conflicto. - Experience — CollaborativeDocEditor: componente SSE con autosave debounce 1.5s, toolbar Markdown básico (negrita, cursiva, H1/H2, listas), resolución de conflictos con diff visual (conservar la mía / usar la del servidor). Solo actualiza desde SSE si no hay cambios locales pendientes.
- Experience — Lesson Player: sección "Documento Colaborativo" integrada en la página de la lección, después de la pizarra colaborativa.
- Studio: página
/courses/[id]/lessons/[lessonId]/collaborative-doccon metadatos (revisión, palabras, caracteres, última edición) + vista previa + botón "Borrar documento". Link desde el breadcrumb del editor de lección. - api.ts Studio + Experience: funciones
getLessonCollaborativeDoc,updateLessonCollaborativeDoc, interfacesCollaborativeDoc,UpdateCollaborativeDocPayload,UpdateCollaborativeDocResponse.
Próximas Prioridades:
Notificaciones en tiempo real✅ — SSEGET /notifications/streamen LMS emite actualizaciones cada 3s cuando cambia el recuento de no leídas o llega una nueva notificación.NotificationCenter.tsxreemplaza polling de 5 min porEventSource; se cierra al desmontar el componente.Progreso del curso✅ — Endpoint ligeroGET /courses/{id}/progressen LMS conprogress_percentage,completed_lessons,total_lessons. Barra de progreso integrada en la página del curso (visible solo al estar inscrito): muestra % actual, verde al completar 100%.getCourseProgress()enapi.ts.
Fase 41: Operaciones de Instructor y Experiencia del Estudiante 🎓
- A. Panel de Instructor Operacional — Vista unificada por curso: lista de alumnos con % de progreso en tiempo real, alertas de "estudiante en riesgo" (sin actividad en X días / bajo rendimiento), acción rápida para enviar notificación. (Implementado: tabla enriquecida en Studio con progreso, promedio, última actividad, semáforo de riesgo y modal de notificación directa al alumno.)
- B. Anotaciones en Lecciones — Los alumnos pueden dejar notas privadas en lecciones (timestamp en video, posición en texto). Panel "Mis Notas" para repasar todo el contenido anotado.
- C. Sistema de Mentoría — Asignación de instructor/tutor a grupos de alumnos. Panel de seguimiento con mensajería 1-a-1 y visibilidad del progreso del grupo asignado.
- D. Importación/Exportación de Cursos — Backup completo en JSON portátil (estructura + contenido + preguntas). Restauración/duplicación de cursos.
- F. Evaluación entre Pares Mejorada — Asignación automática con rúbricas configurables. Calificación promediada pares + instructor con peso configurable.
Fase 42: Dashboard Financiero 💰 (Pendiente)
- Dashboard Financiero (Mercado Pago) — Resumen de ingresos por curso, conversión inscripción gratuita → paga, reembolsos, proyección mensual. Solo visible para admin.