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.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.