Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/mafab9125/PDG_SISTEMA_RECOMENDADOR/llms.txt

Use this file to discover all available pages before exploring further.

El catálogo de cursos es el conjunto de materias de posgrado que RAP-Rec utiliza como universo de selección durante el Gap Analysis. Cada curso se describe mediante la interfaz TypeScript Course, definida en src/types.ts, y se almacena en el array COURSE_CATALOG exportado desde src/data/courses.ts.

Interfaz TypeScript Course

interface Course {
  id_curso: string;
  nombre: string;
  codigo?: string | null;
  creditos: number;
  semestre?: number | null;
  area_tematica?: string | null;
  descripcion?: string | null;
  objetivos: string[];
  competencias_declaradas: string[];
  resultados_aprendizaje: string[];
  contenidos: { unidad: string | null; temas: string[] }[];
  temas_clave: string[];
  palabras_clave: string[];
  programa: string;
  nivel_programa: string;
  competencias_VAP_primarias?: string[];
}

Descripción de cada campo

CampoTipoObligatorioDescripción
id_cursostringIdentificador único del curso, ej. "CURSO_085EF97C". Se usa como referencia en cursos_sugeridos de la recomendación.
nombrestringNombre completo del curso tal como aparece en el plan de estudios.
codigostring | nullNoCódigo oficial del curso en el sistema académico de Icesi, ej. "60078". Puede ser nulo si aún no está asignado.
creditosnumberNúmero de créditos académicos del curso.
semestrenumber | nullNoSemestre sugerido dentro del plan de estudios (1, 2, 3…). Nulo si el curso no tiene semestre fijo.
area_tematicastring | nullNoÁrea temática del curso, ej. "Lenguaje", "Educación".
descripcionstring | nullNoTexto descriptivo del curso. El motor trunca este campo a los primeros 100 caracteres al pasarlo al modelo de IA.
objetivosstring[]Lista de objetivos de aprendizaje. Puede ser un array vacío.
competencias_declaradasstring[]Competencias en lenguaje libre tal como las declara el syllabus. No se usa para el cruce automático.
resultados_aprendizajestring[]Resultados de aprendizaje esperados al finalizar el curso. Puede ser un array vacío.
contenidos{ unidad: string | null; temas: string[] }[]Unidades temáticas del curso con sus temas. Puede ser un array vacío.
temas_clavestring[]Palabras o frases que resumen los temas principales del curso.
palabras_clavestring[]Términos de búsqueda o clasificación del curso.
programastringNombre del programa al que pertenece el curso, ej. "Maestría en Educación".
nivel_programastringNivel del programa: "Maestría" o "Especialización".
competencias_VAP_primariasstring[]NoCampo crítico para el motor de recomendación. Lista de identificadores C1–C5 que este curso fortalece. Ver sección siguiente.

El campo competencias_VAP_primarias

competencias_VAP_primarias es el enlace directo entre el catálogo y el motor de Gap Analysis. Contiene uno o más identificadores del Marco VAP ("C1", "C2", "C3", "C4", "C5") que indican qué competencias desarrolla el curso. Cuando el algoritmo de recomendación busca cursos para cerrar una brecha, filtra el catálogo por este campo: si alguno de los valores en competencias_VAP_primarias coincide con una competencia cuyo puntaje es menor a 4.0, el curso se convierte en candidato. Ejemplo: el curso Diseño Microcurricular tiene:
{
  id_curso: "CURSO_4FD684F1",
  nombre: "Diseño Microcurricular",
  competencias_VAP_primarias: ["C4", "C2"],
  // ...
}
Si el aspirante obtuvo C4 = 3.2 y C2 = 2.8, ambas son brechas activas y este curso es candidato. Si además C2 tiene el puntaje más bajo, el curso recibe mayor prioridad en la selección.
El campo competencias_declaradas contiene las competencias en lenguaje libre del syllabus original (ej. "Diseño y evaluación curricular"). Solo competencias_VAP_primarias usa los identificadores C1–C5 y es el que lee el motor de recomendación.

Cómo el catálogo llega al modelo de IA

La función getAIRecommendation en src/services/gemini.ts transforma el catálogo antes de enviarlo al modelo para reducir el tamaño del prompt. Solo incluye cinco campos por curso:
const catalogPrompt = JSON.stringify(COURSE_CATALOG.map(c => ({
  id: c.id_curso,
  nombre: c.nombre,
  competencias: c.competencias_VAP_primarias,
  desc: c.descripcion?.substring(0, 100),
  semestre: c.semestre
})));
El modelo recibe esta versión reducida junto con la instrucción de cruzar competencias con las brechas del aspirante y seleccionar como máximo 4 IDs de curso para cursos_sugeridos. El catálogo actual en src/data/courses.ts incluye 9 cursos distribuidos en dos programas:
IDNombreProgramaCréditosSemestreCompetencias VAP
CURSO_085EF97CComunicación efectiva en el aulaEspecialización en Docencia Universitaria21C1, C3
CURSO_4FD684F1Diseño MicrocurricularEspecialización en Docencia Universitaria32C4, C2
CURSO_5E1D8FB1Introducción a la docencia universitariaEspecialización en Docencia Universitaria12C3
CURSO_F4E92379La evaluación de los aprendizajesMaestría en Educación2C4, C5
CURSO_36DFE354Pedagogía CreativaMaestría en Educación2C3
CURSO_DAF631A9Contextos IA + TIC en educaciónMaestría en Educación2C5, C3
CURSO_59B6A6C4InvestigaciónMaestría en Educación2C2
CURSO_22AE5C83Arquitecturas del Aprendizaje IMaestría en Educación3C2, C5, C3
CURSO_9F894252Herramientas IA+TIC IIMaestría en Educación3C5
Para entender cómo el motor prioriza estos cursos según el puntaje VAP del aspirante, consulta Análisis de brecha.

Build docs developers (and LLMs) love