Spaces:
Running
Running
| 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. | |