mesa-react / README.md
Guilherme Silberfarb Costa
melhorias gerais
da3ac65
metadata
title: Mesa React
emoji: 🌖
colorFrom: blue
colorTo: indigo
sdk: docker
app_port: 7860
pinned: false

MESA Frame (FastAPI + React)

Rearquitetura do app MESA com:

  • backend/ em FastAPI
  • frontend/ em React (Vite)
  • Reuso do core estatistico e de negocio original (elaboracao + visualizacao)

Estrutura

  • backend/app/main.py: inicializacao da API
  • backend/app/api/: rotas de sessao, elaboracao e visualizacao
  • backend/app/services/: orquestracao dos fluxos
  • backend/app/core/elaboracao: core de elaboracao reaproveitado
  • backend/app/core/visualizacao: core de visualizacao reaproveitado
  • frontend/src: interface React

Backend

cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
./run_backend.sh

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

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 (local ou hf_dataset)
  • MODELOS_REPOSITORIO_LOCAL_DIR (opcional, quando local)
  • 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 (opcional para dataset privado)

Regra automática de provider:

  • Em runtime HF Spaces (SPACE_ID/SPACE_AUTHOR_NAME/HF_SPACE_ID), o backend força hf_dataset.
  • Fora do HF Spaces, o fallback continua local quando 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.

Login simples

O app exige autenticação para qualquer rota /api (exceto health e login).

  • Endpoint de login: POST /api/auth/login com usuario e matricula
  • O frontend usa token no header X-Auth-Token
  • Usuários padrão: backend/app/core/auth/usuarios.json

Variáveis opcionais:

  • APP_USERS_FILE para apontar um JSON alternativo de usuários
  • APP_USERS_JSON para injetar o JSON via secret/variável de ambiente

Logs de auditoria

Logs são gravados em JSONL por escopo:

  • auth
  • repositorio
  • elaboracao
  • visualizacao

Comportamento por ambiente:

  • Local (MODELOS_REPOSITORIO_PROVIDER=local): logs desativados.
  • Produção HF (MODELOS_REPOSITORIO_PROVIDER=hf_dataset): logs gravados e lidos no dataset, em logs/.

Variável opcional:

  • APP_LOGS_MODE (auto/enabled/disabled) para forçar o modo de logs.