51473d9e4d
Co-authored-by: Copilot <copilot@github.com>
13 KiB
13 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 — WebSocket o SSE para alertas de actividad del curso (nuevas entregas, mensajes, etc.).
- Progreso del curso — Endpoint de porcentaje de avance por alumno; barra de progreso en Experience.