feat: update README.md to reflect application renaming and enhanced functionalities
This commit is contained in:
parent
8caf6a9406
commit
ad037ea3dc
1 changed files with 99 additions and 45 deletions
144
README.md
144
README.md
|
|
@ -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)
|
||||
Loading…
Reference in a new issue