Academia Deltamontero · Documentación
Arquitectura

Plugins y componentes

Mapa de los plugins de terceros y propios que forman la Academia y cómo se relacionan.

Esta página da el mapa general. El detalle de cada plugin propio (clases, páginas, eventos, funciones) está en Desarrollo.

Mapa de relaciones

                               Moodle 4.5 LTS (core)
   ┌──────────────────────────────────┼──────────────────────────────────────┐
   │                                  │                                      │
 Tema y presentación          Contenido y evaluación                 IA y servicios web
 theme_boost_union            mod_interactivevideo (videos)          local_ai_manager (proveedor)
 dataformat_delta*            mod_quiz + quizaccess_deltagate           ▲ parches: perfil + agente
 (Excel/Word/PDF)             mod_customcert + local_deltacerts      block_ai_chat (interfaz)
                              mod_hvp (H5P)                          tiny_ai (editor)
                              block_sharing_cart                     webservice_mcp (agente MCP)
                                          │
                                          ▼
                       local_deltamodules (núcleo de la Academia)
     estándar de módulos · reglas · constructor e importador de módulos · personal
     equipos · clientes · reportes · correo · revisión anual · avisos al administrador
     lista blanca de administración · portada · agente de IA · niveles de IA
                                          │
                                          ▼
                     local_candidate_enrollment (personas y selección)
     crear colaborador · cargos → perfil + ruta · postulantes y códigos
     recuperación de contraseña sin correo · incorporar postulante al equipo

Moodle core

  • Repositorio oficial moodle/moodle, clonado en un commit exacto (89ae02d0…) de la rama 4.5 LTS con el script git-at.
  • La versión 4.5 LTS es una decisión cerrada: las librerías H5P tuvieron una actualización en octubre de 2024 que rompió las versiones anteriores a 4.3, sin corrección para ellas.
  • Todos los plugins propios declaran requires = 2024100700 (Moodle 4.5).

Funciones nativas de Moodle en las que se apoya la Academia: cohortes y matriculación por cohorte (rutas por cargo y empresas cliente), finalización de actividades y cursos, disponibilidad condicional, Report Builder (informes personalizados), Políticas y acuerdos (tool_policy, aviso de datos personales), verificación en dos pasos (tool_mfa), recorridos guiados (tool_usertours) y servicios web REST.

Plugins de terceros

Todos se incluyen en la imagen. Los que se clonan con git-at quedan en un commit exacto: un cambio del autor no altera la imagen ni desactiva en silencio un parche. Para actualizar uno se cambia el commit en el Dockerfile y se prueba.

PluginRutaVersión fijadaUso en la Academia
theme_boost_uniontheme/boost_unioncommit 3d2b7132…Tema corporativo (colores, fuente, SCSS, logos)
mod_hvpmod/hvpcommit 6527ec55… + submódulo h5p-php-libraryContenido H5P interactivo
mod_interactivevideomod/interactivevideocommit e5c60168…Videos de YouTube con interactividad; completado al verlos hasta el final
mod_customcertmod/customcertcommit 84cb6dfa…Certificado que usan los módulos (plantilla "Certificado Deltamontero")
tool_certificateadmin/tool/certificatecommit 71bf23b4… (sin element/program, que requiere Moodle Workplace)Base de mod_coursecertificate; sus páginas quedan solo para el super administrador porque no se usa
mod_coursecertificatemod/coursecertificatecommit 2a2a10d5…Instalado; no es el certificado de los módulos
local_ai_managerlocal/ai_manageretiqueta v1.1 (la v2.0 exige Moodle 5.0)Gestiona proveedor, modelo, cuotas por nivel y propósitos de IA
tiny_ailib/editor/tiny/plugins/aietiqueta v1.0Dependencia de block_ai_chat (IA en el editor TinyMCE)
block_ai_chatblocks/ai_chatetiqueta v1.0Interfaz del chat de IA (botón flotante y panel)
block_sharing_cartblocks/sharing_cartcommit 2e5cef49…Compartir actividades entre cursos
webservice_mcpwebservice/mcpcommit 198246e5…Protocolo MCP sobre los servicios web (/webservice/mcp/server.php)

local_ai_manager, tiny_ai y block_ai_chat se clonan por etiqueta (git clone --branch), no por commit. Una etiqueta puede moverse en el repositorio de origen; si eso ocurre, la imagen cambiaría sin aviso. verify-patches.php detectaría que los parches del chat no se aplicaron, pero no otros cambios.

Traducciones: los plugins de terceros que no traen español reciben sus cadenas desde infrastructure/moodle/lang/es/. El paquete de idioma oficial y las personalizaciones del sitio tienen prioridad.

Plugins propios

PluginRuta en MoodleVersiónQué hace
local_deltamoduleslocal/deltamodules2026100701Núcleo de la Academia (ver abajo)
local_candidate_enrollmentlocal/candidate_enrollment2026100700 (1.0.0)Crear colaboradores por cargo, postulantes y códigos de la prueba técnica, recuperación de contraseña sin correo, incorporación de postulantes
local_deltacertslocal/deltacerts2026082700Bloquea automáticamente un certificado nuevo hasta completar el curso (con interruptor global); en los módulos de la Academia respeta la regla del estándar
quizaccess_deltagatemod/quiz/accessrule/deltagate2026092400Candado real de cuestionarios: nadie salvo el super administrador inicia un intento sin cumplir la disponibilidad (por ejemplo, ver el video), aunque su rol ignore las restricciones
dataformat_deltaxlsx, dataformat_deltadocx, dataformat_deltapdfdataformat/2026092400Descargas con el formato institucional en Excel, Word y PDF

local_deltamodules por dentro

ÁreaElementos principales
Estándar de módulosstandard (aplicado al desplegar y al crear o editar actividades), rules (regla general y reglas propias por módulo), health (revisión y reparación de módulos, incluida la disponibilidad de los videos en YouTube)
Creación de módulosbuilder (curso, secciones, videos interactivos y certificado desde JSON), importer y template (desde PDF, Word, Excel, CSV o JSON, con los parsers Python de la imagen), ai_author (propone objetivos y preguntas de repaso como borrador)
Personaspeople, people_import (Excel de Talento Humano), access (módulos desactivados por persona), team (equipos y rol de líder)
Clientesclients (empresas cliente como cohortes cli_*, códigos de registro, vencimiento)
Reportesreports, report_builder, report_export, report_pdf
Correomailer (cola, límites, registro, enlaces de un solo uso)
IAai_role_injector, ai_agent (con cédulas, RUC y correos ocultos al proveedor), ai_tiers, policies (condiciones de uso)
Privacidadprivacy\provider (proveedor de privacidad completo: declara, exporta y borra o desvincula los datos personales de sus tablas)
Plataformahook_callbacks (navegación, sin caché del navegador, avisos al super administrador), admin_access (lista blanca de administración), landing (portada), student_view, tours, manual

Tareas programadas, que ejecuta el contenedor moodle-cron:

TareaHorarioFunción
send_mailCada minutoEntrega la cola de correos respetando los límites
mail_remindersLunes 09:00Recordatorio de módulos pendientes
review_reminderDía 1 de cada mes, 08:00Aviso de la revisión anual obligatoria
client_expiryTodos los días, 01:30Suspende a los usuarios de empresas cliente cuyo acceso venció

Funciones de servicio web: local_deltamodules_create_module (crear un módulo completo desde JSON; requiere moodle/course:create), local_deltamodules_get_next_activity, local_deltamodules_exam_strike (cuenta en el servidor los cambios de pantalla de un examen) y local_deltamodules_get_completed_cmids.

Plugins previstos que no existen todavía

PluginEstado en el repositorio
local_team_managementCarpeta vacía (solo .gitkeep). La gestión de equipos se implementó dentro de local_deltamodules (Equipos y "Mi equipo").
local_dify_syncNo existe. Es el conector previsto para la Fase 5 (ver Inteligencia artificial).
rag-service/Carpeta vacía (solo .gitkeep).

Parches sobre código de terceros

La Academia modifica puntos concretos de Moodle y de plugins de terceros durante la construcción de la imagen, con scripts patch-*.php idempotentes. La lógica vive en los plugins propios; los parches solo insertan la llamada. La lista completa y cuáles detienen el build está en Contenedores.

En esta página