Protocolo paso a Producción
Ítem 10 del plan · Responsable: Líder funcional · Duración: 300 min
Guion de validación funcional de lo entregado. Mientras la verificación técnica comprueba que el despliegue quedó sano, este protocolo comprueba que cada funcionalidad hace lo que se prometió.
Es el criterio de aceptación de la entrega: su resultado se adjunta al cierre del RFC.
Alcance
Se valida: las funcionalidades de los seis componentes del
Manifiesto de entrega, sobre https://applicationcert.colombiaaprende.edu.co.
No se valida aquí: la infraestructura del ambiente, la autenticación CAS, el contenido pedagógico ni los subsistemas nativos de Moodle ajenos a la entrega.
La trazabilidad de cada funcionalidad a su requisito y a su diseño está en el Catálogo de features; cada fila de este protocolo enlaza a la ficha correspondiente.
Prerrequisitos
Sin estos cuatro elementos el protocolo no es ejecutable. Conviene confirmarlos antes de abrir la ventana.
| # | Prerrequisito | Quién lo aporta |
|---|---|---|
| 1 | Verificación técnica superada (ítem 8) y aplicación fuera de mantenimiento (ítem 9) | Aplicaciones CA / Monitoreo |
| 2 | Cuenta de estudiante matriculado en al menos un curso con seguimiento de finalización activo, actividades completables y una evaluación con calificación aprobatoria | MEN |
| 3 | Cuenta de gestor o docente editor en ese mismo curso | MEN |
| 4 | Servicio de IA externo accesible y configurado (ítems 2 y 7) | MEN / operador del servicio |
En Certificación no existe el curso piloto de los ambientes de desarrollo: los datos no viajan entre ambientes. El curso sobre el que se ejecuta este protocolo lo designa el MEN, y debe ser el mismo que recibió los bloques de gamificación en el paso 3.
Cómo registrar los resultados
Cada caso se marca OK, NOK o N/A, con evidencia (captura o consulta) para los NOK.
| Severidad del hallazgo | Acción |
|---|---|
| Bloqueante — impide el uso normal del campus | Disparar el plan de reversa |
| Mayor — la funcionalidad no cumple lo prometido, pero el campus opera | Registrar; decisión del responsable técnico |
| Menor — defecto visual o de detalle | Registrar y corregir en una entrega posterior |
La decisión de revertir la toma el responsable técnico del cambio, no el ejecutante del protocolo.
Bloque 1 — Portada y navegación (30 min)
Sin autenticar, y después como estudiante.
| # | Caso | Resultado esperado | Ficha |
|---|---|---|---|
| 1.1 | Abrir la portada del campus | Carga con el diseño del tema cdigital | — |
| 1.2 | Carrusel de banners | Rota automáticamente, responden flechas, puntos y el control de pausa | Carrusel |
| 1.3 | Carrusel con movimiento reducido | Con prefers-reduced-motion activo en el sistema, no rota solo | Carrusel |
| 1.4 | Explorar cursos por categorías | Las categorías se muestran como cards y se expanden mostrando subcategorías y cursos | Categorías |
| 1.5 | Buscar un curso | Los resultados usan la card de búsqueda del tema, no el listado nativo | Card de búsqueda |
| 1.6 | Miga de pan | Aparece poblada en portada, área personal, mis cursos, catálogo de categorías y vista de curso | Miga de pan |
Bloque 2 — Área personal (60 min)
Como estudiante matriculado, en /my/.
| # | Caso | Resultado esperado | Ficha |
|---|---|---|---|
| 2.1 | Welcome Hero | Saluda por el nombre del estudiante y ofrece continuar el último curso | Welcome Hero |
| 2.2 | Stats Row | Cuatro métricas con valores coherentes con la matrícula real del estudiante | Stats Row |
| 2.3 | Continúa donde quedaste | Enlaza al curso más reciente y a la posición correcta según el formato del curso | Continue Card |
| 2.4 | Sección Mis Cursos | Muestra los cursos del estudiante y las pestañas filtran (Todos / En curso / Completados) | Mis Cursos |
| 2.5 | Bloque "Cursos que necesitan atención" — caso positivo | Con un estudiante con alertas de riesgo, lista hasta 3 cursos con su motivo | Cursos que necesitan atención |
| 2.6 | Bloque "Cursos que necesitan atención" — caso negativo | Con un estudiante sin alertas de riesgo, el bloque no emite contenido y Moodle lo oculta. No debe verse un bloque vacío | Cursos que necesitan atención |
| 2.7 | Widget "Usuarios en línea" | Avatares apilados, chip con el resto y contador | Usuarios en línea |
| 2.8 | Bloques retirados | No aparecen Línea de tiempo, Calendario ni "Cursos a los que se ha accedido recientemente" | Retirar bloques |
| 2.9 | Mis cursos (/my/courses.php) | La fila de filtros usa el lenguaje del tema y los filtros de agrupación, orden y vista funcionan | Card de curso |
| 2.10 | Favorito en la card de curso | Marcar y desmarcar favorito persiste al recargar | Card de curso |
| 2.11 | Campo "Profesor:" | Se rellena con los docentes reales del curso | Card de curso |
Bloque 3 — Vista de curso y Dashboard de aprendizaje (60 min)
Como estudiante matriculado, en /course/view.php?id=<N>.
| # | Caso | Resultado esperado | Ficha |
|---|---|---|---|
| 3.1 | Fila héroe del curso | Portada, nombre, docente y barra de progreso coherente con el avance real | — |
| 3.2 | Banner "Tu desempeño académico" | Presente, con métricas coherentes | Banner de curso |
| 3.3 | Modal "Ver mi avance" | Abre y muestra sus 7 tarjetas con datos, no vacías | Modal Ver mi avance |
| 3.4 | Alertas académicas | Las alertas mostradas corresponden a la situación real del estudiante | Alertas académicas |
| 3.5 | Fila "Contenido del curso" e insignias | Se muestra sobre el contenido, con el contador de insignias | Contenido e insignias |
| 3.6 | Drawer "Índice de curso" | Abre y cierra, y su botón usa el diseño del tema | Índice de curso |
| 3.7 | Marco de secciones | Las secciones se ven como acordeón con cabecera sombreada y chevron | Marco de secciones |
| 3.8 | Contenido de actividad | Entrar a una tarea, una carpeta y un contenido interactivo: la cabecera no aparece duplicada y el ancho es consistente | Marco de actividad |
| 3.9 | Curso con formato de pestañas | Si el ambiente tiene cursos onetopic: las pestañas usan el subrayado del tema y el contenido de cada sección se ve completo | Pestañas onetopic |
| 3.10 | Sin seguimiento de finalización | En un curso con completación desactivada, las métricas se ocultan en vez de mostrar ceros o errores | Modal Ver mi avance |
Bloque 4 — Gamificación (75 min)
Sobre el curso designado. Los casos 4.4 a 4.13 requieren recorrido de estudiante.
| # | Caso | Cómo ejecutar | Resultado esperado |
|---|---|---|---|
| 4.1 | Niveles configurados | SELECT levels, levelsdata FROM mdl_block_xp_config; | 8 niveles, de "Gema Alba" a "Gema Prisma", incrementos de 500 XP |
| 4.2 | Imagen del nivel | Como estudiante, bloque XP en el curso | Imagen de la Gema correspondiente visible |
| 4.3 | Acumulación de XP | Visitar el curso y actividades varias veces | XP acumulado mayor que cero |
| 4.4 | Subida de nivel | Acumular 500 XP o más | Aviso de subida al nivel siguiente |
| 4.5 | #05 Explorador Inicial | Completar una actividad | Insignia otorgada en /badges/mybadges.php |
| 4.6 | #06 Reto Entregado | Enviar una actividad evaluable | Insignia otorgada |
| 4.7 | #07 Avance en Terreno | Completar el 50 % de los módulos | Insignia otorgada |
| 4.8 | #08 Zona Superada | Completar todas las actividades de un módulo | Insignia otorgada |
| 4.9 | #09 Impulso Renovado | Aprobar la evaluación con calificación aprobatoria | Insignia otorgada |
| 4.10 | #10 Misión Cumplida | Completar el curso | Insignia otorgada automáticamente |
| 4.11 | #12 Exploración Digital | Completar una actividad por módulo | Insignia otorgada |
| 4.12 | #01 Primer Despegue (encadenada) | Completar la actividad de bienvenida | Se otorga la insignia de curso intermedia y, a través de ella, la global |
| 4.13 | #02 Pionero del Aprendizaje | Completar un curso | Insignia global otorgada |
| 4.14 | #11 Aliado Inteligente inactiva | SELECT status FROM mdl_badge WHERE name = 'Aliado Inteligente'; | status = 0 — está diferida, no debe otorgarse |
| 4.15 | Colección de logros del curso | Bloque de logros en la región lateral | Contador "N de M" y grid de obtenidas y bloqueadas |
| 4.16 | Objetos coleccionables intactos | Consultar los ítems de block_stash | Los objetos existentes, sin cambios |
Consulta de auditoría de insignias:
SELECT b.name, b.type, COUNT(bi.id) AS otorgadas
FROM mdl_badge b
LEFT JOIN mdl_badge_issued bi ON bi.badgeid = b.id
GROUP BY b.id
ORDER BY b.type, b.name;
Referencias: Gemas — Niveles XP · Insignias · Guía para gestores.
Bloque 5 — Tutor IA y servicios web (45 min)
| # | Caso | Resultado esperado | Ficha |
|---|---|---|---|
| 5.1 | Drawer IA visible | El botón flotante del tutor aparece como estudiante autenticado | Drawer IA |
| 5.2 | Conversación | Enviar un mensaje y recibir respuesta del servicio externo | Drawer IA |
| 5.3 | Control de frecuencia | Enviar dos mensajes seguidos por debajo del ratelimit configurado: el segundo se rechaza con aviso | Ajustes del tutor IA |
| 5.4 | Drawer en contenido SCORM | Abrir una actividad SCORM: el drawer sigue accesible | Drawer IA |
| 5.5 | Servicio "Componente IA Externo" | El servicio existe con sus funciones y su token | Web Services IA |
| 5.6 | get_course_teachers por token | Devuelve los docentes de los cursos solicitados | local_pccntr8203403_dashboard |
| 5.7 | get_student_panel por token | Devuelve el panel completo del estudiante para un userid y courseid | Consumo del panel |
| 5.8 | get_student_panel sin permiso | Con una cuenta sin la capacidad, la llamada falla con error de capacidad y no filtra datos | Consumo del panel |
| 5.9 | get_activity_context por token | Devuelve una fila por actividad del userid y courseid, con sección, estado, nota y fecha límite | Contexto de actividades |
| 5.10 | get_activity_context sin permiso | Con una cuenta sin viewcontext en el curso, la llamada falla con nopermissions y no devuelve ninguna fila | Contexto de actividades |
Bloque 6 — Regresión y transversales (30 min)
| # | Caso | Resultado esperado |
|---|---|---|
| 6.1 | Ingreso por CAS | El estudiante entra al campus con su cuenta institucional |
| 6.2 | Cierre de sesión | El cierre de sesión funciona y no re-autentica de inmediato |
| 6.3 | Rol docente | Un docente ve su curso y las herramientas de edición sin errores |
| 6.4 | Rol administrador | La administración del sitio carga sin errores |
| 6.5 | Página de perfil y preferencias | Cargan con el diseño del tema y sin errores de consola |
| 6.6 | Logs durante el recorrido | Revisar el log de PHP al terminar: sin entradas nuevas de error generadas por el recorrido |
| 6.7 | Móvil | Repetir 2.1, 3.1 y 5.1 en un ancho de móvil: el menú lateral y los componentes responden |
Acta de resultados
Al terminar, consolidar en una tabla firmable que se adjunta al cierre del RFC:
| Bloque | Casos | OK | NOK | N/A | Hallazgos bloqueantes |
|---|---|---|---|---|---|
| 1 — Portada y navegación | 6 | ||||
| 2 — Área personal | 11 | ||||
| 3 — Vista de curso y Dashboard | 10 | ||||
| 4 — Gamificación | 16 | ||||
| 5 — Tutor IA y servicios web | 10 | ||||
| 6 — Regresión y transversales | 7 | ||||
| Total | 60 |
Cada NOK se registra con: número de caso, resultado obtenido, evidencia, severidad y decisión.