Academia Deltamontero · Documentación
Desarrollolocal_deltamodules

local_deltamodules

Visión general del plugin principal de la Academia Deltamontero, sus responsabilidades y la organización de su código.

local_deltamodules (nombre visible "Delta Módulos") es el plugin principal de la Academia. Empezó como una fábrica de módulos (curso + videos + certificado) reutilizable desde la línea de comandos y desde un agente MCP, y hoy concentra casi toda la lógica propia de la plataforma.

DatoValor
Componentelocal_deltamodules
Ruta en la imagen/var/www/html/local/deltamodules
Versión2026100701 (release 1.0, MATURITY_STABLE)
RequiereMoodle 4.5 (2024100700)
Dependencias declaradasNinguna en version.php. En la práctica usa clases de local_candidate_enrollment, local_ai_manager, block_ai_chat, mod_interactivevideo, mod_customcert y tool_usertours, siempre comprobando antes que existan (class_exists, table_exists).

Responsabilidades

ÁreaQué hacePágina
Módulos y estándarCrea módulos con la estructura oficial y aplica a todos el mismo estándar de videos, repasos, certificado y completado.Módulos y estándar
Reglas de la AcademiaCatálogo de reglas con dos niveles (general y por módulo) y su aplicación.Reglas
RepasosEditor propio de preguntas, pantalla corta de nuevo repaso, aviso al empezar, volver a ver el video.Repasos y editor
ImportadorAsistente "Crear módulo desde archivo" (plantilla Excel, PDF, Word, CSV, JSON, documento libre o en blanco) con IA opcional.Importador
Manual de la AcademiaCurso de Introducción generado desde el código.Manual de la Academia
Acceso a módulosQuién ve cada módulo: por cargo, por empresa cliente, individual, y exclusiones.Acceso a módulos
PersonasTipos de persona, personal, importación desde Excel, cargos, contraseñas, historial.Personas y perfiles
EquiposLíder + integrantes, con el rol "Líder de equipo" en contexto de usuario.Equipos
ClientesEmpresas cliente, sus módulos, sus usuarios y sus códigos de registro.Clientes
CorreoCola de envío con límites para Office 365, tipos de correo, enlaces de un solo uso.Correo
Asistente de IAPerfil del usuario en el chat, agente de acciones, niveles de cuota, autor de preguntas.Asistente de IA
PolíticasAviso de datos personales y condiciones del Asistente de IA, con registro de aceptaciones.Políticas y aceptaciones
ReportesReportes listos, informes personalizados y exportación con formato institucional.Reportes
Revisión anualRegistro histórico de revisiones de módulos y aviso mensual.Revisión anual
CertificadosBloqueo por completado, plantilla de sitio, verificación por código.Certificados
Recorridos guiadosTours que se muestran una sola vez por persona.Tours
NavegaciónHooks de cabecera, redirecciones, barra superior, avisos al super administrador, lista blanca de administración.Navegación y hooks
RespaldosEstado del respaldo diario del servidor dentro de Moodle.Respaldos

Organización del código

version.php
lib.php (callbacks de Moodle)
settings.php (páginas en Administración del sitio)
*.php (35 páginas, ver Páginas)
academy.php · builder.php · standard.php · rules.php · health.php
importer.php · template.php · question_editor.php · manual.php
access.php · people.php · people_import.php · team.php · clients.php
mailer.php · policies.php · tours.php · landing.php · student_view.php
reports.php · report_builder.php · report_export.php · report_pdf.php
ai_agent.php · ai_role_injector.php · ai_tiers.php · ai_author.php
hook_callbacks.php · admin_access.php · ui.php

Clases por responsabilidad

ClaseResponsabilidad
academyEstructura oficial de los módulos: creación (create_module), aviso de examen, importación de bancos de preguntas, bloqueo del certificado (gate_certificate), completado del curso (apply_course_completion), campos de revisión anual.
builderFábrica de bajo nivel: crea cursos, secciones y actividades (video interactivo, enlace, etiqueta, archivo, página, cuestionario), preguntas GIFT y el certificado. La comparten la línea de comandos, el agente MCP y el asistente.
standardAplica el estándar de la Academia a cada actividad y a cada módulo; procesa "volver a ver el video".
rulesCatálogo de reglas, valores general y por módulo, formulario común.
healthRevisión de módulos (modcheck.php) y reparación.
importerLectura de archivos de currículo y de bancos de preguntas.
templateGenera la plantilla Excel del asistente.
question_editorEditor sencillo de preguntas y configuración de repasos y pruebas.
manualContenido del curso de Introducción y su sincronización.
accessMatrículas por cargo, empresa o individuales, y exclusiones.
people, people_importTipos de persona, personal, importación de Excel, correos del personal.
teamEquipos y rol "Líder de equipo".
clientsEmpresas cliente, módulos, usuarios y códigos.
mailerCorreo de la Academia.
policiesCondiciones del Asistente de IA y aviso de datos personales.
toursUn tour se marca como visto al mostrarse.
landingPortada institucional (página principal).
student_viewVista de estudiante automática para quien gestiona y además cursa.
reports, report_builder, report_export, report_pdfReportes listos, informes personalizados y exportación.
ai_agent, ai_role_injector, ai_tiers, ai_authorAsistente de IA.
hook_callbacks, admin_access, uiNavegación, avisos, lista blanca de administración y estilos comunes.

Cómo se integra con Moodle

MecanismoArchivoDetalle
Hooks (API de hooks de Moodle 4.4+)db/hooks.phpSiete callbacks sobre primary_extend, before_http_headers y before_standard_head_html_generation. Ver Navegación y hooks.
Callbacks clásicoslib.phplocal_deltamodules_extend_navigation_course, local_deltamodules_coursemodule_definition_after_data, local_deltamodules_coursemodule_edit_post_actions.
Observadoresdb/events.phpOnce observadores. Ver Eventos y observadores.
Tareasdb/tasks.phpCuatro tareas programadas y una ad hoc. Ver Tareas programadas.
Servicios webdb/services.phpCuatro funciones externas. Ver Servicios web.
Capacidadesdb/access.phpSeis capacidades propias. Ver Capacidades.
Mensajesdb/messages.phpProveedor reviewreminder (aviso de revisión anual en la campana; correo permitido pero no activado por defecto).
Administraciónsettings.phpPáginas externas en Administración del sitio y poda del árbol para quien no es super administrador.
Base de datosdb/install.xml, db/upgrade.phpOnce tablas. Ver Base de datos.
Página principalfrontpage.phpSe incluye mediante $CFG->customfrontpageinclude (lo fija moodle-config.sh).
Parches en tercerosinfrastructure/moodle/patch-ai-*.phpLlaman a ai_role_injector y ai_agent desde local_ai_manager. Ver Parches.
Línea de comandoscli/backup_status.phpLo invoca el respaldo diario del servidor. Ver Respaldos.

Privacidad

classes/privacy/provider.php es un proveedor de privacidad completo (API core_privacy): implementa metadata\provider, request\plugin\provider, request\core_userlist_provider y request\user_preference_provider. Con él, la herramienta de privacidad de Moodle puede declarar, exportar y borrar los datos personales que guarda el plugin (LOPDP). Todo vive en el contexto del sistema.

Metadatos declarados (get_metadata):

ElementoDatos
local_deltamodules_mailDestinatario (userid, toemail, toname), asunto, contenido, autor (createdby) y fecha.
local_deltamodules_pwtokenPersona, huella cifrada del enlace y vencimiento.
local_deltamodules_team, local_deltamodules_teammemNombre del equipo, líder e integrantes.
local_deltamodules_exclMódulo desactivado, persona y autor.
local_deltamodules_repNombre del informe guardado y quién lo guardó.
local_deltamodules_reviewResponsable (texto) y quién registró la revisión.
local_deltamodules_clientcodeQuién creó el código de registro.
local_deltamodules_ruleQuién cambió la regla.
local_deltamodules_clientPersona de contacto de la empresa cliente (nombre, cargo, teléfono y correo). No es una cuenta de la Academia: se declara aquí y se gestiona en Clientes.
Ubicación externa groqMensaje escrito por la persona (con cédulas, RUC y correos ocultos) y nombres de las personas de la consulta o sus resultados. Ver Asistente de IA.
Preferencia local_deltamodules_sampletoDirección elegida para recibir correos de ejemplo.

Exportar y eliminar:

GrupoTablasAl exportarAl eliminar
OWNED (la persona es dueña de la fila)local_deltamodules_mail (userid), local_deltamodules_pwtoken, local_deltamodules_teammem, local_deltamodules_excl (userid), local_deltamodules_repCorreos recibidos, equipos de los que es integrante, módulos desactivados e informes guardadosSe borran las filas
AUTHORED (la persona solo figura como autora de un registro de la empresa)local_deltamodules_team (leaderid), local_deltamodules_review (userid), local_deltamodules_clientcode (createdby), local_deltamodules_excl (createdby), local_deltamodules_rule (usermodified), local_deltamodules_mail (createdby)Equipos que lidera y revisiones anuales que registróSe desvincula: el campo queda en 0 y el registro se conserva

export_user_preferences exporta local_deltamodules_sampleto. Las demás preferencias propias (local_deltamodules_retake, local_deltamodules_strikes_*, local_deltamodules_aiterms) no están declaradas en el proveedor.

La cadena privacy:metadata resume: la Academia guarda datos personales en sus propias tablas (correos, equipos, informes, revisiones, clientes) y envía consultas al asistente de IA externo. Cómo se atiende una solicitud de datos se explica en Políticas y privacidad.

Cadenas de idioma

lang/es/local_deltamodules.php y lang/en/local_deltamodules.php tienen el mismo número de cadenas (598 líneas cada uno). Muchas pantallas escriben además textos directamente en el código, en español. La personalización de cadenas de Moodle y de otros plugins no vive aquí sino en customize-strings.php y configure-course-editor.php (paquete de idioma local es_local en moodledata) y en infrastructure/moodle/lang/es/. Ver Interfaz global.

En esta página