UNIVERSIDAD DON BOSCO DIRECCIÓN DE EDUCACIÓN A DISTANCIA PROYECTO DE GRADUACIÓN: Diseño y desarrollo de prototipo de aplicación de reclutamiento de talento humano en el mercado laboral informático con asistencia de inteligencia artificial para selección de candidatos para empresa consultora de software de El Salvador. PARA OPTAR AL GRADO DE: MAESTRO EN ARQUITECTURA DE SOFTWARE AUTORES: Juan Héctor Larios Alvarenga Ivania Beatriz López Artiga José Miguel García Pérez ASESOR: David Arturo Martínez Antiguo Cuscatlán, La Libertad El Salvador C. A. Febrero, 2024 Rector Universidad Don Bosco Dr. Mario Rafael Olmos Secretaria General Inga. Yesenia Xiomara Martínez Oviedo Director de Educación a Distancia Mg. Eduardo Menjívar Valencia Coordinador de la Maestría Mg. Mauricio Orlando Figueroa Chicas Nombre del asesor del proyecto de graduación David Arturo Martínez Nombre del Lector Mg. Herson Miguel Serrano Chacón 3 Agradecimientos A Dios. Por darnos la sabiduría, fuerza, recursos económicos e inteligencia para obtener un postgrado de estudios, y también llegar a este nuevo punto en nuestra carrera profesional y guiarnos a los conocimientos y respuestas que nos permitieron mejorar como informáticos y seres humanos. A nuestra familia Por ser un apoyo constante en todo el tiempo que dedicamos a los estudios de nuestros postgrados y estar ahí en los momentos difíciles, así como en los logros de nuestras vidas. A nuestros docentes Por todos los conocimientos y sabiduría que nos dieron en todo este tiempo mientras realizamos nuestros estudios, por contestar cada duda que teníamos y permitirnos aprender más allá de temas técnicos, ya que también compartieron valores éticos y su experiencia con nosotros. 4 Resumen Los sistemas nos han ayudado a modernizar los procedimientos o procesos que se realizan en cualquier empresa u organización, aportando también un crecimiento no solo a nivel de personal, sino también monetario. Se sabe que una de las áreas más importante dentro de una organización es la de recursos humanos, dado que es ahí donde recae no solo el velar por el cumplimiento de los derechos de los trabajadores, sino para traer mejoras a los mismos. Es por ello por lo que en la actualidad se busca reforzar la manera en que esta área recluta personal para los diferentes puestos, si bien dependiendo el tamaño de la empresa, así será la técnica para atraer o reclutar personal. Se pasó del hecho en que los candidatos iban físicamente a presentar su hoja de vida o currículo y se pasó a ser enviada por correo, pero no bastó ese paso, sino que también se dejó el almacenamiento en papel para pasar a las hojas de Excel, lo cual facilita un poco el tener la información ordenada y a la mano. En la presente propuesta se presenta un prototipo de sistema para reclutamiento de candidatos para la empresa de tecnología CODE PROJECTS S.A. de C.V., (Novatech) en la que se implementará el uso de inteligencia Artificial, específicamente la rama de Machine Learning la cual permitirá detectar y sugerir cuál es el candidato que mejor se adecua al puesto o plaza que se necesita cubrir. Con dicho sistema se pasará del almacenamiento de la información de Excel a base de datos donde no solo se almacenará lo requerido en la plaza o puesto publicado por parte de la empresa, sino que también se almacenará las habilidades de los candidatos, los roles y posiciones que han ejecutado para que a través del Machine Learning se pueda analizar e ir seleccionando al mejor candidato para el puesto. 5 Además, como parte de las funcionalidades, se almacenará el historial de los postulantes anteriores, por si la empresa abre una plaza se pueda ahorrar el proceso de búsqueda interna y en lugar de ello seleccionar de los candidatos que previamente participaron en una plaza similar y que Machine Learning le sugiera cuál es el más indicado para el puesto. De esta manera, la empresa ahorra al no invertir demasiado en el proceso de selección del personal. Además de crearles un valor al tener una tecnología en auge como es la implementación de Machine Learning. 6 Índice Lista de abreviaturas y símbolos ..................................................................................................... 9 Introducción .................................................................................................................................. 10 Formulación General del Proyecto ............................................................................................... 11 Relevancia social ....................................................................................................................... 11 Objetivos del proyecto .............................................................................................................. 12 Objetivo general .................................................................................................................... 12 Objetivos específicos ............................................................................................................. 12 Descripción de productos o procesos de innovación ................................................................ 13 Fundamentación Teórica ............................................................................................................... 14 Información general de la empresa ........................................................................................... 14 Organigrama de la empresa ....................................................................................................... 14 Reclutamiento de talento humano para desarrollo de proyectos y dotación de personal .......... 15 ¿Qué es talento humano? ....................................................................................................... 15 ¿Para qué se necesita talento humano en los proyectos informáticos? .................................. 15 ¿Qué es la dotación de personal (Staffing)? .......................................................................... 16 ¿Qué es un proceso de reclutamiento de talento humano? .................................................... 17 Inteligencia artificial y Machine Learning para contratación de talento humano ..................... 19 ¿Qué es la inteligencia artificial (IA)? ................................................................................... 19 ¿Qué tipos de inteligencia artificial existen? ......................................................................... 20 ¿Qué es Machine Learning? .................................................................................................. 21 Principales Algoritmos de Machine Learning ....................................................................... 22 Fases de Desarrollo ................................................................................................................ 26 ¿Cómo se relaciona el Machine Learning con la selección de talento humano? .................. 27 Prototipo de software ................................................................................................................ 28 ¿Qué es un prototipo y para qué sirve? .................................................................................. 28 ¿Qué es un prototipo de software? ........................................................................................ 28 Tipos de prototipos ................................................................................................................ 29 Prototipo de Baja Fidelidad ................................................................................................... 29 Prototipo de Media Fidelidad ................................................................................................ 29 Prototipo de Alta Fidelidad .................................................................................................... 29 Componentes generales para la Infraestructura en la nube ....................................................... 30 7 ¿Qué es kubernetes? .............................................................................................................. 30 ¿Qué es Load Balancer o Balanceador de carga? .................................................................. 30 ¿Qué es una virtual NetWork? ............................................................................................... 30 ¿Qué es un Contenedor de registros? .................................................................................... 31 ¿Qué es un pipeline? .............................................................................................................. 31 ¿Qué es git? ........................................................................................................................... 31 Metodología .................................................................................................................................. 32 Tipos de investigación ............................................................................................................... 32 Alcance y cobertura ................................................................................................................... 32 Propuesta de solución ................................................................................................................... 33 Diseño de la solución ................................................................................................................ 33 Arquitectura de la solución ....................................................................................................... 36 Diseño de Pantallas ................................................................................................................... 37 Candidatos ............................................................................................................................. 38 Formulario de candidatos ...................................................................................................... 38 Formulario de candidatos con mensajes de validación ......................................................... 39 Requerimientos de Prototipo de la solución ............................................................................. 39 Requerimientos no funcionales. ............................................................................................ 39 Requerimientos funcionales .................................................................................................. 40 Tecnologías para utilizar en propuesta de la solución............................................................... 41 Roles del prototipo de la aplicación .......................................................................................... 45 Diagrama de casos de uso UML ............................................................................................... 46 Selección de Algoritmo de Machine Learning .......................................................................... 47 Diagrama de secuencia UML .................................................................................................... 49 API: Servicio Web que proceso los requerimientos de la posición con modelo de Machine Learning .................................................................................................................................... 49 DB: Base de datos que contiene la información de los candidatos. .......................................... 49 Diseño de base de datos ............................................................................................................ 50 Diccionario de datos .................................................................................................................. 51 Tablas de la base de datos ...................................................................................................... 51 Campos de la base de datos ................................................................................................... 52 Diseño de APIs para prototipo de software ............................................................................... 62 Listado general de APIs para prototipo de software ................................................................. 62 8 Diseño de API /api/Login ...................................................................................................... 63 Diseño de API api/habilidad .................................................................................................. 64 Diseño de API POST api/habilidad ....................................................................................... 65 Diseño de API api/candidato ................................................................................................. 66 Diseño de API POST api/candidato ...................................................................................... 67 Diseño de API api/proyecto ................................................................................................... 68 Diseño de API api/Posicion/idproyecto= {id} ...................................................................... 69 Diseño de API api/Usuario .................................................................................................... 70 Diseño de API POST api/Usuario ......................................................................................... 71 Diseño de API api/Usuario/Rol ............................................................................................. 72 Diseño de API api/cliente ...................................................................................................... 74 Conclusiones ................................................................................................................................. 75 Recomendaciones ......................................................................................................................... 76 Referencias .................................................................................................................................... 77 Anexos .......................................................................................................................................... 82 Configuración de la aplicación Skill Matching Engine ............................................................ 83 Swagger de APIs de la aplicación ............................................................................................. 86 Redoc de APIs de la aplicación ................................................................................................. 87 Manual de usuario de aplicación Skill Matching Engine ............................................................. 88 Entregables en repositorio de empresa .................................................................................... 102 Carta de constancia de aceptación de empresa de proyecto .................................................... 103 9 Lista de abreviaturas y símbolos IA: Inteligencia Artificial ML: Machine Learning RQ: Requerimientos BD: Base de Datos RRHH: Recursos humanos 10 Introducción En la actualidad muchas empresas cuando realizan el proceso de reclutamiento para un puesto o plaza ofertada almacenan en hojas de Excel la información del currículo vital (CV) de los candidatos donde van comparando las habilidades que ellos tienen y el nivel en el que se consideran que la tienen desarrollada contra la que se necesita para el puesto y dependiendo de ello permiten al candidato realizar diversas pruebas como la psicología, la de conocimiento, entrevistas con los expertos entre otras. Cuando el área de potencial o recursos humanos seleccionan al candidato que creen es el más adecuado para la plaza, desechan la información o guardan dicho Excel, pero posteriormente no recuerdan donde lo guardan. Con el auge de muchas tecnologías, muchas empresas van cambiando su manera de selección de personal e incluso la manera de generar las pruebas para tener al personal más capacitado en las plazas o puestos que lo necesitan. A continuación, se presenta una propuesta para diseñar y desarrollar un prototipo de aplicación de reclutamiento de talento humano con asistencia de Inteligencia Artificial (IA) específicamente la rama de Machine Learning (ML) que permitirá seleccionar al candidato adecuado para cubrir el puesto o plaza postulada, además de permitir almacenar a los candidatos que no son seleccionados para ser evaluados posteriormente para plazas o puestos que la empresa necesiten y así ahorrar en el proceso de reclutamiento dado que ya se podrá seleccionar uno del historial o bien si es necesario realizar el proceso almacenar más candidatos para futuras plazas ir disminuyendo el proceso y darle así una ventaja competitiva en el mundo laboral. 11 Formulación General del Proyecto Relevancia social El auge del uso de las tecnologías de información para la automatización de procesos de negocio cada vez es mayor, no solo como tendencia, sino como una necesidad en el ámbito empresarial dado que la evolución que representa está ligada a la mejora continua que permite generar mayor éxito y rentabilidad en las empresas, proporcionando beneficios tales como: optimización de tiempo, de costos, de recursos, etc. En El Salvador, la transformación digital ha iniciado a aplicarse de en medianas y grandes empresas, sin embargo, aun representa un reto debido a los recursos necesarios y los altos costos que implican. Es por ello que este proyecto representa un insumo a la comunidad con el cual se pueda tomar como referencia el diseño y estrategia para la adopción de Tecnologías de la Información en procesos de negocio, tales como la implementación de algoritmos a través de la Inteligencia Artificial para buscar el incremento de optimización y eficacia de los procesos, tales como la gestión, clasificación y selección acertada de candidatos en procesos de contratación de talento humano. 12 Objetivos del proyecto Objetivo general Desarrollar prototipo de aplicación para gestionar y optimizar la selección de la contratación del personal de informática como herramienta para el personal encargado de reclutamiento de la consultora de software, haciendo uso de Inteligencia Artificial a través de Machine Learning para incorporar algoritmos de clasificación y predicción que procesen los metadatos de los candidatos. Objetivos específicos • Analizar los requerimientos para el desarrollo de prototipo de aplicación de reclutamiento de talento humano. • Elaborar lista de requerimientos no funcionales necesarios para la realización del proyecto • Seleccionar tecnologías para la realización del proyecto. • Realizar diagramas de arquitectura del prototipo de aplicación de reclutamiento de talento humano. • Ajustar procesos para la selección de candidatos al prototipo de aplicación. • Crear un prototipo funcional de un sistema de reclutamiento de talento humano limitado a los siguientes módulos: Perfil básico de candidatos, Perfiles y habilidades para contratación de personal. 13 Descripción de productos o procesos de innovación Incorporar IA a procesos de flujo de trabajo, genera un gran impacto dentro de las empresas, la selección de candidatos en procesos de contratación no es la excepción como parte de la gestión del talento humano en la empresa, a continuación, algunos puntos claves de innovación en los procesos: Mayor productividad: Automatizar procesos de trabajo es esencial para aumentar la productividad en la empresa, en procesos de selección, utilizar algoritmos de selección y clasificación genera un amento en productividad debido a la reducción en los tiempos, dado que, en base a los metadatos, se puede acelerar los procesos de selección y encontrar los candidatos más adecuados. Aumenta la eficiencia: Los resultados no necesariamente pueden algoritmos también se aumenta la eficiencia, dado que ya no se depende de un análisis humano del cual requiera de personal altamente capacitado y con experiencia para obtener buenos resultados, aun así, al ser una acción humana los resultados no necesariamente puede ser acertados en su totalidad al tener que procesar grandes cantidades de información para diferentes procesos de selección, mientras que con ML los algoritmos de selección pueden entrenarse hasta lograr los resultados esperados en diferentes escenarios. Transformación digital del departamento de Talento Humano: La IA se convierte en una pieza integral en los procesos permitiendo obtener agilidad y eficiencia basado en el procesamiento de datos y la eliminación de tareas manuales y repetitivas. Mejora Continua: Al procesar y analizar datos también se puede obtener información valiosa, tales como tendencias en posiciones de trabajo, habilidades más demandadas, etc. 14 Fundamentación Teórica Información general de la empresa El proyecto se realizará para la empresa de desarrollo de software CODE PROJECTS S.A. de C.V., (Novatech), ubicada en Edificio Insigne, Av. Las Magnolias, Nivel 11 Oficina 11-09, San Salvador La misión de la empresa es ayudar a las empresas a adquirir y mantener una ventaja competitiva a través de la tecnología. Y su visión es convertirse en un líder en el sector de la transformación digital en América Latina. Actualmente la empresa tiene una metodología de contratación que consiste en que el personal de reclutamiento de la unidad de talento humano y los entrevistadores técnicos registren en un archivo de Microsoft Excel con un formato predefinido el cual contiene un listado de habilidades esperadas por el cliente para un proyecto y en una hoja del documento Excel aparte la información de las habilidades genéricas del candidato. Por lo cual la empresa proyecta innovar implementando una aplicación que facilite el registro de habilidades y la selección más eficiente de los candidatos para proporcionar esta información a los clientes que necesitan personal para sus proyectos. Organigrama de la empresa 15 Reclutamiento de talento humano para desarrollo de proyectos y dotación de personal ¿Qué es talento humano? El término talento humano hace referencia a la administración del área de recursos humanos, donde se gestiona y desarrollan las capacidades, conocimientos y destrezas de las personas dentro de una organización. Cuando hablamos de talento, nos referimos a la capacidad especial o facilidad de una persona para aprender o ejecutar una determinada tarea. En consecuencia, aunque muchas veces usemos la palabra “habilidad” como talento, no son sinónimos pese a estar estrechamente relacionados. ¿Para qué se necesita talento humano en los proyectos informáticos? Un proyecto informático, como el desarrollo de software, por ejemplo, es un conjunto de actividades y acciones coordinadas que movilizan recursos dentro de un intervalo de tiempo específico, con un comienzo y un final, para satisfacer una necesidad claramente identificada. Para dirigir un proyecto informático, el director del proyecto se apoya en datos cualitativos y cuantitativos, para satisfacer las expectativas de diversos niveles como costes, plazos y calidad. También en la realización de cualquier proyecto informático, participan diferentes actores como contratante, contratista, director de proyecto y equipo de trabajo. Dependiendo de la naturaleza, tipo y requerimientos específicos del proyecto informático a realizar será la necesitad de talento humano que conformará el equipo de trabajo de dicho proyecto. Es decir, para cubrir cada rol del equipo de trabajo que realizara en un proyecto es necesario personal con un conjunto de habilidades específicas. 16 Para una empresa dedicada al desarrollo de proyectos informáticos existen dos formas en las que se administra el talento humano, en la primera el personal responde contractual y administrativamente a la empresa consultora, y en la segunda es como dotación de personal externo con los clientes, lo cual significa que el personal formara parte del equipo de trabajo del cliente, aunque contractualmente responde a la consultora, las funciones específicas de dicho personal son administradas por el cliente. Para ambas formas se necesita seleccionar con mucho cuidado el personal con el mejor conjunto de habilidades que cubran las necesidades del proyecto. ¿Qué es la dotación de personal (Staffing)? La dotación de personal es el proceso de contratación, capacitación y despliegue de empleados para diversos roles dentro de una empresa u organización. La dotación de personal interna significa que el proceso de contratación se lleva a cabo dentro de la empresa, es decir buscar el personal con las habilidades adecuadas dentro de la compañía para cubrir ciertos puestos de trabajo. La dotación de personal externa o también conocido como talento como servicio ha ido desarrollando cada vez más como parte de los servicios que prestan empresas dedicadas al reclutamiento y selección de personal. Esta modalidad aporta valor a las empresas, a través de talento especializado en stacks tecnológicos diversos que se van adaptando a las necesidades de los clientes. En palabras simples, la dotación de personal externa es un servicio completo de selección y contratación de personal en el área de la tecnología, que tiene como finalidad ubicar los mejores candidatos, atraerlos y contratarlos para que se conviertan en un recurso interno que, a su vez, es 17 tercerizado contractualmente. Este modelo es particularmente útil para los proyectos de tecnologías de la información. ¿Qué es un proceso de reclutamiento de talento humano? Las personas son el activo más importante de las compañías, ya que su trabajo es decisivo para lograr el éxito. Programas de talento, atracción, reclutamiento, generalmente estos conceptos suelen formar parte de los planes estratégicos de las organizaciones, liderados por los departamentos de recursos humanos, entre otros. El proceso de reclutamiento de talento humano se inicia cuando surge un nuevo puesto que se necesita cubrir. El reclutamiento de personal engloba una serie de actividades pensadas y destinadas a encontrar candidatos que puedan encajar con los valores y necesidades de la empresa. Existen distintos tipos de reclutamiento en función de sus características: • Reclutamiento externo, si se busca el candidato ideal fuera de la plantilla de la empresa. • Reclutamiento interno, si se propone un cambio de funciones o jerarquía a una persona que ya forma parte de la plantilla de la empresa. El reclutamiento de talento humano pretende encontrar los candidatos y la selección de personal tiene como objetivo escoger al candidato ideal. Todas las etapas del proceso de reclutamiento y selección de personal son clave para la empresa, ya que es la vía para encontrar talento de calidad y poder cubrir las necesidades de la organización. 18 Por lo que es muy importante establecer un sistema de trabajo claro y que optimice, al máximo, los tiempos dedicados. Y es que cada día que se tarda en cubrir un puesto de trabajo puede significar un costo económico para la empresa. Algunos de los pasos generales del proceso de reclutamiento son los siguientes: • Identificación de las necesidades: se crea un perfil de las habilidades que se desea buscar. • Publicación de la vacante: se realizar un anuncio de la oferta del puesto de trabajo. • Selección de candidatos: Se establecen una serie de filtros para seleccionar a los candidatos. • Entrevistas: se realizan a nivel personal o por medio de videollamada. En ellas, se conocen las habilidades del candidato, sus cualidades, motivaciones, lenguaje corporal y experiencia en el área. • Pruebas: a través de una serie de pruebas se validan los conocimientos de cada candidato. • Toma de decisión: se informa a los candidatos si han sido seleccionados o no, después de evaluar los resultados de cada uno. • Contratación e incorporación: se firma contrato entre empleador y empleado. • Seguimiento: este se hace para observar la conducta del candidato y también para ofrecer cualquier información que requiera para cubrir su puesto. 19 Inteligencia artificial y Machine Learning para contratación de talento humano ¿Qué es la inteligencia artificial (IA)? La inteligencia artificial (IA) se ha convertido en un término general para referirse a aplicaciones que realizan tareas complejas para las que antes eran necesaria la intervención humana, como la comunicación en línea con los clientes o jugar al ajedrez. La inteligencia artificial (IA) es un campo en constante evolución con un potencial sorprendente que está transformando diversas industrias a nivel global. Desde la logística y la atención al cliente hasta la medicina y la educación, la IA se ha convertido en una herramienta clave para la automatización de tareas y la optimización de procesos. El término inteligencia artificial (IA) a menudo se usa indistintamente junto con los nombres de sus subcampos, el aprendizaje automático y el aprendizaje profundo. Sin embargo, hay ciertas diferencias. Por ejemplo, el Machine Learning se centra en la creación de sistemas que aprenden o mejoran su rendimiento en función de los datos que consumen. Es importante tener en cuenta que, aunque todo Machine Learning es IA, no toda la IA es Machine Learning. 20 ¿Qué tipos de inteligencia artificial existen? Existen diferentes tipos de inteligencia artificial y se clasifican de varias formas. Por ejemplo, según el nivel está la Inteligencia Artificial Estrecha (ANI), por funcionalidad están los sistemas reactivos y por capacidad encuentras las máquinas reactivas. También existen otros tipos de clasificaciones de acuerdo con expertos en Ciencias de Computación como Arend Hintze, Stuart Russell y Peter Norving. Los tipos de inteligencia artificial más comunes son: • Máquinas reactivas. Es el tipo más básico para ser máquinas automatizadas para dar respuestas a tareas específicas ante ciertos estímulos, y porque no tienen la habilidad de almacenar datos. Éstas no tienen la capacidad de formar recuerdos o usar experiencias pasadas para informar decisiones futuras. • Inteligencia Artificial Estrecha. También llamada IA débil. Se refiere a los sistemas diseñados para realizar una tarea específica y están limitados a ello. A diferencia de otros tipos, la ANI no puede aplicar el aprendizaje de una tarea a otra y carece de habilidades cognitivas generales. • Sistemas expertos. Estos sistemas trabajan en la solución de problemas en áreas específicas, tratando de igualar la toma de decisiones de personas expertas en una materia. Estos sistemas son capaces de tratar problemas complejos basándose en un conjunto específico de reglas y hechos. 21 • Memoria limitada. La memoria limitada tiene la capacidad de aprender de experiencias pasadas o datos históricos para informar sus acciones futuras. Cuenta con una escasa memoria a partir de la cual genera un historial de interacción. Dicho historial permite tomar decisiones puntuales para responder a una solicitud o realizar una acción. • Aprendizaje profundo. Conocido como deep learning, es un subconjunto del aprendizaje automático en el que las redes neuronales artificiales pueden modelar y comprender patrones complejos a través de un proceso de imitación del cerebro humano. • Aprendizaje automático. Más conocido como Machine Learning, es una rama de la inteligencia artificial que permite a las computadoras aprender de los datos, identificar patrones y tomar decisiones con mínima intervención humana. El aprendizaje profundo o Machine Learning es el tipo de inteligencia artificial en la que se enfocara este proyecto. Las máquinas basadas en Machine Learning mejoran su rendimiento de forma autónoma a medida que se les proporcionan más datos. Las organizaciones que incorporan el Machine Learning a las aplicaciones y a los procesos empresariales tradicionales mejoran en mayor medida la productividad de la empresa. ¿Qué es Machine Learning? Machine Learning es un subconjunto de la inteligencia artificial (IA). Se enfoca en enseñar a las computadoras para que aprendan de los datos y mejoren con la experiencia. 22 En el Machine Learning, los algoritmos se capacitan para encontrar patrones y correlaciones en data sets, para tomar las mejores decisiones y previsiones en base a ese análisis. Las aplicaciones de Machine Learning mejoran con el uso y se vuelven más precisas a medida que tienen acceso a más datos. La IA procesa datos para tomar decisiones y hacer proyecciones. Los algoritmos de Machine Learning permiten que la IA no solo procese esos datos, sino que los use para aprender y ser más inteligente, sin necesidad de programación adicional. El Machine Learning se compone de diferentes tipos de modelos de Machine Learning, y utiliza varias técnicas algorítmicas. Dependiendo de la naturaleza de los datos y el resultado deseado, se puede utilizar uno de los cuatro modelos de aprendizaje: supervisado, no supervisado, semi supervisado o de refuerzo. En cada modelo se pueden aplicar una o más técnicas algorítmicas, en relación con los data sets en uso y los resultados buscados. Los algoritmos de Machine Learning básicamente están diseñados para clasificar cosas, encontrar patrones, proyectar resultados, y tomar decisiones fundamentadas. Los algoritmos pueden utilizarse uno a la vez o combinarse para lograr la mayor precisión posible cuando se trata de datos complejos y más impredecibles. Principales Algoritmos de Machine Learning El ML tiene disponible diferentes algoritmos que se pueden aplicar de acuerdo con la necesidad y naturaleza del problema que se quiere dar solución, a continuación, los 7 algoritmos principales: 23 Regresión Lineal La regresión lineal (linear regression) es un algoritmo de aprendizaje supervisado que se utiliza para predecir y pronosticar valores dentro de un rango continuo, como cifras de ventas o precios. Procedente de la estadística, la regresión lineal desempeña una tarea de regresión (regression task), que asigna una pendiente constante utilizando un valor de entrada (X) con una variable de salida (Y) para predecir un valor numérico o una cantidad. La regresión lineal usa datos etiquetados para hacer predicciones estableciendo una línea de mejor ajuste (line of best fit), o “línea de regresión”, que se aproxima a partir de un diagrama de dispersión de puntos de datos. Como resultado, la regresión lineal se emplea para el modelado predictivo más que para la categorización. Regresión Logística La regresión logística (logistic regression), o “regresión logit”, es un algoritmo de aprendizaje supervisado utilizado para la clasificación binaria, como decidir si una imagen encaja en una clase u otra. Originaria de la estadística, la regresión logística predice técnicamente la probabilidad de que una entrada pueda clasificarse en una única clase primaria. En la práctica, sin embargo, puede emplearse para agrupar las salidas en una de dos categorías: “clase primaria” (“the primary class”) o “clase secundaria” (“not the primary class”). Esto se consigue creando un rango para la clasificación binaria, de forma que cualquier salida entre 0 y 0,49 se incluya en un grupo y cualquier salida entre 0,50 y 1,00 se incluya en otro. 24 Como resultado, la regresión logística en el aprendizaje automático se utiliza normalmente para la categorización binaria en lugar de para el modelado predictivo. Clasificador Bayesiano El clasificador bayesiano ingenuo o “Naive Bayes” es un conjunto de algoritmos de aprendizaje supervisado que se utilizan para crear modelos predictivos de categorización binaria o múltiple. Basado en el Teorema de Bayes, Naive Bayes opera con probabilidades condicionales, que son independientes entre sí, pero indican la probabilidad de una clasificación basada en sus factores combinados. Por ejemplo, un programa ingeniado para identificar plantas podría usar un algoritmo de Bayes ingenuo para clasificar imágenes en función de factores concretos, como el tamaño, el color y la apariencia percibida. Aunque cada uno de estos factores es independiente del otro, el algoritmo anotaría la probabilidad de que un objeto sea una planta concreta utilizando los factores combinados. Árbol de decisión Un árbol de decisión (decision tree) es un algoritmo de aprendizaje supervisado utilizado para la clasificación y el modelado predictivo. Semejante a un diagrama de flujo gráfico, un árbol de decisión comienza con un nodo raíz, que formula una pregunta concreta a los datos y luego los envía por una rama en función de la respuesta. Cada una de estas ramas conduce a un nodo interno, que a su vez formula otra pregunta a los datos antes de dirigirlos hacia otra rama en función de la respuesta. Esto continúa hasta que los datos llegan a un nodo final, también llamado nodo hoja, que no se ramifica más. 25 Los árboles de decisión son habituales en el aprendizaje automático porque pueden manejar conjuntos de datos complejos con relativa sencillez. Algoritmo de bosque aleatorio Un algoritmo de bosque aleatorio (random forest algorithm) utiliza un conjunto de árboles de decisión para la clasificación y el modelado predictivo. En un bosque aleatorio, muchos árboles de decisión (a veces cientos o incluso miles) se entrenan utilizando una muestra aleatoria del conjunto de entrenamiento (un método conocido como bagging). Después, los investigadores introducen los mismos datos en cada árbol de decisión del bosque aleatorio y cuentan sus resultados finales. Luego se selecciona el resultado más común como el más probable para el conjunto de datos. Aunque pueden llegar a ser complejos y requerir mucho tiempo, los bosques aleatorios corrigen el problema común del “sobreajuste” (overfitting) que puede producirse con los árboles de decisión. Se habla de sobreajuste cuando un algoritmo se ajusta demasiado a su conjunto de datos de entrenamiento, lo que puede repercutir negativamente en su precisión cuando se introduce posteriormente en nuevos datos. Algoritmo K-Nearest neighbor (KNN) Un algoritmo K-Nearest neighbor es un algoritmo de aprendizaje supervisado que se usa para la clasificación y el modelado predictivo. Fieles a su nombre, los algoritmos KNN clasifican una salida por su proximidad a otras salidas en un gráfico. Por ejemplo, si una salida está más cerca de un grupo de puntos azules en un gráfico que de un grupo de puntos rojos, se clasificaría como miembro del grupo azul. Este enfoque 26 significa que los algoritmos KNN pueden utilizarse tanto para clasificar resultados conocidos como para predecir el valor de resultados desconocidos. Algoritmo K means K means es un algoritmo no supervisado que se emplea para la clasificación y el modelado predictivo. Al igual que KNN, K means utiliza la proximidad de un resultado a un conglomerado de puntos de datos para identificarlo. Cada uno de los conglomerados está definido por un centroide, un punto central real o imaginario del conglomerado. K means es útil en grandes conjuntos de datos, especialmente para la agrupación, aunque puede fallar cuando maneja valores atípicos. Fases de Desarrollo Fase de entrenamiento En esta fase se debe utilizar una cantidad considerable de datos con los cuales se pueda entrenar el algoritmo, mientras más sea la cantidad y la calidad de los datos, mejor será la efectividad del algoritmo para crear patrones necesarios para realizar predicciones. Fase de prueba Durante esta fase, se evalúa la efectividad del algoritmo al momento de realizar predicciones sobre datos de los cuales ya sabemos cuál debe ser la predicción, en base a los resultados se puede realizar ajustes o incluso agregar más datos de entrenamiento de ser necesario para incrementar el nivel de efectividad en las predicciones. 27 ¿Cómo se relaciona el Machine Learning con la selección de talento humano? El Machine Learning puede facilitar el procesamiento de los distintos perfiles de los candidatos, junto con las características y habilidades específicas de cada uno, lo cual facilita seleccionar el postulante ideal. Usar Machine Learning para Recursos Humanos es ideal para acortar los tiempos de espera durante los procesamientos de información de los candidatos de una búsqueda en particular. Debido a que son muchas las compañías que tienen una amplia base de talentos y/o reciben una gran cantidad de currículum vitae, el Machine Learning en Recursos Humanos se presenta como una alternativa eficaz para efectuar estas tareas: • Descarte de candidatos que no se ajustan a los requerimientos especificados por el área de selección y gestión de talento humano de la empresa. • Comparativa entre distintos perfiles de candidatos que aplican a un mismo puesto de trabajo. • Eliminación de aplicaciones duplicadas para reducir el tiempo de revisión de un mismo candidato. • Realización de video entrevistas y uso de bots en instancias de preselección. Un bot es un programa informático que efectúa automáticamente tareas reiterativas mediante Internet a través de una cadena de comandos o funciones autónomas. • Pruebas psicométricas y de evaluación de conocimientos para un determinado puesto. Otra de las ventajas del Machine Learning en Recursos Humanos, desde la perspectiva de la selección de talento humano, se vincula con una reducción en los costos económicos. 28 Particularmente, se considera que la inteligencia artificial optimiza la contratación de capital humano, que debe coincidir desde una mirada formativa, académica y desde la experiencia. Dentro de este contexto, el trabajo de Machine Learning en Recursos Humanos se convierte en un aliado para las empresas porque permite automatizar respuestas. Esto, en función del progreso del postulante en las distintas fases de un determinado proceso de selección. Prototipo de software ¿Qué es un prototipo y para qué sirve? Un prototipo es un primer modelo que sirve como representación o simulación del producto final y que nos permite verificar el diseño y confirmar que cuenta con las características específicas planteadas. Gracias a los prototipos podemos confirmar que el producto cumple con lo que buscará el cliente final. ¿Qué es un prototipo de software? Un prototipo de software es una representación temprana de una aplicación o sistema de software, es considerado como un modelo de preproducción. Los prototipos se pueden utilizar para probar la viabilidad de una idea, medir el interés del cliente y confirmar el diseño de una interfaz. Los prototipos también se pueden usar para crear comentarios tempranos de los usuarios y evaluar cómo los usuarios interactuarán con el sistema propuesto. Los prototipos son una herramienta que permite la experimentación para evaluar posibles soluciones a problemas. Al igual que con cualquier proceso o herramienta nueva, es importante tomarse el tiempo para comprender cómo funciona para maximizar su potencial. El proyecto de este documento tiene como finalidad la creación de un prototipo de Software que demuestre la funcionalidad de una aplicación que tendrá como objetivo principal el registro 29 de la información de candidatos a posiciones de trabajo de proyectos informáticos y que utilizara Machine Learning para mejorar la selección del personal más calificada para cada posición. Tipos de prototipos También podemos clasificar los prototipos en tres diferentes tipos, que se utilizan según la finalidad y la disponibilidad de recursos en el momento. Son clasificados en: • Baja Fidelidad • Media Fidelidad • Alta Fidelidad Prototipo de Baja Fidelidad Los prototipos de fidelidad baja se utilizan en proyectos poco innovadores y que aportan detalles más superficiales. Como su nombre lo indica, su fidelidad o precisión en relación con el proyecto real es baja. Por tanto, no está indicado si se quiere probar la experiencia de usuario. Prototipo de Media Fidelidad Los prototipos de fidelidad media ya incluyen un nivel adicional, a menudo utilizando programas y software que aportan profundidad en relación con los prototipos de baja fidelidad. Prototipo de Alta Fidelidad Estos modelos de alta fidelidad son muy similares al producto o servicio final y, como su nombre lo indica, con una alta representación de lo real. Aportan mucha más información y comentarios que pueden y deben utilizarse para realizar las optimizaciones antes de lanzar el producto o servicio real, lo que reduce la posibilidad de errores. El prototipo que se ha desarrollado para este proyecto es un prototipo de Alta fidelidad. 30 Componentes generales para la Infraestructura en la nube ¿Qué es kubernetes? Google liberó el proyecto Kubernetes en el año 2014. Kubernetes se basa en la experiencia de Google corriendo aplicaciones en producción a gran escala. Kubernetes es una plataforma portable y extensible de código abierto para administrar cargas de trabajo y servicios. Kubernetes facilita la automatización y la configuración declarativa. Tiene un ecosistema grande y en rápido crecimiento. ¿Qué es Load Balancer o Balanceador de carga? Un load balancer o balanceador de carga permite repartir la carga de trabajo entre los diferentes servidores o aplicaciones y puede instalarse en una infraestructura tanto física como virtual. Los Load Balancer se instalan en infraestructuras dedicadas, físicas o virtuales, Estos adoptan la forma de un controlador de entrega de aplicaciones, permitiendo al usuario escalar la carga automáticamente en función de las previsiones de tráfico. El Load Balancer identifica en tiempo real qué servidores o aplicaciones son las más adecuadas para responder a una petición, garantizando un nivel de rendimiento estable en el cluster. ¿Qué es una virtual NetWork? Una red virtual es similar a una red tradicional con la que trabajaría en su propio centro de datos. Una instancia del servicio (una red virtual) permite que muchos tipos de recursos de Azure se comuniquen de forma segura entre sí, Internet y redes locales. Estos recursos de Azure incluyen máquinas virtuales (VM). 31 ¿Qué es un Contenedor de registros? Un registro de contenedores es un repositorio (o colección de repositorios) que se utiliza para almacenar y acceder a imágenes de contenedores. Los registros de contenedores pueden admitir el desarrollo de aplicaciones basadas en contenedores, a menudo como parte de los procesos DevOps. Los registros de contenedores pueden conectarse directamente a plataformas de organización en contenedores como Docker y Kubernetes. ¿Qué es un pipeline? Una Pipeline o canalización de DevOps es un conjunto de herramientas, prácticas y procesos automatizados que permiten a los desarrolladores y operadores colaborar e implementar código directamente en el entorno de producción. Estas permiten desplegar el código a la infraestructura requerida, automatizando el proceso de construcción, prueba y despliegue del código de las aplicaciones. ¿Qué es git? Git es un sistema de control de versiones distribuido, lo que significa que un clon local del proyecto es un repositorio de control de versiones completo. Estos repositorios locales plenamente funcionales permiten trabajar sin conexión o de forma remota con facilidad. Los desarrolladores confirman su trabajo localmente y, a continuación, sincronizan la copia del repositorio con la del servidor. 32 Metodología Tipos de investigación Los tipos de investigación a utilizar son: • La investigación operativa, la cual consiste analizar predecir resultados y tomar mejores decisiones con datos completos con el propósito de resolver un problema, en este caso se analizarán los datos de la información de perfiles, habilidades y puestos de trabajo para obtener a través de Machine Learning los mejores resultados. • La investigación documental, la cual consiste en revisar los documentos utilizados actualmente para realizar las entrevistas de candidatos para los puestos de trabajo. • La investigación de campo, la cual consiste en el proceso de recolección de datos nuevos utilizando fuentes primarias, para un objetivo específico. Para esta aplicación se observará como se realizan las entrevistas a los candidatos actualmente en la empresa para obtener datos sobre el proceso. Alcance y cobertura El alcance de este proyecto será el proceso básico del funcionamiento de un prototipo del proyecto, que muestre las funcionalidades básicas de la creación de candidatos, los puestos de trabajo, la asignación de habilidades, la selección del candidato y la alimentación de la información al módulo de Machine Learning, así como la muestra de los pronósticos que realice el Machine Learning. La cobertura del proyecto será la unidad de reclutamiento de la empresa CODE PROJECTS S.A. de C.V., (Novatech). 33 Propuesta de solución Diseño de la solución La propuesta de solución consistirá en una aplicación que permitirá a la unidad de gestión de talento humano de la empresa gestionar la contratación del personal y también optimizará la selección de los mejores candidatos con el apoyo de la tecnología de Machine Learning. En este documento se presentará un prototipo de la aplicación de gestión de contrataciones que permita mostrar las funcionalidades esperadas. En la figura 1 podemos apreciar a nivel conceptual cómo funciona la solución. En esta propuesta se observan diferentes componentes que conforman todo el proceso de contratación de talento humano, entre ellos tenemos los siguientes: 34 a. Proyecto de trabajo. Esta entidad tiene un listado de posiciones de trabajo que se necesita cubrir, para esto se necesita encontrar el mejor candidato para cubrir cada posición b. Posición de trabajo. Es la posición o rol que se quiere cubrir dentro del proyecto la cual tiene requiere un conjunto de habilidades blandas y técnicas que se deben cumplir a la mayor proximidad posible. c. Procedimiento de reclutamiento. Es una serie de pasos que se realizan para analizar y avaluar la capacidad del candidato de cubrir una posición de trabajo d. Candidato. Es la persona que proporciona sus datos generales e información de habilidades para ser evaluadas dentro del proceso de Reclutamiento. e. Reclutador. Es el personal encargado de la interacción y recolección de información del candidato dentro del proceso de reclutamiento para elaborar la propuesta al cliente o filtrar los candidatos menos adecuados. f. Evaluador técnico. Es el personal encargado de realizar la entrevista o pruebas técnicas al candidato para medir sus habilidades. g. Cliente. Es la persona que necesita suplir la posición de trabajo, esta provee los requerimientos de la posición de trabajo y realiza la selección del candidato según las propuestas realizadas por el reclutador. h. Perfil de candidato. Es un conjunto de datos generales y de habilidades del candidato que permiten la evaluación de este. i. Prototipo de aplicación. Este es la aplicación que permitirá el registro y visualización de la información de los proyectos, posiciones de trabajo, perfiles de candidato y selección de candidatos. 35 j. Módulo de Machine Learning. Este módulo es el que a través de la información proporcionada por la aplicación utilizará un modelo de Machine Learning para aprender las mejores opciones de candidatos y sugerir los mejores candidatos para las posiciones de trabajo. k. Infraestructura de la aplicación. Es la infraestructura conformada por Bases de datos, Almacenaje de archivos y servidores que se utilizaran para correr la aplicación y el módulo de Machine Learning. 36 Arquitectura de la solución 37 Diseño de Pantallas Estándar general de flujo de pantallas 38 Candidatos Muestra los registros referentes a la lista de registros para los candidatos almacenados en la base de datos, permitiendo identificar datos personales y datos del perfil profesional. Formulario de candidatos Muestra el formulario con campos de registro para ingresar al sistema los datos de un nuevo candidato. 39 Formulario de candidatos con mensajes de validación Muestra los mensajes de validación cuando se intente almacenar datos inválidos o campos vacíos. Requerimientos de Prototipo de la solución La propuesta de solución tiene varios requerimientos que debe cumplir para satisfacer las necesidades del cliente, pero solo se señalaran los que necesarios para el prototipo. Los requerimientos se dividirán en dos grupos principales que son: a. Requerimientos no funcionales. Estos son requerimientos técnicos para el funcionamiento de la aplicación. b. Requerimientos funcionales. Estos son requerimientos enfocados a los objetivos del negocio de la aplicación. Requerimientos no funcionales. Los requerimientos no funcionales cubrirán las tecnologías y plataformas a utilizar para la propuesta de solución. 40 Id Requerimientos no funcionales NF1 Los servicios del proyecto serán generados utilizando la tecnología .net NF2 El código se guardará en el repositorio del cliente en Azure DevOps repositories. NF3 El despliegue de los proyectos se realizará a través de Azure DevOps pipelines. NF4 Los servicios administrativos deben autentificarse con JWT. NF5 La contraseña de usuario debe tener entre 8 y 24 caracteres NF6 La respuesta de los servicios web será en formato Json NF7 El código del frontend será desarrollado con el lenguaje de programación Angular Requerimientos funcionales Id Requerimientos funcionales de prototipo RF1 Consultar perfil de usuario con estado y permisos RF2 Entrar con credenciales a la aplicación (Login) RF3 Consultar clientes RF4 Listar candidatos RF5 Consultar listado de candidatos por posiciones de trabajo RF6 Consultar listado de candidatos por habilidad RF7 Listar habilidades RF8 Consultar perfil de posiciones de trabajo RF9 Consultar recomendaciones de candidatos por posiciones de trabajo RF10 Seleccionar o rechazar candidatos para posiciones de trabajo 41 RF11 Listar de proyectos de trabajo RF12 Consultar posiciones de trabajo dentro de un proyecto Id Requerimiento de gestión de Machine Learning RM1 Crear modelo de selección de candidatos RM2 Utilizar Machine Learning para entrenar selección de candidatos RM3 Realizar sugerencias de candidatos para posiciones de trabajo RM4 Registrar información de sugerencias de candidatos RM5 Consultar listado de candidatos con mayor recomendación según la inteligencia artificial utilizada Tecnologías para utilizar en propuesta de la solución Id Herramienta Version Tipo Descripción 1 C# .net C# 11.0, .Net 8.0 Lenguaje de programación Es un lenguaje de programación que se utilizará para el desarrollo de los microservicios que forma parte de su plataforma .NET 2 React 18.2.0 Lenguaje de programación React un lenguaje de programación para Frontend basado en una librería Javascript diseñada para crear interfaces de usuario. 42 3 Visual Studio Community 2022 Entorno de desarrollo integrado (IDE) Es una plataforma que permite editar, depurar y compilar código y publicar una aplicación. 4 Visual Studio Code 1.84.2 Entorno de desarrollo integrado (IDE) Es una herramienta con una gran cantidad de plugins que facilitan el desarrollo de aplicaciones de distintos lenguajes de programación. 5 Microsoft SQL Server Community 2022 Gestor de base de datos Microsoft SQL Server es un sistema de gestión de base de datos relacional, desarrollado por la empresa Microsoft. 6 SQL Server Management Studio 19.1 Herramienta de consulta de base de datos Microsoft SQL Server Management Studio es una aplicación utilizada para la gestión y administración de los componentes dentro de SQL Server. 7 Postman 10.18 Herramienta para desarrollo de APIs Postman es una plataforma que permite y hace más sencilla la creación y el uso de APIs. 8 JWT RFC 7519 Herramienta de autentificación JSON Web Token es un estándar abierto basado en JSON propuesto por IETF para la creación de tokens de acceso 43 9 Azure DevOps Azure DevOps Server 2022 Servicio en la nube para desarrollo de software Azure DevOps es un conjunto de herramientas y servicios que ayudan en la administración del ciclo de vida de proyectos de desarrollo 10 Docker 24.0.6 Herramienta de contenedores Docker es la tecnología que permite crear y usar contenedores 11 Kubernetes 1.25 Herramienta de orquestación Kubernetes es una plataforma para la automatización del despliegue, ajuste de escala y manejo de aplicaciones en contenedores 12 ML.NET 2 Herramienta de Machine Learning ML.NET es una biblioteca de aprendizaje automático de software gratuito para los lenguajes de programación C# 13 Microsoft Edge 119 Navegador Es un navegador web desarrollado por Microsoft, basado en Chromium de Google. 14 Google Chrome 119 Navegador Es un navegador web de código cerrado desarrollado por Google 15 Draw.io 22.0.3 Herramienta de diseño Esta es una herramienta para la creación de diagramas de distintos tipos 44 16 Office 365 16.0.13901. 20462 Herramienta de ofimatica Microsoft 365 es una línea de servicios por suscripción ofrecidos por Microsoft. Contiene las aplicaciones de productividad más recientes, como Microsoft Teams, Word, Excel, PowerPoint, Outlook, OneDrive, entre otras 45 Roles del prototipo de la aplicación I d Rol Descripción 1 Administrador Acceso total a las funcionalidades de la aplicación 2 Reclutador Acceso a la gestión de candidatos y posiciones de trabajo 3 Mantenimiento Acceso a la gestión de habilidades y proyectos de trabajo 4 Observador Acceso a revisión de consultas de candidatos, proyectos, posiciones de trabajo y habilidades 5 Autorizador Revisión y autorización de candidatos para proyectos 6 Seguridad Acceso a la gestión de usuarios 7 Pronóstico Acceso a consulta de pronósticos de candidatos para proyectos 8 Candidato Acceso a actualizar la información de habilidades de su propio perfil de candidato 46 Diagrama de casos de uso UML 47 Selección de Algoritmo de Machine Learning El algoritmo seleccionado de ML es el de Árbol de decisión, del cual se tiene dos tipos, de regresión y clasificación. Debido a al requerimiento del problema a dar solución, se ha determinado que el tipo de algoritmo ideal es el de clasificación. Dado que, como parte de los metadatos a utilizar, se tienen los atributos necesarios para clasificar si un candidato es el mejor para la posición basado en los diferentes valores registrados durante el proceso de reclutamiento, tales como el nivel técnico, resultado de evaluación técnica, años de experiencia, etc. Se selecciona un algoritmo de Árbol de Decisión debido a las siguientes razones: Fácil de interpretar: La lógica booleana y las representaciones visuales de los árboles de decisión los hacen más fáciles de entender y consumir. La naturaleza jerárquica de un árbol de decisión también facilita ver qué atributos son los más importantes, lo que no siempre es claro con otros algoritmos, como las Redes neuronales. Se requiere poca preparación de datos: Los árboles de decisión tienen una serie de características que los hacen más flexibles que otros clasificadores. Puede manejar varios tipos de datos, es decir, valores discretos o continuos, y los valores continuos se pueden convertir en valores categóricos mediante el uso de umbrales. Además, también puede manejar valores con valores omitidos, lo que puede ser problemático para otros clasificadores, como Naïve Bayes. 48 Mas flexible: Los árboles de decisión se pueden aprovechar para tareas de clasificación y regresión, lo que los hace más flexibles que otros algoritmos. También es insensible a las relaciones subyacentes entre los atributos; esto significa que, si dos variables están altamente correlacionadas, el algoritmo solo elegirá una de las características para realizar la división. 49 Diagrama de secuencia UML API: Servicio Web que proceso los requerimientos de la posición con modelo de Machine Learning DB: Base de datos que contiene la información de los candidatos. 50 Diseño de base de datos 51 Diccionario de datos Tablas de la base de datos Tabla Descripción AccessLog Contiene el Log de los accesos del usuario a la aplicación Autorizacion Contiene la relación entre los usuarios y roles Candidato Contiene la información general de candidato Cliente Contiene la información de los clientes Habilidad Contiene un listado de todas las habilidades Habilidadcan didato Contiene un listado de las habilidades que tiene el candidato HabilidadNi vel Contiene los tipos de seniority que puede tener una habilidad HabilidadPos icion Contiene el listado de habilidades solicitadas para la posición HabilidadTip o Contiene el listado de tipos de habilidades Log Contiene el log de cambios de registros en la aplicación MatrixPosici on Contiene la información de las habilidades que tiene el candidato con relación a las habilidades solicitadas de la posición Pais Contiene el listado de nombres de los países Posicion Contiene la información de las posiciones de trabajo buscadas por proyecto PosicionCate goria Contiene las categorías a las que pude pertenecer la posición PosicionEsta do Contiene el listado de los estados que puede tener la posición de trabajo Proyecto Contiene la información de los proyectos solicitados por clientes ProyectoAsi gnacion Contiene la asignación entre el proyecto y los reclutadores Reclutador Contiene la información general del personal de reclutamiento Reclutamient o Contiene la información de procedimiento de reclutamiento específico de una posición y un candidato Resultado Contiene los tipos de resultados de la selección o rechazo del candidato en un proceso de reclutamiento Rol Contiene los roles de la aplicación Usuario Contiene los usuarios de la aplicación 52 Campos de la base de datos Tabla Campo Tipo Descripción accesslog fecharegistro datetime Fecha de creación de registro accesslog id int (10) Id principal de tabla AcessLog accesslog idusuario int (10) Id principal de tabla de usuario autorizacion fecharegistro datetime Fecha de creación de registro autorizacion id int (10) Id principal de tabla de autorización autorizacion idrol int (10) Id principal de tabla rol autorizacion idusuario int (10) Id principal de tabla de usuario candidato apellidos varchar (100) Apellidos del candidato candidato celular varchar (25) Teléfono celular del candidato candidato correo varchar (100) Correo electrónico del cliente candidato fechanacimient o datetime Fecha de nacimiento de candidato candidato fecharegistro datetime Fecha de creación de registro candidato id int (10) Id principal de tabla Candidato candidato idpais int (10) Id principal de la tabla país 53 candidato linkedin varchar (200) Dirección web del perfil de linkedin del candidato candidato nombres varchar (100) Nombres del candidato candidato telefono varchar (25) Teléfono del candidato candidato titulo varchar (100) Título de posición del candidato cliente celular varchar (25) Teléfono celular del cliente cliente correo varchar (50) Correo electrónico del cliente cliente descripcion varchar (500) Descripción del cliente cliente direccion varchar (500) Dirección de oficinas cliente cliente fecharegistro datetime Fecha de creación de registro cliente id int (10) Id principal de tabla Cliente cliente idpais int (10) Id principal de la tabla país cliente nombre varchar (100) Nombre de cliente 54 cliente observacion varchar (500) Observación del cliente cliente telefono varchar (25) Teléfono de contacto del cliente cliente website varchar (300) Dirección web de la página institucional del cliente habilidad fecharegistro datetime NULL habilidad id numeric (-) Id principal de tabla Habilidad habilidad idhabilidadtipo int (10) Is principal de tabla HabilidadTipo habilidad nombre varchar (100) Nombre de la habilidad habilidadcandida to experiencia int (10) Tiempo en años de experiencia con esa habilidad habilidadcandida to fecharegistro datetime Fecha de creación de registro habilidadcandida to id int (10) Id principal de tabla HabilidadCandidato habilidadcandida to idcandidato int (10) Id principal de tabla Candidato habilidadcandida to idhabilidad numeric (-) Id principal de tabla Habilidad 55 habilidadcandida to idhabilidadnive l int (10) Id principal de tabla HabilidadNivel habilidadnivel fecharegistro datetime Fecha de creación de registro habilidadnivel id int (10) Id principal de tabla HabilidadNivel habilidadnivel nombre varchar (50) Nombre de nivel o seniority de la habilidad habilidadposicio n experiencia int (10) Tiempo de experiencia en años solicitada para la habilidad en esa posición habilidadposicio n fecharegistro datetime Fecha de creación de registro habilidadposicio n id int (10) Id principal de tabla HabilidadPosicion habilidadposicio n idhabilidad numeric (-) Id principal de tabla Habilidad habilidadposicio n idhabilidadnive l int (10) Id principal de tabla HabilidadNivel habilidadposicio n idposicion int (10) Id principal de tabla posición habilidadtipo fecharegistro datetime NULL habilidadtipo id int (10) Is principal de tabla HabilidadTipo habilidadtipo nombre varchar (50) Nombre del tipo de habilidad 56 log campos varchar (400) Campos modificados log fecharegistro datetime Fecha de creación de registro log id int (10) Id de tabla de log log idusuario int (10) Id principal de tabla de usuario log tabla varchar (25) Nombre de tabla matrixposicion experiencia int (10) Tiempo de experiencia en años con los cuales el candidato aplica para una habilidad en una posición matrixposicion fecharegistro datetime Fecha de creación de registro matrixposicion id int (10) Id principal de tabla MatrixPosicion matrixposicion idhabilidadnive l int (10) Id principal de tabla HabilidadNivel matrixposicion idhabilidadposi cion int (10) Id principal de tabla HabilidadPosicion matrixposicion idreclutamiento int (10) Id principal de tabla Reclutamiento matrixposicion observacion varchar (300) Observación de la habilidad para la posición matrixposicion tiene bit Indica si el candidato la tiene habilidad solicitada pais id int (10) Id principal de la tabla país pais nombre varchar (100) Nombre del país 57 posicion descripcion varchar (500) Descripción de la posición posicion fechafin datetime Fecha de fin de búsqueda de posición posicion fechainicio datetime Fecha de inicio de búsqueda de posición posicion fecharegistro datetime Fecha de creación de registro posicion id int (10) Id principal de tabla posición posicion idposicioncateg oria int (10) Id principal de tabla PosicionCategoria posicion idposicionestad o int (10) Id principal de tabla PosicionEstado posicion idproyecto int (10) Id principal de tabla proyecto posicion nombre varchar (200) Nombre de la posición posicion observacion varchar (500) Observación del proyecto posicion plazas int (10) Número de plazas en búsqueda posicioncategori a fecharegistro datetime Fecha de creación de registro posicioncategori a id int (10) Id principal de tabla PosicionCategoria posicioncategori a nombre varchar (50) Nombre de la categoría de la posición 58 posicionestado fecharegistro datetime Fecha de creación de registro posicionestado id int (10) Id principal de tabla PosicionEstado posicionestado nombre varchar (50) Nombre de estado de la posición proyecto descripcion varchar (500) Descripción del proyecto proyecto fechafin datetime Fecha del fin del proyecto proyecto fechainicio datetime Fecha de inicio del proyecto proyecto fecharegistro datetime Fecha de creación de registro proyecto id int (10) Id principal de tabla proyecto proyecto idcliente int (10) Id principal de tabla Cliente proyecto nombre varchar (200) Nombre del proyecto a realizar proyecto observacion varchar (500) Contiene la información de las observaciones del proyecto proyectoasignaci on fecharegistro datetime Fecha de creación de registro proyectoasignaci on id int (10) Id principal de tabla ProyectoAsignacion proyectoasignaci on idproyecto int (10) Id principal de tabla proyecto 59 proyectoasignaci on idreclutador int (10) Id principal de tabla reclutador reclutador codigoreclutad or varchar (25) Código identificador de reclutador reclutador fechanacimient o datetime Fecha de nacimiento de reclutador reclutador fecharegistro datetime Fecha de creación de registro reclutador id int (10) Id principal de tabla reclutador reclutador idusuario int (10) Id principal de tabla de usuario reclutador nombres varchar (100) Nombre de reclutador reclutador spellidos varchar (100) Apellidos de reclutador reclutamiento conclusion varchar (500) Conclusión u observaciones del resultado de proceso de reclutamiento reclutamiento fecha_de_creac ion_de_registro _ datetime Fecha de creación de registro reclutamiento fechafin datetime Fecha de fin de reclutamiento reclutamiento fechainicio datetime Fecha de inicio de reclutamiento reclutamiento id int (10) Id principal de tabla Reclutamiento reclutamiento idcandidato int (10) Id principal de tabla Candidato 60 reclutamiento idposicion int (10) Id principal de tabla posición reclutamiento idreclutador int (10) Id principal de tabla reclutador reclutamiento idresultado int (10) Id principal de tabla resultado reclutamiento observacion varchar (300) Observación de reclutamiento reclutamiento ponderacion varchar (25) Ponderación de porcentaje del candidato para la posición reclutamiento seniority varchar (25) Seniority del candidato para la posición reclutamiento experiencia int (10) Experiencia en años del candidato para la posición resultado id int (10) Id principal de tabla resultado resultado nombre varchar (50) Nombre del tipo de resultado rol fecharegistro datetime Fecha de creación de registro rol id int (10) Id principal de tabla rol rol nombre varchar (50) Nombre de Rol usuario activo bit Indica estado activo o inactivo del usuario usuario correo varchar (100) Correo electrónico de usuario 61 usuario fechaactualizac ion datetime Fecha de última actualización de registro usuario fecharegistro datetime Fecha de creación de registro usuario hash varchar (100) Hash para el Password del usuario usuario id int (10) Id principal de tabla de usuario usuario nombre varchar (50) Nombre de usuario usuario observacion varchar (300) Observación de usuario usuario password varchar (25) Password de usuario 62 Diseño de APIs para prototipo de software Listado general de APIs para prototipo de software API Método HTTP Descripción de funcionalidad api/login POST Mandar credenciales de usuario para login api/Login/Verify GET Verificar token de usuario api/usuario GET Obtener listado de usuarios api/usuario POST Crear usuario api/ usuario/{id} GET Obtener data de usuario específico api/rol POST Listado de roles de usuario api/candidato GET Obtener listado de candidatos api/candidato POST Crear candidato api/candidato/{id} GET Obtener data de candidato específico api/Reclutamiento/{i dposicion} GET Listado de candidatos por posición api/habilidad GET Obtener listado de habilidades api/habilidad POST Crear habilidad api/habilidad/{id} GET Obtener datos de habilidad específica api/posicion GET Obtener lista de puestos de trabajo api/posicion/{id} GET Obtener datos de puesto de trabajo específico api/cliente GET Obtener listado de clientes api/cliente/{id} GET Obtener datos de un cliente específico api/proyecto GET Obtener listado de proyectos api/proyecto/{id} GET Obtener datos de proyecto de trabajo específico api/proyecto- posicion/{id} GET Obtener listado de puestos en proyecto de trabajo api/Reclutamiento/A nalisis/{idPosicion} GET Obtener sugerencias de un puesto de trabajo en un proyecto específico a través de Machine Learning 63 Diseño de API /api/Login Propiedad Descripción Método username password GET string nullable: true Password de usuario Dato Permite realizar el Login de usuario Esquema { "username": "string", "password": "string" } Campos string nullable: true Nombre de usuario 64 Diseño de API api/habilidad 65 Diseño de API POST api/habilidad 66 Diseño de API api/candidato 67 Diseño de API POST api/candidato 68 Diseño de API api/proyecto Propiedad Descripción Método observacion string nullable: true Contiene la informacion de las observaciones del proyecto fechafin string($date-time) nullable: true Fecha del fin del proyecto descripcion string nullable: true Descripcion del proyecto nombre string nullable: true Nombre del proyecto a realizar fechainicio string($date-time) nullable: true Fecha de inicio del proyecto idcliente integer($int32) nullable: true Id principal de tabla Cliente fecharegistro string($date-time) nullable: true Fecha de creacion de registro Dato Lista la informacion general de los proyectos solicitados por cliente GET Esquema [ { "id": number, "idcliente": number, "fecharegistro": "Date", "nombre": "string", "fechainicio": "Date", "fechafin": "Date", "descripcion": "string", "observacion": "string" } ] Campos id integer($int32) Id principal de tabla proyecto 69 Diseño de API api/Posicion/idproyecto= {id} 70 Diseño de API api/Usuario 71 Diseño de API POST api/Usuario 72 Diseño de API api/Usuario/Rol 73 Diseño de API api/Reclutamiento/idposicion={idposicion} 74 Diseño de API api/cliente Propiedad Descripción Método observacion string nullable: true Contiene la informacion de las observaciones del proyecto fechafin string($date-time) nullable: true Fecha del fin del proyecto descripcion string nullable: true Descripcion del proyecto nombre string nullable: true Nombre del proyecto a realizar fechainicio string($date-time) nullable: true Fecha de inicio del proyecto idcliente integer($int32) nullable: true Id principal de tabla Cliente fecharegistro string($date-time) nullable: true Fecha de creacion de registro Dato Lista la informacion general de los proyectos solicitados por cliente GET Esquema [ { "id": number, "idcliente": number, "fecharegistro": "Date", "nombre": "string", "fechainicio": "Date", "fechafin": "Date", "descripcion": "string", "observacion": "string" } ] Campos id integer($int32) Id principal de tabla proyecto 75 Conclusiones El proceso de reclutamiento de talento humano puede ser complejo dependiendo de las funcionalidades que la empresa necesite, para este caso, la creación de un prototipo de la solución permite a la gerencia visualizar como sería el funcionamiento de la solución y desarrollar una aplicación más compleja en base a dicho prototipo. El análisis de la solución es muy importante para definir correctamente los requerimientos funcionales del proyecto, por esto se debe considerar los distintos tipos de investigación para obtener la información clara de los conceptos y objetivos que se desean alcanzar. Para este prototipo se realizó una investigación de las necesidades de la empresa, y también se hizo una investigación de los conceptos y temas relacionados al reclutamiento de talento humano y Machine Learning como herramienta de inteligencia artificial, esto permitió crear un mejor prototipo para demostrar la funcionalidad de la aplicación. La descripción de la solución a nivel general o conceptual es muy importante para comunicar efectivamente cual es el objetivo o funcionalidad con la que quiere llegar en la aplicación, para que dicha información sea de fácil acceso para el personal con menos conocimiento en tecnologías de información, así también los elementos más técnicos como tipos de lenguajes de programación, bases de datos, diseño de APIs y todo tipo de herramienta informática, también deben quedar claramente descritos para permitir al personal de desarrollo comprender como está conformada la solución y poder adaptar o ampliar su funcionamiento más allá del prototipo presentado en este documento de así requerirlo. 76 Recomendaciones Los requerimientos funcionales son la base del diseño de la solución que se quiere desarrollar, en el caso del proceso de reclutamiento cada requerimiento funcional dio origen a los elementos de base de datos, modos de interacción con la aplicación y roles de la solución, es por ello que la recolección e investigación de estos es vital para crear una aplicación que cumpla con los objetivos de negocio que la gerencia quiere cumplir. Por eso es muy recomendable revisar y expender los requerimientos para adaptar y ampliar el prototipo a una solución más compleja. Los requerimientos no funcionales dan origen a todos los elementos informáticos técnicos para crear la solución es por ello que se deben evaluar las tecnologías y métodos a utilizar para facilitar el desarrollo de la solución y permitir una ejecución de dicha aplicación. Es muy importante tener en cuenta la arquitectura de la solución ya que es importante tener claro los requerimientos técnicos que permitirán la ejecución de la aplicación en un ambiente de desarrollo o producción. Para esta solución se recomienda un equipo con los conocimientos en las tecnologías utilizadas en este prototipo para adaptar y ampliar sus funcionalidades, las tecnologías y herramientas utilizadas que están listadas en este documento y otras especificaciones técnicas a considerar. 77 Referencias Adrián, D. R. H. (2022, 22 agosto). Proyectos informáticos - ¿Qué es? tipos y ejemplos. Diseño Web akus.net. https://disenowebakus.net/control-y-desarrollo-de-proyectos.php Aguirre, M. F. (2020, 18 diciembre). Gestión de proyectos informáticos: ejemplos y consejos prácticos. appvizer.es. https://www.appvizer.es/revista/organizacion-planificacion/gestion- proyectos/gestion-de-proyectos-informaticos-ejemplo Asudbring. (2023, 4 septiembre). ¿Qué es Azure Virtual Network? Microsoft Learn. https://learn.microsoft.com/es-es/azure/virtual-network/virtual-networks-overview Cera, C. (2021, 16 abril). Talento humano reclutamiento: qué es y cómo conseguirlo. appvizer.es. https://www.appvizer.es/revista/recursos-humanos/reclutamiento/talento-humano- reclutamiento Das, S. (2023, 18 enero). What is a DevOps pipeline? How to build one BrowserStack. BrowserStack. https://www.browserstack.com/guide/pipeline-devops Empresarial, M. C. (2023, 12 enero). Servicios de dotación de personal en El Salvador (Staffing) - Mercadeo corporativo empresarial. Mercadeo Corporativo Empresarial - El Salvador. https://mercadeocorporativoempresarial.com/servicios-de-dotacion-de-personal-en-el- salvador-staffing/ 78 _ESIC Business & Marketing School. (s. f.). ¿Qué es el reclutamiento de recursos Humanos? ESIC. https://www.esic.edu/rethink/management/que-es-el-reclutamiento-de- recursos-humanos Euroinnova Business School. (2023, 28 diciembre). Recruiter Digital. https://www.euroinnova.sv/blog/que-es-el-proceso-de-reclutamiento Fantino, J. (2023, 26 abril). Machine learning en recursos humanos: ¿cómo convertir la tecnología en tu aliada? https://www.crehana.com. https://www.crehana.com/blog/transformacion- cultural/machine-learning-recursos-humanos/ FasterCapital. (2023, 17 diciembre). Prototipo de software. https://fastercapital.com/es/contenido/Prototipo-de-software.html#Que-es-un- prototipo-de-software Ingenieria. (2023, 24 febrero). ¿Qué es un prototipo y para qué sirve? Prototipo 0. https://prototip0.com/diseno-de-prototipos/ Jiménez, E. A. C. (2017). Talento humano: una contribución a la competitividad organizacional. https://www.redalyc.org/journal/5718/571864086001/html/#:~:text=Actualment e%2C%20se%20hace%20referencia%20al,personas%20dentro%20de%20una%20organizaci%C 3%B3n. 79 Load balancer con kubernetes. (s. f.). OVHcloud. https://www.ovhcloud.com/es/public- cloud/kubernetes/kubernetes-load-balancer/ Mijacobs. (2023, 5 octubre). ¿Qué es Git? - Azure DevOps. Microsoft Learn. https://learn.microsoft.com/es-es/devops/develop/git/what-is-git Padilla, D. (2022, 12 diciembre). Etapas del proceso de reclutamiento y selección de personal. Kenjo. https://blog.kenjo.io/es/cuales-son-las-etapas-en-el-proceso-de-reclutamiento-y- seleccion-de-personal Platziteam. (2023, 14 septiembre). Tipos de inteligencia artificial: explora sus variantes y usos. Platzi. https://platzi.com/blog/conoce-tipos-inteligencia-artificial/ Prototipo de una aplicación ¿Qué es y para qué sirve? | Tangram Consulting®. (2023, 30 noviembre). https://tangramconsulting.es/noticias/prototipo-de-una-aplicacion-que-es-y-para- que-sirve ¿Qué es el load balancing? (s. f.). OVHcloud. https://www.ovhcloud.com/es/public-cloud/what- load-balancing/ 80 ¿Qué es el registro de contenedores? (s. f.). https://www.redhat.com/es/topics/cloud-native- apps/what-is-a-container-registry#:~:text=de%20Red%20Hat- ,Los%20registros%20de%20contenedores,parte%20de%20los%20procesos%20DevOps. ¿Qué es Kubernetes? (2022, 17 julio). Kubernetes. https://kubernetes.io/es/docs/concepts/overview/what-is-kubernetes/ ¿Qué es la inteligencia artificial (IA)? (s. f.). Oracle México. https://www.oracle.com/mx/artificial-intelligence/what-is-ai/ ¿Qué es Machine Learning? | Definición, tipos y ejemplos | SAP. (s. f.). SAP. https://www.sap.com/latinamerica/products/artificial-intelligence/what-is-machine- learning.html#:~:text=learning%20en%20detalle- ,Machine%20learning%20es%20un%20subconjunto%20de%20la%20inteligencia%20artificial% 20(IA,ser%20expl%C3%ADcitamente%20programadas%20para%20hacerlo%E2%80%93. 7 algoritmos de Machine Learning que hay que conocer: Guía para principiantes. (2023, 15 junio). Coursera.org. Recuperado 12 de febrero de 2024, de https://www.coursera.org/mx/articles/machine-learning-algorithms ¿Qué son los bots? definición y explicación. (2023, 22 noviembre). latam.kaspersky.com. https://latam.kaspersky.com/resource-center/definitions/what-are-bots 81 Santander. (2023, 21 abril). ¿Qué es el talento humano? https://www.santander.com/es/stories/que-es-el-talento-humano Team, M. (2023, 23 agosto). Creación de prototipos: tipos y herramientas para probar ideas y productos. MJV Technology & Innovation. https://www.mjvinnovation.com/es/blog/creacion-de- prototipos-tipos-y-herramientas-para-probar-ideas-y-productos/ Tekios, R. (2023, 9 mayo). ¿Qué es el staffing, un servicio aplicado a los talentos TI? TEKIOS. https://tekiosmag.com/2023/05/09/que-es-el-staffing-un-servicio-aplicado-a-los- talentos- ti/#:~:text=En%20palabras%20simples%2C%20el%20staffing,su%20vez%2C%20es%20terceriz ado%20contractualmente. Vaware Labs. (2021, 3 septiembre). Wireframes y mockups: Conoce los tipos de prototipo - Vaware Labs. https://vawarelabs.com/comunidad-agile/diseno-ux-ui/wifreframes-prototipos- diseno-mockups/ 82 Anexos 83 Configuración de la aplicación Skill Matching Engine Para empezar la configuración de la aplicación se debe crear la base de datos Skill- Matchmaking-Engine ejecutando el script CreateSkillMatchmakingEngine, posterior a ello se deben de crear las 22 tablas que la componen ejecutando el script CreateTableSkillMatchmakingEngine, Continuando se debe ejecutar el script de DatosInicialesSkillMatchmakingEngine el cual tiene todos los catálogos necesarios y el usuario administrador para que pueda hacer uso del sistema que posteriormente se puede ejecutar el script DatosDePruebaSkillMatchmakingEngine los cuales servirán para realizar pruebas del sistema antes de su liberación. Después se tiene que pedir el permiso de acceso a los repositorios de Azure DevOps de Skill-Matchmaking-Engine, skill-matchmaking-engine-ui, Machine Learning y Model Builder de Machine Learning. Entre los prerequisitos que se deben aplicar son: • Instalar Nodejs • Instalar dotnet 8.0 • Contar con un IDE como Visual Studio o Visual Code en su versión estable y compatible. En la terminal de la ide se deben de correr los siguientes comandos: • npm install react react-dom next • npm install 84 • npm start: ejecuta la aplicación skill-matchmaking-engine-ui en modo desarrollo. Abra http://localhost:3000 para verlo en su navegador • dotnet build: compila la aplicación. • dotnet run: ejecuta la aplicación. • dotnet run --environment Development: este solo se ejecuta si se crea una configuración en una variable de ambiente. En el aplicativo Skill-Matchmaking-Engine en el archivo .env se debe configurar la ruta o dirección en la que se ejecutará el api y sus diferentes métodos. El archivo appsettings.json se almacenan las configuraciones necesarias para la conexión de base de datos, el token entre otras configuraciones y cuando se tiene la necesidad de crear una variable de ambiente o de entorno se crea otra clase que será la configuración de esta se puede llamar appsettings.Development.json donde Development es el nombre de la variable de entorno. En dicha de clase se encuentra la cadena de conexión. https://github.com/jsmiguel/udb-skill-matchmaking-engine-ui 85 86 Swagger de APIs de la aplicación Para poder revisar las APIs de los usuarios utilizar el path /swagger/index.html 87 Redoc de APIs de la aplicación Para revisar la documentación de las APIs usuando Redoc utilizar el path /api-docs/index.html 88 88 Manual de usuario de aplicación Skill Matching Engine 2 Índice Pantalla de login de usuario ............................................................................................................ 3 Menú de aplicación ......................................................................................................................... 4 Salir de la aplicación (Log Out) ...................................................................................................... 5 Atrás (Back) .................................................................................................................................... 5 Listado de candidatos ...................................................................................................................... 6 Formulario de candidatos ................................................................................................................ 7 Listado de habilidades de candidato ............................................................................................... 8 Listado de clientes........................................................................................................................... 9 Listado de proyectos por cliente ................................................................................................... 10 Listado de posiciones por proyecto............................................................................................... 11 Listado de reclutamiento de candidatos por posición ................................................................... 12 Listado de habilidades solicitadas por posición ............................................................................ 13 Análisis IA .................................................................................................................................... 14 Listado de habilidades................................................................................................................... 15 Listado de usuarios ....................................................................................................................... 15 3 Pantalla de login de usuario Al iniciar el sistema se presentará una pantalla de login o identificación de usuario donde ingresará el usuario y contraseña. Al ingresar se visualizará la pantalla de consulta de candidatos. 4 Menú de aplicación Todas las pantallas del sistema tienen un menú lateral con el logo de la empresa en la parte superior. El significado de los iconos es el siguiente: • Icono de casa: redirecciona a la pantalla de home. • Icono de personas: redirecciona a la pantalla de candidatos. • Icono de libro: redirecciona a la pantalla de clientes. • Icono de lista: redirecciona a la pantalla de habilidades. • Icono de engranaje o tuerca: redirecciona a la pantalla de usuario. El menú siempre estará visible para facilitar la navegación. 5 Salir de la aplicación (Log Out) En todas las pantallas del sistema se encuentra la opción para desloguearse o salir del sistema, esta opción la encuentra en la parte superior derecha representada por un icono de una puerta y la flecha de salida. Atrás (Back) En todas las pantallas del sistema se encuentra la opción de atrás que permite regresar a la pantalla en la que se encontraba anteriormente y si se encuentra en home se redireccionará al login. 6 Listado de candidatos Al seleccionar el icono de las personas se redirecciona a la pantalla de listado de candidatos la cual muestra la información de todos los candidatos que están aplicando a las diversas plazas. En la columna habilidades se muestra un icono de lista al darle clic a ella se redirigirá a la pantalla de habilidades del candidato. 7 Formulario de candidatos Si se le da clic al botón de Crear registro se muestra el formulario para agregar un nuevo candidato. Se muestra cinco filas con dos columnas donde se piden la información necesaria para un candidato, en el combo o listado se debe seleccionar el país, llenar el nombre, apellido, fecha de nacimiento, linkedin, título, correo, teléfono y celular luego se presiona Crear Candidato y se guarda en base de datos y se presenta una pantalla blanca con el botón de atrás. 8 Listado de habilidades de candidato Esta pantalla muestra las diferentes habilidades que tiene el candidato seleccionado previamente en la pantalla de listado de candidatos. Muestra el nombre del candidato, el nombre de las habilidades que él o ella tiene y el nivel en que se encuentra cada habilidad. 9 Listado de clientes Al seleccionar el icono del libro en el menú lateral se redirigirá a la pantalla de listado de clientes. En esta pantalla se muestra la información de los clientes: nombre, una breve descripción, la dirección y una columna de acción donde se muestra un icono de un ojo el cual permite visualizar los proyectos que tiene el cliente. 10 Listado de proyectos por cliente Al darle clic al icono de ojo que se encuentra en la columna de acción de la pantalla de listado de cliente se mostrará la pantalla de listado de proyectos del cliente seleccionado previamente. En esta se mostrará el nombre del proyecto, una breve descripción de este, la fecha en que inicia el proyecto, la fecha en que se puede terminar el proyecto o bien si ya ha culminado y una columna acción con un icono de ojo la cual redirecciona a la pantalla de posiciones. 11 Listado de posiciones por proyecto La pantalla de listado de posiciones por proyecto se muestra al darle clic al icono de ojo de la pantalla listado de proyectos por cliente y está nos permitirá ve la información de la posición que tiene el proyecto mostrándonos la categoría en el que se encuentra, el nombre, una breve descripción, una fecha de inicio, una fecha de fin y tres columnas más una de reclutamientos donde se muestra un icono de personas que al darle clic mostrará la pantalla de listado de reclutamiento de candidatos por posición, otra columna que muestra un icono de varita que al darle clic presenta la pantalla de análisis IA y la otra columna muestra un icono de listado la cual permitirá visualizar la pantalla de listado de habilidades solicitadas por posición. 12 Listado de reclutamiento de candidatos por posición La pantalla de reclutamiento de candidatos por posición muestra siete columnas las que indica el nombre de la posición, el candidato que se encuentra aplicado, el nivel, los años de experiencias que requiere la posición, la ponderación o nota que se obtuvo en las pruebas, el nombre del reclutador, una fecha de inicio, una fecha final y el resultado que el candidato a tenido para esa posición. A esta pantalla se ingresa a través de la columna de reclutamiento de la pantalla de listado de posiciones por proyecto. 13 Listado de habilidades solicitadas por posición La pantalla de habilidades solicitadas por posición muestra las habilidades requeridas para la posición y el nivel que se requiere. Para ingresar a esta pantalla se debe dar clic a la columna de habilidades de la pantalla de listado de posiciones por proyecto. 14 Análisis IA En la pantalla de análisis IA muestra los datos de los candidatos que son los más indicados para la posición y que obtuvieron un resultado aprobatorio. 15 Listado de habilidades Si se da clic al icono de lista del menú lateral izquierdo mostrará el listado de habilidades que se tienen. Se presenta el tipo de la habilidad, el nombre y la fecha en que fue registrada. Para crear una nueva habilidad se le debe de dar clic al botón Crear registro y mostrará el siguiente formulario. En el formulario de crear habilidad se puede seleccionar el tipo de habilidad en el combo o listado y el nombre de la habilidad, cuando se tiene el formulario lleno se da clic a Crear Habilidad y se creará en base de datos y luego se presentará con el botón atrás para ir a la pantalla anterior. 16 Listado de usuarios Si se da clic al icono del engranaje o tuerca del menú lateral izquierdo mostrará el listado de usuarios registrados en el sistema. Se presenta el correo, el nombre, el rol y la fecha en que fue registrada. Para crear un nuevo usuario se le debe de dar clic al botón Crear registro y mostrará el siguiente formulario. En el formulario de crear usuario se puede seleccionar el rol en el combo o listado, el nombre del usuario, correo electrónico, contraseña (password) y se tiene que confirmar la contraseña al tener el formulario lleno se da clic a Crear Usuario y se creará en base de datos y luego se presentará con el botón atrás para ir a la pantalla anterior. 102 Entregables en repositorio de empresa 103 Carta de constancia de aceptación de empresa de proyecto