Spaces:
Running
title: Mesa React Beta
emoji: 🌖
colorFrom: blue
colorTo: indigo
sdk: docker
app_port: 7860
pinned: false
MESA React Beta (FastAPI + React)
Rearquitetura do app MESA com:
backend/em FastAPIfrontend/em React (Vite)- Reuso do core estatistico e de negocio original (elaboracao + visualizacao)
Estrutura
backend/app/main.py: inicializacao da APIbackend/app/api/: rotas de sessao, elaboracao e visualizacaobackend/app/services/: orquestracao dos fluxosbackend/app/core/elaboracao: core de elaboracao reaproveitadobackend/app/core/visualizacao: core de visualizacao reaproveitadofrontend/src: interface React
Backend
cd backend
python3.12 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
./run_backend.sh
Observacao: o stack geoespacial do backend fecha melhor com Python 3.12 no macOS.
Se backend/.venv existir, ./run_backend.sh passa a usa-lo automaticamente.
API: http://localhost:8000
Swagger: http://localhost:8000/docs
Frontend
cd frontend
npm install
npm run dev
Frontend: http://localhost:5173
Para apontar para outro backend:
VITE_API_BASE=http://localhost:8000 npm run dev
No build de producao servido pelo proprio backend, o frontend passa a usar a mesma origem (/api) por padrao.
Repositório de modelos .dai
Os modelos usados em Pesquisa, Elaboração (carregar modelo existente) e Visualização (carregar modelo existente) podem vir de duas fontes:
local(pasta do projeto)hf_dataset(dataset no Hugging Face)
Variáveis de ambiente do backend:
MODELOS_REPOSITORIO_PROVIDER(localouhf_dataset)MODELOS_REPOSITORIO_LOCAL_DIR(opcional, quandolocal)MODELOS_REPOSITORIO_HF_REPO_ID(ex.:gui-sparim/repositorio_mesa)MODELOS_REPOSITORIO_HF_REVISION(ex.:main)MODELOS_REPOSITORIO_HF_SUBDIR(ex.:modelos_dai)HF_TOKEN(obrigatório para ler dataset privado e para gravar cadastros/edições em produção)
Base de Trabalhos Técnicos:
- Fora do HF Spaces, o app usa por padrão o banco SQLite local.
- Em runtime HF Spaces, o app usa por padrão o banco SQLite hospedado no dataset.
- Override opcional:
TRABALHOS_TECNICOS_PROVIDER(localouhf_dataset) - Banco local:
TRABALHOS_TECNICOS_DB_LOCAL_PATH - Banco no dataset:
TRABALHOS_TECNICOS_HF_REPO_ID,TRABALHOS_TECNICOS_HF_REVISION,TRABALHOS_TECNICOS_HF_PATH
Geração do banco local de Trabalhos Técnicos:
- Script:
backend/scripts/build_trabalhos_tecnicos_db.py - Planilha padrão de origem:
~/Downloads/AVALIANDOS_20260515_corrigido_v2.xlsx - Exemplo:
backend/.venv/bin/python backend/scripts/build_trabalhos_tecnicos_db.py - Saída padrão:
backend/local_data/trabalhos_tecnicos.sqlite3 - O arquivo SQLite local fica ignorado no git e deve ser enviado manualmente ao dataset
gui-sparim/repositorio_mesano caminhotrabalhos_tecnicos/trabalhos_tecnicos.sqlite3.
Regra automática de provider:
- Em runtime HF Spaces (
SPACE_ID/SPACE_AUTHOR_NAME/HF_SPACE_ID), o backend forçahf_dataset. - Fora do HF Spaces, o fallback continua
localquando o provider não é informado.
No modo hf_dataset, o backend consulta a revisão atual do dataset e só
sincroniza novamente quando detectar mudança de revisão.
Ao cadastrar trabalhos técnicos, o backend migra automaticamente bancos SQLite antigos do dataset que ainda não tenham as colunas de links usadas pela versão atual, preservando os registros existentes.
Login simples
O app exige autenticação para qualquer rota /api (exceto health e login).
- Endpoint de login:
POST /api/auth/logincomusuarioematricula - O frontend usa token no header
X-Auth-Token - Usuários padrão:
backend/app/core/auth/usuarios.json
Variáveis opcionais:
APP_USERS_FILEpara apontar um JSON alternativo de usuáriosAPP_USERS_JSONpara injetar o JSON via secret/variável de ambiente
Logs de auditoria
Logs são gravados em JSONL por escopo:
authrepositoriotrabalhos_tecnicoselaboracaovisualizacao
Comportamento por ambiente:
- Local (
MODELOS_REPOSITORIO_PROVIDER=local): logs desativados. - Produção HF (
MODELOS_REPOSITORIO_PROVIDER=hf_dataset): logs gravados e lidos no dataset, emlogs/.
Variável opcional:
APP_LOGS_MODE(auto/enabled/disabled) para forçar o modo de logs.