El móduloDocumentation 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.
src/services/gemini.ts centraliza toda la comunicación con la API de Google Gemini. Exporta tres funciones asíncronas —extractProfile, evaluateVAP y getAIRecommendation— y una función auxiliar interna, parseJSONResponse, que garantiza la extracción robusta de JSON de las respuestas del modelo.
Configuración del cliente
RAP-Rec utiliza el SDK oficial@google/genai (no @google/generative-ai). El cliente se inicializa una sola vez al cargar el módulo:
La variable de entorno
GEMINI_API_KEY debe estar disponible en el proceso que ejecuta la aplicación. Si no está definida, el módulo emite una advertencia en consola pero no lanza excepción en tiempo de inicialización; el error ocurre al primer llamado al modelo.Funciones exportadas
extractProfile
Analiza el texto de una hoja de vida y devuelve un objeto UserProfile estructurado.
| Parámetro | Tipo | Descripción |
|---|---|---|
text | string | Texto extraído del CV (PDF o DOCX). Se trunca a los primeros 8 000 caracteres antes de enviarse al modelo. |
retries | number | Número de reintentos disponibles. Valor por defecto: 2. |
| Propiedad | Valor |
|---|---|
model | "gemini-3-flash-preview" |
temperature | 0.1 (baja, para máxima fidelidad en extracción) |
responseMimeType | "application/json" |
UserProfile:
Campos básicos
Campos básicos
nombre— Nombre completo del aspiranteemail— Correo electrónico, si existephone— Teléfono, si existeyears_experience— Años totales de experiencia laboral (calculado)current_position— Cargo actualempresa— Empresa o institución actualindustry— Sector o industriaeducation_level— Nivel educativo más alto (Pregrado, Posgrado, etc.)
Formación académica
Formación académica
El campo
formacion es un arreglo de objetos con:titulo— Nombre del título o diplomainstitucion— Universidad o entidadanio— Año de graduación o"En curso"nivel— Nivel (Pregrado, Posgrado, Especialización, Maestría, Doctorado)
Competencias y proyectos
Competencias y proyectos
technical_skills— Arreglo de habilidades técnicascertifications— Arreglo de certificaciones (separadas de la educación formal)relevant_projects— Arreglo de proyectos relevantes
Campos VAP-Rec específicos
Campos VAP-Rec específicos
area_profundizacion— Campo de interés detectadocontexto_aplicacion— Contexto de aplicación detectadoobjetivo_profesional— Meta profesional detectadamotivation— Resumen motivacionalresumen— Resumen general del perfilrespuestas_experiencia.transformacion_pedagogica— Nivel de experiencia en transformación pedagógicarespuestas_experiencia.diseño_curricular— Nivel de experiencia en diseño curricularrespuestas_experiencia.integracion_tic— Nivel de experiencia en integración TIC
evaluateVAP
Evalúa al aspirante contra las 5 competencias del Marco VAP y devuelve un arreglo de puntuaciones con justificaciones.
| Parámetro | Tipo | Descripción |
|---|---|---|
profile | UserProfile | Perfil completo del aspirante. |
answers | Record<string, string> | Respuestas de la evaluación técnica: clave de competencia → opción seleccionada. Opcional. |
retries | number | Reintentos disponibles. Valor por defecto: 2. |
VAP_COMPETENCIES se serializa como JSON y se inyecta en la instrucción del sistema. Las cinco competencias son:
| ID | Clave | Nombre |
|---|---|---|
| C1 | COMUNICACION_OE | Comunicación Oral y Escrita en Contextos Educativos |
| C2 | INVESTIGACION_IE | Investigación-Intervención en Asuntos Educativos |
| C3 | PRAXIS_TRANSF_PED | Praxis y Transformación Pedagógica |
| C4 | DISENO_EVAL_CURR | Diseño y Evaluación Curricular |
| C5 | USO_TIC_EDU | Uso de TIC para Enriquecer Procesos Educativos |
| Rango | Nivel |
|---|---|
| 1.0 – 2.5 | Novato |
| 3.0 – 3.9 | Competente |
| 4.0 – 4.5 | Proficiente |
| 4.6 – 5.0 | Experto |
VAPEvaluation:
getAIRecommendation
Genera la ruta académica personalizada cruzando los resultados de la evaluación VAP con el catálogo de cursos.
| Parámetro | Tipo | Descripción |
|---|---|---|
profile | UserProfile | Perfil del aspirante. |
evaluation | VAPEvaluation[] | Resultados de la evaluación VAP. |
retries | number | Reintentos disponibles. Valor por defecto: 2. |
- Identificar las competencias (C1–C5) con
puntaje < 4.0. - Seleccionar cursos del catálogo cuyas
competencias_VAP_primariascorrespondan a esas brechas. - Priorizar los cursos que abordan la brecha más crítica (menor puntaje).
- Sugerir máximo 4 cursos.
El campo
estado de cada materia puede ser "regular" (materia normal del plan), "exonerada" (reconocida por experiencia previa) o "sugerida" (curso adicional para cerrar brechas). El plan_semestral debe incluir todas las materias del programa, marcando cuáles se exoneran y cuáles se agregan.Función auxiliar: parseJSONResponse
parseJSONResponse es una función interna que extrae JSON de respuestas del modelo que pueden contener texto adicional o bloques de código Markdown.
Manejo de errores y reintentos
Las tres funciones comparten una política de reintentos con retardo:Primera llamada al modelo
Se ejecuta la solicitud con los parámetros configurados. Si la respuesta es exitosa, se parsea y devuelve el resultado.
Reintento con espera
Si ocurre un error y quedan reintentos disponibles, la función espera
1 500 ms × número_de_intento antes de reintentar automáticamente.Páginas relacionadas
Extracción de perfil
Detalles del pipeline de procesamiento de PDF y DOCX antes de llamar a
extractProfile.Marco VAP
Las 5 competencias que
evaluateVAP evalúa y cómo se definen sus niveles.Gap analysis
Cómo
getAIRecommendation cruza puntajes VAP con el catálogo para generar la ruta.Catálogo de cursos
Estructura de los cursos disponibles que se pasan a
getAIRecommendation.