Lê o export oficial do SUAP (data/master.xls), gera agregados em CSV e publica um painel estático com gráficos (Chart.js). Desenvolvido para o IFMT (Instituto Federal de Mato Grosso).
- Instale dependências (cria
.venvse necessário):make setup
- Coloque o arquivo exportado do SUAP em
data/master.xls. - Gere o site e os datasets (salvos em
web/datasets/):make build
- Rode o servidor estático localmente:
make run # abre http://localhost:8000
make buildacionarun/construir_datasets.py(pandas + xlrd/openpyxl) e só emite os CSVs cujas colunas existirem na planilha.
- (Opcional) Crie as pastas para datasets e web (ex.:
/opt/suap):sudo mkdir -p /opt/suap/web sudo mkdir -p /opt/suap/web/datasets sudo chown -R $USER /opt/suap - Sincronize os arquivos gerados localmente (usa o target
sync-webque já chamarsync):make sync-web SYNC_DEST=user@servidor:/opt/suap/web/ # opcional: altere RSYNC_FLAGS=-av --delete (default)O container publicado traz apenas um
index.htmlplaceholder. Publique o conteúdo deweb/para que o painel fique disponível. - No servidor, rode o container apontando para as pastas publicadas (monte apenas o que precisar):
docker run --rm -d \ -e PORT=8000 \ -e DATA_INPUT=/data/master.xls \ -e DATA_OUTPUT=/app/web/datasets \ -p 8000:8000 \ -v /opt/suap/web:/app/web \ carlosrabelo/tabula:TAG
- Adicione
-v /opt/suap/data:/data:rose quiser montar omaster.xlspara regerar os CSVs. make docker-runmonta os volumes indicados porHOST_DATA_DIReHOST_DATASETS_DIR. Se deixá-los vazios (default local), nenhum volume é passado, evitando o erro de bind com caminho vazio.
- Adicione
Visão geral
alunos_por_situacao.csvmodalidade.csvdist_percentual_progresso.csvturno.csv
Inclusão & Acesso
forma_ingresso.csvcota_mec.csv/cota_sistec.csv/cotas.csvetnia_raca.csvnecessidades_especiais.csvtipo_escola_origem.csvnatureza_participacao.csvtransporte_tipo.csv
Análises cruzadas
natureza_escola.csv— Natureza de Participação × Tipo de Escola de Origemsituacao_escola.csv— Situação × Tipo de Escola de Origemcampus_natureza.csv— Campus × Natureza de Participaçãonatureza_turno.csv— Natureza de Participação × Turnonatureza_situacao.csv— Natureza de Participação × Situaçãonatureza_coorte.csv— Evolução de matrículas por Natureza de Participação ao longo dos anos
Metadados
meta.json— data/hora da última importação (exibida no rodapé do painel)
Colunas ausentes são ignoradas e o dataset correspondente não é criado.
data/: arquivo fonte exportado do SUAP (master.xls).run/construir_datasets.py: normaliza nomes de colunas (case/acento), trata datas/percentuais, gera os agregados emweb/datasets/e registra a data de importação emweb/datasets/meta.json.run/gerar_site.py: copia estáticos e gera oweb/index.html.src/: módulos Python (construtores de datasets, utilitários, templates).web/: HTML/CSS/JS (Chart.js) consumindo os CSVs viafetch.Dockerfile: imagem enxuta que serveweb/e tenta regerar os CSVs em runtime seDATA_INPUTestiver disponível.