--- 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 ```bash 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 ```bash cd frontend npm install npm run dev ``` Frontend: `http://localhost:5173` Para apontar para outro backend: ```bash 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.