Insignias
Componente: Moodle Badges nativo (mdl_badge, mdl_badge_criteria, mdl_badge_issued)
Alcance: 1 — Gamificación
Estado: Creadas y validadas en local (curso piloto 3 "Expedición LEO")
Fuente: requierments/Gamificación - Campus virtual.xlsx (sheet Insignia) — reemplaza la lista de la propuesta v2
Propósito
Logros certificados (OpenBadges) otorgados automáticamente al cumplir criterios nativos de Moodle. La spec vigente define 12 insignias: 4 globales (site badges) y 8 de curso (course badges). Respecto a la lista anterior: se retiran "Racha Conectada" y "Ruta Activada" (no implementables sin código), entran "Coleccionista" y "Perfil", y "Aliado Inteligente" pasa de global a course badge (sigue diferida).
Matriz de asignación — globales (site badges)
| # | Insignia | Condición (spec) | Mecanismo de asignación |
|---|---|---|---|
| 01 | Primer Despegue | Completar la actividad de bienvenida | Las site badges no soportan activity completion → course badge intermedia "Bienvenida" (activity completion sobre la actividad de bienvenida) + site badge con criterio "Insignias otorgadas" apuntando a ella |
| 02 | Pionero del Aprendizaje | Primer curso completado | Criterio nativo "Completar un conjunto de cursos", agregación "cualquiera". Prerrequisito: course completion configurado en los cursos listados |
| 03 | Coleccionista | Más de 4 insignias de curso | No existe criterio nativo "N cualesquiera" → aproximación: "Insignias otorgadas" con un set fijo de 5 course badges y agregación "todas". La versión exacta exigiría un observer de \core\event\badge_awarded (diferida) |
| 04 | Perfil | Foto, ciudad, país, fecha de nacimiento, biografía y nombre | Criterio nativo "Perfil completado" (picture, city, country, description, firstname) + campo de perfil personalizado fechanacimiento (datetime), aceptado por el mismo criterio |
Matriz de asignación — de curso (curso 3)
| # | Insignia | Condición (spec) | Mecanismo de asignación |
|---|---|---|---|
| 05 | Explorador Inicial | Primera actividad completada | Activity completion, "cualquiera", sobre todas las actividades con completion del curso |
| 06 | Reto Entregado | Enviar actividad evaluable | Activity completion, "cualquiera", sobre los assign y quiz |
| 07 | Avance en Terreno | ≥50 % de todos los módulos | Activity completion, "todas", sobre la mitad (techo) de las actividades completables de cada módulo, por orden de cmid |
| 08 | Zona Superada | 100 % de un módulo | Activity completion, "todas", sobre las actividades del Módulo 1 (patrón replicable: una copia por módulo) |
| 09 | Impulso Renovado | Calificación aprobatoria | Activity completion sobre el quiz con gradepass y "requiere calificación aprobatoria" (la parte "tras una alerta" de la spec no es nativa; las alertas pertenecen al Alcance 2) |
| 10 | Misión Cumplida | Curso completado | Criterio "Finalización del curso". Prerrequisito: criterios de course completion definidos |
| 11 | Aliado Inteligente | Primer uso del tutor IA | No nativo. Creada inactiva (status=0), sin criterios; la otorgará local_pccntr8203403_aitutor (Alcance 3) programáticamente |
| 12 | Exploración Digital | 1 actividad representativa por módulo | Activity completion, "todas", con 1 actividad por módulo (las mismas del course completion) |
Encadenamiento site badge ← course badge
Limitación nativa: las site badges no soportan "Activity completion". Patrón sin código: course badge intermedia con activity completion + site badge con criterio "Insignias otorgadas". Así funcionan #01 (vía "Bienvenida") y #03 (vía el set de 5). La badge intermedia "Bienvenida" es visible en la colección del curso (aparece en el contador de la Card 2 del sidebar).
Prerrequisitos de configuración
mdl_course.enablecompletion = 1y Activity completion en las actividades relevantes.- Course completion definido (para #02 y #10). En el curso 3: 1 actividad representativa por módulo, agregación ALL.
- Actividad de bienvenida con completion automática (para #01).
- Evaluable con
gradepassy "requiere calificación aprobatoria" (para #09). - Campo de perfil personalizado
fechanacimientotipo datetime (para #04).
Imágenes
12 PNG en requierments/assets/insignias/ (NN_Nombre - global|curso.png), cargadas con badges_process_badge_image(). Las gemas están en requierments/assets/niveles/.
Validación (local, 2026-07-14)
Recorrido simulado con estudiante de prueba: los 12 criterios otorgan correctamente (encadenado, coleccionista, courseset, perfil con campo custom, nota aprobatoria) y "Aliado Inteligente" permanece inactiva sin otorgarse. Ver guía del sidebar.
Replicación entre cursos
Cada gestor configura su curso siguiendo la guía para gestores de cursos
(finalización + creación de las 8 insignias + bloques). Alternativa técnica: duplicar las course badges vía UI
(Course badges → Duplicate) y reapuntar los course_modules del curso destino; validar curso a curso.
Verificación
-- Auditoría general: insignias y cuántas veces se han otorgado
SELECT b.name, b.type, b.status, 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;
-- type=1: site badge, type=2: course badge · status=1 activa, status=0 inactiva