Base de datos
Las once tablas de local_deltamodules (db/install.xml) con sus campos e índices, la tabla de local_candidate_enrollment y los pasos de actualización.
Las tablas se definen en db/install.xml (instalación nueva) y se crean en instalaciones existentes con db/upgrade.php. Todas usan el prefijo mdl_ en la base ($CFG->prefix = 'mdl_'); en el código se escriben entre llaves, por ejemplo {local_deltamodules_mail}.
Tipos: int(n) entero, char(n) texto corto, text texto largo, number(10,2) decimal. "NN" = obligatorio (NOTNULL).
local_deltamodules_rule
Reglas propias de un módulo (las que no siguen la regla general). Ver Reglas.
| Campo | Tipo | Detalle |
|---|---|---|
id | int(10) NN, secuencia | |
courseid | int(10) NN | Clave foránea a course.id |
name | char(50) NN | Clave de la regla |
value | char(255) NN | Valor como texto |
usermodified | int(10) NN, 0 | |
timemodified | int(10) NN, 0 |
Índice único coursename (courseid, name).
local_deltamodules_review
Historial de revisiones anuales (una fila por revisión). Ver Revisión anual.
| Campo | Tipo | Detalle |
|---|---|---|
id | int(10) NN, secuencia | |
courseid | int(10) NN | Módulo revisado |
reviewdate | int(10) NN | Fecha de revisión |
responsable | char(255) NN | |
resultado | char(255) NN | |
cambios | text | Cambios requeridos |
criterios | text | Criterios mínimos evaluados |
updatedate | int(10) | Fecha de actualización |
nextdate | int(10) NN | Próxima revisión |
userid | int(10) NN | Quién registró |
timecreated | int(10) NN |
Índice courseid.
local_deltamodules_team y local_deltamodules_teammem
Equipos de seguimiento. Ver Equipos.
| Tabla | Campo | Tipo | Detalle |
|---|---|---|---|
team | id | int(10) NN, secuencia | |
team | name | char(255) NN | Nombre del equipo |
team | leaderid | int(10) NN | Líder (índice leaderid) |
team | timecreated, timemodified | int(10) NN | |
teammem | id | int(10) NN, secuencia | |
teammem | teamid | int(10) NN | Índice teamid |
teammem | userid | int(10) NN | Índice único userid: una persona, un equipo |
local_deltamodules_rep
Informes personalizados guardados. Ver Reportes.
| Campo | Tipo | Detalle |
|---|---|---|
id | int(10) NN, secuencia | |
name | char(255) NN | Nombre del informe |
base | char(30) NN | Base (personas, modulos, evaluaciones, postulantes) |
config | text NN | Columnas, filtros y orden en JSON |
userid | int(10) NN | Quién lo creó |
timecreated, timemodified | int(10) NN |
local_deltamodules_client y local_deltamodules_clientcode
Empresas cliente. Ver Clientes.
| Tabla | Campos |
|---|---|
client | id; cohortid int(10) NN (índice único); razonsocial, nombrecomercial, sector, direccion, contacto, contactocargo char(255); ruc, char(20); ciudad char(100); telefono, contactotel char(50); email, contactoemail char(100); inicio, fin int(10) NN 0 (0 = sin fecha); active int(1) NN 1; notas text; timemodified int(10) NN 0 |
clientcode | id; cohortid int(10) NN (índice); code char(20) NN (índice único); expires int(10) NN 0 (0 = no vence); maxuses int(10) NN 0 (0 = sin límite); uses int(10) NN 0; revoked int(1) NN 0; note char(255); createdby, timecreated int(10) NN |
local_deltamodules_excl
Módulos desactivados a una persona que los recibe por cargo o empresa. Ver Acceso a módulos.
| Campo | Tipo | Detalle |
|---|---|---|
id | int(10) NN, secuencia | |
courseid, userid | int(10) NN | Índice único courseuser (courseid, userid) |
createdby, timecreated | int(10) NN |
local_deltamodules_mail
Cola de envío y registro de correos. Ver Correo.
| Campo | Tipo | Detalle |
|---|---|---|
id | int(10) NN, secuencia | |
userid | int(10) NN, 0 | 0 si el destinatario es una dirección suelta |
toemail | char(255) NN | |
toname | char(255) | |
kind | char(30) NN | Tipo (mailer::KINDS) |
subject | char(255) NN | |
bodyhtml, bodytext | text | El enlace de contraseña se guarda como marcador, nunca válido |
purpose | char(10) | welcome o reset cuando lleva enlace |
dedupe | char(100) | Clave para no repetir |
status | int(2) NN, 0 | 0 en cola, 1 enviado, 2 con error |
attempts | int(2) NN, 0 | |
lasterror | char(255) | |
createdby | int(10) NN, 0 | |
timecreated | int(10) NN | |
timemodified, timesent | int(10) NN, 0 |
Índices: status (status, timemodified), timesent, dedupe, userkind (userid, kind). Las filas de más de 180 días se borran.
local_deltamodules_pwtoken
Enlaces de un solo uso para crear contraseña.
| Campo | Tipo | Detalle |
|---|---|---|
id | int(10) NN, secuencia | |
userid | int(10) NN | |
purpose | char(10) NN | welcome o reset |
tokenhash | char(64) NN | sha256 del código; índice único |
expires | int(10) NN | |
used | int(1) NN, 0 | |
timecreated | int(10) NN |
Índice userpurpose (userid, purpose). Los vencidos hace más de 30 días se borran.
local_deltamodules_chunks
Fragmentos de contenido de video con su vector, para un RAG dentro de la misma base de MariaDB.
| Campo | Tipo | Detalle |
|---|---|---|
id | int(10) NN, secuencia | |
contentid | char(255) NN | Identificador del extractor ({codigo}__{video_id}); índice |
courseid | int(10) NN | Curso al que pertenece; índice |
tema | char(255) | |
texto | text NN | Fragmento de transcripción o resumen |
videourl | char(255) | |
tsinicio, tsfin | number(10,2) | Segundos de inicio y fin del tramo |
embedding | text | Vector en JSON |
embeddingmodel | char(100) | |
timecreated | int(10) NN |
Solo infrastructure/moodle/import-rag-chunks.php escribe en esta tabla y ninguna clase del plugin la lee. El propio script indica que no debe ejecutarse todavía (consume la API de embeddings de Gemini). La arquitectura vigente del RAG se describe en Arquitectura. Por confirmar si la tabla se seguirá usando o se retirará.
Tabla de local_candidate_enrollment: local_candenrol_code
Códigos de acceso a la Prueba Técnica de Selección. Ver local_candidate_enrollment.
| Campo | Tipo | Detalle |
|---|---|---|
id | int(10) NN, secuencia | |
code | char(20) NN | Normalizado (mayúsculas, sin guion); índice único |
groupid | int(10) NN | Grupo del curso de selección = cargo / prueba |
note | char(255) | Para quién |
maxuses | int(5) NN, 1 | |
uses | int(5) NN, 0 | |
usedby | text | Ids de postulantes separados por coma |
timeexpires | int(10) NN | |
revoked | int(1) NN, 0 | |
createdby, timecreated | int(10) NN |
Pasos de actualización
| Plugin | Versión del paso | Cambio |
|---|---|---|
local_deltamodules | 2026091001 | Crea local_deltamodules_chunks |
local_deltamodules | 2026092401 | Crea local_deltamodules_review |
local_deltamodules | 2026092402 | Agrega criterios a local_deltamodules_review |
local_deltamodules | 2026092403 | Crea team y teammem y migra los líderes existentes (rol delta_lider_equipo en contexto de usuario) a equipos con nombre |
local_deltamodules | 2026092408 | Crea local_deltamodules_rep |
local_deltamodules | 2026092901 | Crea local_deltamodules_clientcode |
local_deltamodules | 2026092902 | Crea local_deltamodules_excl y local_deltamodules_client |
local_deltamodules | 2026092904 | Crea local_deltamodules_mail y local_deltamodules_pwtoken |
local_deltamodules | 2026100500 | Crea local_deltamodules_rule |
local_candidate_enrollment | 2026092401 | Crea local_candenrol_code |
Cada paso comprueba si la tabla o el campo ya existen antes de crearlos.
Privacidad de las tablas
Las tablas con datos personales están declaradas en los proveedores de privacidad: local_deltamodules\privacy\provider (correos, enlaces de contraseña, equipos, módulos desactivados, informes, revisiones, códigos de registro, reglas y contactos de clientes) y local_candidate_enrollment\privacy\provider (usedby y createdby de local_candenrol_code). Qué se exporta, qué se borra y qué se desvincula se detalla en local_deltamodules → Privacidad y en local_candidate_enrollment. Una tabla nueva con datos de personas debe agregarse al proveedor correspondiente.
Datos en tablas de Moodle
Además de sus tablas, el código escribe en tablas nativas: campos personalizados de curso (customfield_data: ultima_revision, proxima_revision, responsable_revision, resultado_revision, cambios_requeridos, fecha_actualizacion, asignacion_por_cargo, tipo_asignacion), campo de perfil de usuario area (user_info_data), cohortes (cargo_*, cli_*, clientes, candidatos, delta_todos), excepciones de cuestionario (quiz_overrides), local_ai_manager_userinfo, customcert_issues (revocación) y configuración y preferencias (ver Ajustes y preferencias).
Servicios web y API
Funciones externas de local_deltamodules (db/services.php), su uso desde el JavaScript global y el servicio MCP para la administración por un agente externo.
Tareas programadas
Tareas programadas y ad hoc de local_deltamodules y cómo corre el cron de Moodle en el contenedor moodle-cron.