feat: update README.md to reflect application renaming and enhanced functionalities

This commit is contained in:
Murilo Scolari 2025-10-14 04:25:45 -03:00
parent 8caf6a9406
commit ad037ea3dc

144
README.md
View file

@ -1,75 +1,129 @@
# SisuFinderNode
# SisuData – Consultas Avançadas SISU + ENEM
SisuFinderNode é uma aplicação que permite buscar candidatos do Sisu por nome, utilizando dados públicos do MEC. O sistema faz scraping dos arquivos CSV, importa para um banco PostgreSQL e oferece uma interface web moderna para consulta.
SisuData é uma aplicação web para consulta inteligente de candidatos aprovados no SISU, enriquecida com dados detalhados dos microdados do ENEM. O sistema realiza *matching probabilístico* entre as bases públicas do ENEM e SISU, mostrando notas individuais de cada componente, classificação, cotas e mais – tudo via uma interface moderna e responsiva.
---
## Funcionalidades
- **Scraper:** Baixa arquivos CSV do Sisu a partir de um arquivo JSON com os IDs das instituições.
- **Importação:** Junta e trata todos os CSVs, importando para uma tabela no PostgreSQL.
- **API Express:** Endpoint `/buscar` para consultar candidatos por nome (busca simples ou múltipla).
- **Frontend:** Interface web responsiva para busca e navegação paginada dos resultados.
- **Scraper/Importação:** Baixa e processa os arquivos CSV do SISU automaticamente (por co_ies). Faz join com microdados públicos do ENEM, populando o banco PostgreSQL.
- **Matching Inteligente:** Algoritmo atribui probabilidades a cada match SISU↔ENEM, e exibe a precisão dos dados no site.
- **API Express:** Endpoints REST `/buscar` e `/filtros` para pesquisa por nome, curso, nota, estado, etc.
- **Frontend:** Interface web moderna, UX responsiva (busca, filtros, stats, ranking TOP 10 e análise detalhada do candidato).
- **Help/Transparência:** Modal detalhado de "Como funciona?" explicando conexão dos dados e limitações.
- **Paginação e stats:** Sistema paginado, rankings por curso/universidade/notas e análise por estado.
---
## Estrutura dos arquivos
- `scraper.py`: Baixa os arquivos CSV do Sisu usando os IDs do arquivo `arquivo.json`.
- `importar_csv.py`: Lê todos os CSVs, trata os dados e importa para o banco PostgreSQL.
- `index.js`: Backend Express que serve a API e o frontend.
- `public/index.html`: Interface web para busca dos candidatos.
- `arquivo.json`: Lista de objetos com o campo `co_ies` (IDs das instituições).
- `csv/`: Pasta onde ficam os arquivos CSV baixados.
- `scraper.py`: Faz download automatizado dos CSVs do SISU usando lista de co_ies (`arquivo.json`).
- `importar_csv.py`: Limpa e integra todos os CSVs do SISU e microdados do ENEM, importa ao Postgres.
- `index.js`: Backend Express com API (com retry, pooling robusto, filtros avançados e stats).
- `public/index.html`: Frontend SPA com abas, busca, cards responsivos, stats, modal de ajuda, etc.
- `arquivo.json`: Lista de objetos `"co_ies"` para download segmentado.
- `csv/`: Pasta onde ficam todos os arquivos CSV baixados e usados no pipeline.
---
## Pré-requisitos
- Node.js >= 16
- Python >= 3.8
- PostgreSQL (recomendado NeonDB)
- PostgreSQL (NeonDB recomendado ou local/cloud)
---
## Instalação
1. Clone o repositório:
```bash
git clone https://github.com/Revocable/SisuFinderNode.git
cd SisuFinderNode
```
2. Instale as dependências Node.js:
```bash
npm install
```
3. Instale as dependências Python:
```bash
pip install -r requirements.txt
```
4. Configure o arquivo `.env`:
```env
DATABASE_URL=postgres://usuario:senha@host:porta/database
```
```bash
git clone https://github.com/Revocable/SisuFinderNode.git
cd SisuFinderNode
```
2. Instale dependências Node.js:
```bash
npm install
```
3. Instale dependências Python:
```bash
pip install -r requirements.txt
```
4. Configure o arquivo `.env` (na raiz do projeto):
```env
DATABASE_URL=postgres://usuario:senha@host:porta/database
```
---
## Como executar
### 1. Baixar os arquivos CSV
Coloque o arquivo `arquivo.json` na raiz do projeto, contendo os IDs das instituições no campo `co_ies`.
Execute o scraper:
### 1. Baixe os arquivos CSV do SISU
Coloque um `arquivo.json` válido na raiz do projeto e execute:
```bash
python scraper.py
```
### 2. Importar os dados para o banco
### 2. Importe/integre para o banco
```bash
python importar_csv.py
```
### 3. Iniciar o servidor Express
### 3. Inicie o backend Express
```bash
node index.js
```
O servidor estará disponível em `http://localhost:8080`.
## Como utilizar
- Acesse `http://localhost:8080` no navegador.
- Digite o nome do candidato ou vários nomes separados por ponto e vírgula (`;`).
- Clique em "Buscar" para ver os resultados paginados.
- Use os botões de navegação para avançar entre as páginas.
Site iniciado em: `http://localhost:8080`
---
## Como usar
- Acesse `http://localhost:8080`
- Pesquise por nome, curso, ou use filtros avançados (estado, nota, turno, etc)
- Clique em "Buscar"
- Veja detalhes do candidato, stats, todas as notas ENEM, classificação no SISU, cotas, bônus etc
- Consulte rankings por curso, universidade ou maiores notas
- Clique no botão flutuante de ajuda ("❓") para entender o funcionamento e metodologia do matching.
---
## Transparência dos Dados
- **Origem dos dados:**
- SISU: Último dataset público.
- ENEM: Microdados públicos, obtidos de [gov.br/inep/microdados/enem](https://www.gov.br/inep/pt-br/acesso-a-informacao/dados-abertos/microdados/enem)
- **Matching entre bases:**
- Realizado por múltiplos critérios (nota, UF, município de prova, dependência, cotas, PcD etc), com score de precisão e thresholds para confiabilidade.
- A nota individual de cada área do ENEM é exibida com um badge de precisão baseado em quão forte foi o matching.
- **Limitações:**
- Alguns candidatos não foram encontrados no ENEM (sem match acima do threshold).
- Notas detalhadas ("por área") podem não ser 100% precisas para todos. O badge indica isso!
---
## Observações
- Os arquivos CSV não são versionados pelo Git (veja `.gitignore`).
- O banco de dados deve estar acessível via URL definida no `.env`.
- O scraper depende do formato da API pública do Sisu/MEC.
- É necessário acesso PostgreSQL (preencha `.env`).
- Scraper pode parar de funcionar caso o MEC altere a estrutura das APIs/arquivos.
- O frontend foi desenhado para uso rápido, transparente e com foco em análise real de dados abertos.
---
## Autor
Desenvolvido por Murilo Scolari
[GitHub](https://github.com/Revocable)
Desenvolvido por Murilo Scolari
[GitHub](https://github.com/Revocable)