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.
| Dato | Valor |
|---|---|
| Componente | local_deltamodules |
| Ruta en la imagen | /var/www/html/local/deltamodules |
| Versión | 2026100701 (release 1.0, MATURITY_STABLE) |
| Requiere | Moodle 4.5 (2024100700) |
| Dependencias declaradas | Ninguna 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
| Área | Qué hace | Página |
|---|---|---|
| Módulos y estándar | Crea 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 Academia | Catálogo de reglas con dos niveles (general y por módulo) y su aplicación. | Reglas |
| Repasos | Editor propio de preguntas, pantalla corta de nuevo repaso, aviso al empezar, volver a ver el video. | Repasos y editor |
| Importador | Asistente "Crear módulo desde archivo" (plantilla Excel, PDF, Word, CSV, JSON, documento libre o en blanco) con IA opcional. | Importador |
| Manual de la Academia | Curso de Introducción generado desde el código. | Manual de la Academia |
| Acceso a módulos | Quién ve cada módulo: por cargo, por empresa cliente, individual, y exclusiones. | Acceso a módulos |
| Personas | Tipos de persona, personal, importación desde Excel, cargos, contraseñas, historial. | Personas y perfiles |
| Equipos | Líder + integrantes, con el rol "Líder de equipo" en contexto de usuario. | Equipos |
| Clientes | Empresas cliente, sus módulos, sus usuarios y sus códigos de registro. | Clientes |
| Correo | Cola de envío con límites para Office 365, tipos de correo, enlaces de un solo uso. | Correo |
| Asistente de IA | Perfil del usuario en el chat, agente de acciones, niveles de cuota, autor de preguntas. | Asistente de IA |
| Políticas | Aviso de datos personales y condiciones del Asistente de IA, con registro de aceptaciones. | Políticas y aceptaciones |
| Reportes | Reportes listos, informes personalizados y exportación con formato institucional. | Reportes |
| Revisión anual | Registro histórico de revisiones de módulos y aviso mensual. | Revisión anual |
| Certificados | Bloqueo por completado, plantilla de sitio, verificación por código. | Certificados |
| Recorridos guiados | Tours que se muestran una sola vez por persona. | Tours |
| Navegación | Hooks de cabecera, redirecciones, barra superior, avisos al super administrador, lista blanca de administración. | Navegación y hooks |
| Respaldos | Estado del respaldo diario del servidor dentro de Moodle. | Respaldos |
Organización del código
Clases por responsabilidad
| Clase | Responsabilidad |
|---|---|
academy | Estructura 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. |
builder | Fá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. |
standard | Aplica el estándar de la Academia a cada actividad y a cada módulo; procesa "volver a ver el video". |
rules | Catálogo de reglas, valores general y por módulo, formulario común. |
health | Revisión de módulos (modcheck.php) y reparación. |
importer | Lectura de archivos de currículo y de bancos de preguntas. |
template | Genera la plantilla Excel del asistente. |
question_editor | Editor sencillo de preguntas y configuración de repasos y pruebas. |
manual | Contenido del curso de Introducción y su sincronización. |
access | Matrículas por cargo, empresa o individuales, y exclusiones. |
people, people_import | Tipos de persona, personal, importación de Excel, correos del personal. |
team | Equipos y rol "Líder de equipo". |
clients | Empresas cliente, módulos, usuarios y códigos. |
mailer | Correo de la Academia. |
policies | Condiciones del Asistente de IA y aviso de datos personales. |
tours | Un tour se marca como visto al mostrarse. |
landing | Portada institucional (página principal). |
student_view | Vista de estudiante automática para quien gestiona y además cursa. |
reports, report_builder, report_export, report_pdf | Reportes listos, informes personalizados y exportación. |
ai_agent, ai_role_injector, ai_tiers, ai_author | Asistente de IA. |
hook_callbacks, admin_access, ui | Navegación, avisos, lista blanca de administración y estilos comunes. |
Cómo se integra con Moodle
| Mecanismo | Archivo | Detalle |
|---|---|---|
| Hooks (API de hooks de Moodle 4.4+) | db/hooks.php | Siete callbacks sobre primary_extend, before_http_headers y before_standard_head_html_generation. Ver Navegación y hooks. |
| Callbacks clásicos | lib.php | local_deltamodules_extend_navigation_course, local_deltamodules_coursemodule_definition_after_data, local_deltamodules_coursemodule_edit_post_actions. |
| Observadores | db/events.php | Once observadores. Ver Eventos y observadores. |
| Tareas | db/tasks.php | Cuatro tareas programadas y una ad hoc. Ver Tareas programadas. |
| Servicios web | db/services.php | Cuatro funciones externas. Ver Servicios web. |
| Capacidades | db/access.php | Seis capacidades propias. Ver Capacidades. |
| Mensajes | db/messages.php | Proveedor reviewreminder (aviso de revisión anual en la campana; correo permitido pero no activado por defecto). |
| Administración | settings.php | Páginas externas en Administración del sitio y poda del árbol para quien no es super administrador. |
| Base de datos | db/install.xml, db/upgrade.php | Once tablas. Ver Base de datos. |
| Página principal | frontpage.php | Se incluye mediante $CFG->customfrontpageinclude (lo fija moodle-config.sh). |
| Parches en terceros | infrastructure/moodle/patch-ai-*.php | Llaman a ai_role_injector y ai_agent desde local_ai_manager. Ver Parches. |
| Línea de comandos | cli/backup_status.php | Lo 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):
| Elemento | Datos |
|---|---|
local_deltamodules_mail | Destinatario (userid, toemail, toname), asunto, contenido, autor (createdby) y fecha. |
local_deltamodules_pwtoken | Persona, huella cifrada del enlace y vencimiento. |
local_deltamodules_team, local_deltamodules_teammem | Nombre del equipo, líder e integrantes. |
local_deltamodules_excl | Módulo desactivado, persona y autor. |
local_deltamodules_rep | Nombre del informe guardado y quién lo guardó. |
local_deltamodules_review | Responsable (texto) y quién registró la revisión. |
local_deltamodules_clientcode | Quién creó el código de registro. |
local_deltamodules_rule | Quién cambió la regla. |
local_deltamodules_client | Persona 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 groq | Mensaje 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_sampleto | Dirección elegida para recibir correos de ejemplo. |
Exportar y eliminar:
| Grupo | Tablas | Al exportar | Al 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_rep | Correos recibidos, equipos de los que es integrante, módulos desactivados e informes guardados | Se 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.