Saltar al contenido principal

local_pccntr8203403_iacontext

Ficha técnica
  • Impacto — Tema: —
  • Impacto — Plugin: plugin propio: classes\external\get_activity_context, classes\data\activity_context, capacidad viewcontext y caché MUC activitycontext
  • Versión: 2026091401 (release 0.3.0-prototype, madurez ALPHA) · Requiere: Moodle ≥ 5.0 (2025092600)
  • Requisito: Definición de alcance integración IA–Moodle (docx) · Figma: — · Estado: En desarrollo

Contrato de consumo para el desarrollador del servicio de IA externo: get_activity_context. Esta página es la ficha del componente; aquella es el contrato de la función.

Propósito​

Entregar al servicio de IA externo, en una sola llamada de solo lectura, una fila plana por actividad con nombre, sección, tipo, enlace, estado de completitud, nota y fecha límite ya unidos por cmid, más la completitud del curso y el último acceso del estudiante. Sin él, esa unión hay que hacerla en tiempo de inferencia cruzando core_course_get_contents, core_completion_get_activities_completion_status y gradereport_user_get_grade_items.

Vive en un plugin propio y no dentro de local_pccntr8203403_dashboard porque su consumidor, su capacidad y su ciclo de vida son otros: el dashboard alimenta la interfaz del campus, este plugin solo alimenta a un tercero.

Funcionalidades​

  • Dos modos de uso: aserción (courseid explícito, que además valida la matrícula activa del estudiante) y descubrimiento (courseid = 0, que recorre las matrículas activas y reporta en warnings cuántos cursos se omitieron, nunca cuáles).
  • Las filas se construyen con el modinfo del estudiante, no el del usuario del token: la visibilidad, las restricciones de acceso y uservisible son las que ve el estudiante.
  • Catálogo de campos configurable desde administración, de modo que ajustar la respuesta es un cambio de configuración y no un despliegue. cmid se reinyecta siempre: sin la llave la fila no se puede resolver contra Moodle.
  • Ningún campo de identidad en la respuesta por defecto: firstname y fullname nacen desmarcados y activarlos es un acto administrativo explícito.
  • Las notas ocultas solo viajan si el llamante tiene moodle/grade:viewhidden en el curso.
  • Cota dura de actividades por curso; al aplicarse, el curso se marca con truncated: true.

Tablas de base de datos​

Ninguna propia. Lee por las APIs de núcleo (get_fast_modinfo, completion_info, la API de calificaciones) y resuelve la completitud del curso con consultas planas en lugar de completion_info::get_completions(), que abre una consulta por criterio y construye un segundo modinfo para el usuario del token.

API / Funciones externas​

FunciónDescripción
local_pccntr8203403_iacontext_get_activity_contextContexto plano de actividades de un estudiante, por curso o por todas sus matrículas activas. Tipo read, ajax: false, requiere login y token del servicio "Componente IA Externo". Contrato: get_activity_context

Orden de comprobaciones​

La autorización del llamante se resuelve antes que cualquier dato del estudiante: primero validate_context() y require_capability() sobre el curso, después la matrícula del estudiante consultado. Así, quien no puede reportar sobre un curso recibe nopermissions y no puede deducir por la diferencia entre errores si un estudiante está matriculado en él. La clase data\activity_context no es una frontera de seguridad y no debe convertirse en una: asume que quien la invoca ya autorizó.

Capacidad​

CapacidadRiesgoContextoArquetipos
local/pccntr8203403_iacontext:viewcontextRISK_PERSONALCONTEXT_COURSENinguno

Sin arquetipos a propósito: no la hereda ningún rol estándar y hay que asignarla explícitamente al rol de la cuenta de servicio. Ver Web Services IA.

Caché MUC​

DefiniciónModoPropósito
activitycontextMODE_APPLICATIONFilas ya construidas por estudiante, curso y huella de los ajustes

La vigencia efectiva la fija el ajuste cachettl, comparando el generatedat guardado dentro del valor: el ttl de la definición vive en moodledata/muc/config.php y solo se reescribe al actualizar el plugin o purgar cachés, así que no puede seguir a un ajuste que el administrador cambia sin ventana de mantenimiento. La caché nunca sustituye a la autorización: capacidad y matrícula se reevalúan en cada petición, antes de leerla.

Configuración​

Administración del sitio > Plugins > Plugins locales > Contexto IA. Siete ajustes: los dos catálogos de campos (actividad y estudiante), el bloque de completitud del curso, las actividades ocultas, la exclusión de módulos sin página de vista, el máximo de actividades por curso y la vigencia de la caché. El efecto de cada uno está en la tabla de ajustes del contrato.

db/upgrade.php siembra los campos nuevos en el catálogo ya guardado: sin ese paso, un valor almacenado de una versión anterior gana sobre los valores por defecto del código y los campos nuevos solo aparecerían en instalaciones nuevas.

Privacidad​

Declara un privacy\provider de tipo null_provider: no almacena datos personales en Moodle. Los datos que la función devuelve son los del estudiante consultado, y su alcance lo gobierna el catálogo de campos.

Tests​

tests/external/get_activity_context_test.php, 28 pruebas PHPUnit sobre los parámetros, los dos modos de uso, el orden de comprobaciones, los errorcode del contrato, los avisos agregados del modo descubrimiento y el efecto de cada ajuste.

Dependencias​

  • Ninguna en version.php.
  • Moodle >= 5.0 (requires 2025092600).
  • Para ser alcanzable: el servicio "Componente IA Externo" con la función dada de alta y un token de una cuenta de servicio con viewcontext y moodle/course:view.

Relación con get_student_panel​

Son complementarias y no se solapan: get_student_panel entrega el panel de aprendizaje del estudiante (progreso, racha, últimas notas y las 12 alertas académicas) tal como lo ve el campus; get_activity_context entrega el detalle plano actividad por actividad, que el panel no lleva. Los campos que ya resuelve el dashboard no se duplican aquí.

Historial de cambios​

Ver CHANGELOG.md en la raíz del sitio de documentación.