Sobre o projeto

## Visão Geral O Hospital-Recruit-QA-Bot é um pipeline de automação sob a perspectiva de QA que coleta automaticamente, todas as manhãs, anúncios de emprego de 42 principais hospitais na Coreia do Sul e verifica a integridade dos dados coletados. O objetivo é ir além do simples crawling, implementando um gateway de verificação para garantir que apenas dados confiáveis sejam incluídos nos resultados. ## Funcionalidades Principais ### 1. Gateway de Verificação RaiT - Verifica em tempo real valores ausentes e erros de formato nos dados brutos coletados com base no framework RaiT (Responsible AI Testing). - Apenas anúncios que passam (PASS) na verificação são incluídos no resultado final e registrados em `seen_posts`, bloqueando a mistura de dados inadequados nos resultados. ### 2. Pipeline de CI/CD (GitHub Actions) - Executado automaticamente todos os dias às 9h (KST) em um ambiente virtual Ubuntu. - Após o crawling, o bot realiza o commit/push do arquivo `seen_posts.csv` atualizado para evitar continuamente a coleta de duplicatas. ### 3. Filtragem de Dados Duplicados - Os ambientes local e cloud compartilham o mesmo banco de dados de histórico (`seen_posts.csv`), excluindo anúncios já verificados e reportando apenas novos anúncios. ## Cenários de Verificação de QA Os casos de teste organizados no README são os seguintes: | ID | Item de Teste | Resultado Esperado | Status | |---|---|---|---| | TC-01 | Verificação de validade de dados RaiT | Identificação automática de valores ausentes e erros de formato via lógica `verify_rait_compliance` | Pass | | TC-02 | Guarda de integridade de dados | Apenas novos dados com status PASS são refletidos na lista de prevenção de duplicatas | Pass | | TC-03 | Armazenamento de relatório integrado | Criação de Excel com dados Totais/Novos/RaiT_FAIL separados em planilhas individuais | Pass | | TC-04 | Acesso a 42 hospitais alvo | Verificação de acesso normal e parsing de dados nos sites alvo, exceto sites com bloqueio de segurança | Pass | ## Fluxo de Trabalho 1. **Gatilho:** Execução automática do agendador do GitHub Actions todos os dias às 9h (KST). 2. **Coleta:** Coleta de dados dinâmicos das páginas de recrutamento de cada hospital via Selenium. 3. **Verificação de QA:** Inspeção de integridade de dados através da lógica RaiT. 4. **Remoção de Duplicatas:** Filtragem de anúncios duplicados via comparação com `seen_posts.csv`. 5. **Atualização Automática:** Commit e push automático de novos dados verificados no repositório. 6. **Relatório:** Armazenamento dos resultados finais em Excel e logs de erro no GitHub Artifacts. ## Stack Tecnológica - **Linguagem:** Python 3.10 - **Bibliotecas:** Selenium, Pandas, Openpyxl, Webdriver-manager - **Automação:** GitHub Actions (CI/CD) - **Armazenamento:** CSV (`seen_posts.csv`) e entregáveis em Excel ## Estrutura do Projeto ```text .github/workflows/ # Configuração do pipeline CI/CD (crawler.yml) top-hospitals/ ├── qa/ # Lógica de crawling por hospital e módulo de verificação RaiT ├── main.py # Motor de execução principal (Gateway de QA e manipulação de dados) └── seen_posts.csv # DB de histórico para prevenção de duplicatas (atualização automática) ``` ## Registro de Solução de Problemas - **Portabilidade de Caminhos entre Ambientes:** Erros de execução ocorreram devido a diferenças de caminhos entre o local e o servidor virtual do GitHub Actions; foi criada uma estrutura de execução independente de ambiente usando a geração dinâmica de caminhos relativos baseados em `os.path`. - **Consistência de Dados e Gestão de Duplicatas:** O problema de duplicatas em coletas repetitivas foi resolvido através da gestão de histórico no `seen_posts.csv` e integração de commit automático via GitHub Actions. - **Isolamento de Ambiente:** O `.gitignore` foi refinado para separar o código-fonte dos entregáveis de dados. ## Limitações Conhecidas - O Hospital Samsung Changwon bloqueia o acesso em ambientes GitHub Actions (Ubuntu/IP estrangeiro) devido a políticas de segurança reforçadas. Se os dados deste hospital forem necessários, recomenda-se a execução direta em ambiente local; no pipeline de CI/CD, este alvo é configurado para ser ignorado automaticamente para garantir a estabilidade. ## Planos Futuros - Automação de testes unitários/integrados através da introdução do Pytest. - Aprimoramento da lógica de verificação multidimensional para discernir erros contextuais e consistência de texto. - Integração de notificações via Slack/Email para envio automático de resultados e relatórios de RaiT FAIL. ## Licença e Observações Segue a Licença MIT. O README esclarece que este projeto visa a melhoria de competências técnicas individuais e fins de portfólio, proibindo o uso comercial das informações coletadas. Os direitos autorais das informações de recrutamento pertencem a cada hospital, e o repositório poderá se tornar privado mediante solicitação do detentor dos direitos. Menciona-se a aplicação de tempos de espera para minimizar a carga no servidor e o bloqueio de dados nocivos via gateway RaiT.