Sobre el proyecto

## Descripción general Hospital-Recruit-QA-Bot es un pipeline de automatización desde una perspectiva de QA que recopila automáticamente cada mañana las ofertas de empleo de 42 hospitales principales en Corea y verifica la integridad de los datos recopilados. El objetivo es una estructura que no se limite al simple crawling, sino que incluya una pasarela de verificación para asegurar que solo los datos confiables se incluyan en los resultados. ## Funciones principales ### 1. Pasarela de verificación RaiT - Verifica en tiempo real los valores faltantes y los errores de formato de los datos brutos recopilados basándose en el marco de trabajo RaiT (Responsible AI Testing). - Solo las ofertas que pasan (PASS) la verificación se incluyen en el resultado final y se registran en `seen_posts`, bloqueando la mezcla de datos inadecuados en los resultados. ### 2. Pipeline CI/CD (GitHub Actions) - Se ejecuta automáticamente todos los días a las 9:00 AM (KST) en un entorno virtual de Ubuntu. - Después del crawling, el bot realiza el commit y push del archivo `seen_posts.csv` actualizado para evitar continuamente la recopilación de duplicados. ### 3. Filtrado de datos duplicados - Los entornos locales y en la nube comparten la misma base de datos de historial (`seen_posts.csv`), excluyendo las ofertas ya verificadas y reportando solo las nuevas. ## Escenarios de verificación de QA Los casos de prueba detallados en el README son los siguientes: | ID | Elemento de prueba | Resultado esperado | Estado | |---|---|---|---| | TC-01 | Verificación de validez de datos RaiT | Determinación automática de valores faltantes y errores de formato mediante la lógica `verify_rait_compliance` | Pass | | TC-02 | Guardián de integridad de datos | Solo los nuevos datos con calificación PASS se reflejan en la lista de prevención de duplicados | Pass | | TC-03 | Almacenamiento ramificado de informes integrados | Creación de Excel separando los datos en hojas individuales: Total/Nuevos/RaiT_FAIL | Pass | | TC-04 | Acceso a 42 hospitales objetivo | Verificación de acceso normal y parsing de datos en sitios objetivo, excluyendo sitios con bloqueo de seguridad | Pass | ## Flujo de trabajo 1. **Disparador:** Ejecución automática del programador de GitHub Actions todos los días a las 9:00 AM (KST). 2. **Recopilación:** Recopilación de datos dinámicos de las páginas de empleo de cada hospital basada en Selenium. 3. **Verificación de QA:** Inspección de integridad de datos a través de la lógica RaiT. 4. **Eliminación de duplicados:** Filtrado de ofertas duplicadas mediante el cotejo con `seen_posts.csv`. 5. **Actualización automática:** Commit y push automático de los nuevos datos verificados al repositorio. 6. **Informe:** Almacenamiento de los resultados finales en Excel y los logs de error en GitHub Artifacts. ## Stack Tecnológico - **Lenguaje:** Python 3.10 - **Librerías:** Selenium, Pandas, Openpyxl, Webdriver-manager - **Automatización:** GitHub Actions (CI/CD) - **Almacenamiento:** CSV (`seen_posts.csv`) y productos entregables en Excel ## Estructura del Proyecto ```text .github/workflows/ # Configuración del pipeline CI/CD (crawler.yml) top-hospitals/ ├── qa/ # Lógica de crawling por hospital y módulo de verificación RaiT ├── main.py # Motor de ejecución principal (Pasarela de QA y manejo de datos) └── seen_posts.csv # DB de historial para prevención de duplicados (actualización automática) ``` ## Registro de resolución de problemas - **Portabilidad de rutas entre entornos:** Se produjeron errores de ejecución debido a la diferencia de rutas entre el entorno local y el servidor virtual de GitHub Actions; se creó una estructura de ejecución independiente del entorno mediante la generación dinámica de rutas relativas basadas en `os.path`. - **Consistencia de datos y gestión de duplicados:** El problema de duplicados en la recopilación repetitiva se resolvió mediante la gestión del historial en `seen_posts.csv` y la integración de commits automáticos de GitHub Actions. - **Aislamiento del entorno:** Se refinó el archivo `.gitignore` para separar el código fuente de los productos de datos. ## Limitaciones conocidas - Debido a políticas de seguridad reforzadas, el acceso al Hospital Samsung Changwon está bloqueado en el entorno de GitHub Actions (Ubuntu/IP extranjera). Si se requieren datos de dicho hospital, se recomienda la ejecución directa en un entorno local; en el pipeline de CI/CD, se ha configurado para omitir automáticamente este objetivo para mantener la estabilidad. ## Planes futuros - Automatización de pruebas unitarias e integradas mediante la introducción de Pytest. - Sofisticación de la lógica de verificación multidimensional para determinar errores contextuales y consistencia de texto. - Envío automático de resultados e informes de RaiT FAIL mediante la integración de notificaciones de Slack/Email. ## Licencia y notas Sigue la Licencia MIT. El README aclara que este proyecto tiene fines de mejora de capacidades técnicas personales y portafolio, prohibiendo el uso comercial de la información recopilada. Se especifica que los derechos de autor de la información de empleo pertenecen a cada hospital y que el repositorio puede pasar a ser privado si el autor original lo solicita. Se menciona la aplicación de tiempos de espera para minimizar la carga del servidor y el bloqueo de datos nocivos a través de la pasarela RaiT.