5.1 KiB
5.1 KiB
Integração Metaset BI - Especificações
Visão Geral
Integração do Metaset BI (Apache Superset modificado) na Arcadia Suite, permitindo acesso via navegação interna sem sair da aplicação.
Arquitetura
Componentes
┌─────────────────────────────────────────────────────────────┐
│ Arcadia Suite │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ Navbar │ │ BrowserFrame │ │ Metaset.tsx │ │
│ └──────────────┘ └──────────────┘ └──────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ iframe src="/metaset" │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Proxy /metaset (metaset-proxy.ts) │
│ pathRewrite: "^/metaset" → "" │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Serviço Metaset (Docker) │
│ http://metaset:8100 │
└─────────────────────────────────────────────────────────────┘
Arquivos
Backend
server/bi/metaset-proxy.ts- Proxy web para o serviço Metasetserver/routes.ts- Registro do proxy no servidor Express
Frontend
client/src/pages/Metaset.tsx- Página React com iframeclient/src/App.tsx- Rota/metasetclient/src/components/Browser/BrowserFrame.tsx- Item na navbar
Proxy Configuração
const METASET_HOST = process.env.METASET_HOST || "metaset";
const METASET_PORT = parseInt(process.env.METASET_PORT || "8100", 10);
createProxyMiddleware({
target: `http://${METASET_HOST}:${METASET_PORT}`,
changeOrigin: true,
pathRewrite: { "^/metaset": "" },
// ...error handling
});
Rotas
| Rota | Descrição |
|---|---|
/metaset |
Página React do módulo Metaset |
/metaset/* |
Proxy para serviço Metaset (8100) |
/api/bi/metaset/* |
API REST do Metaset (já existente) |
Variáveis de Ambiente
METASET_HOST=metaset # hostname do container
METASET_PORT=8100 # porta do serviço
Fluxo de Navegação
- Usuário clica em "Metaset" na navbar
- Navegação React para rota
/metaset Metaset.tsxrenderiza iframe apontando para/metaset- Proxy redireciona para
http://metaset:8100 - Interface Metaset carrega dentro do iframe
- Navbar Arcadia permanece visível
Estados da UI
Loading
- Spinner animado com texto "Carregando Metaset..."
- Overlay sobre o iframe
Erro (Serviço Offline)
- Alert vermelho com mensagem de erro
- Botão "Tentar novamente" para reload
- Health check via
/api/bi/metaset/health
Sucesso
- iframe carrega interface completa do Metaset
- Navegação suave entre módulos Arcadia
Segurança
- Proxy preserva cookies/sessão
- Health check requer autenticação
- PathRewrite remove prefixo /metaset antes de enviar ao serviço
- Headers Location são reescritos para manter contexto
Troubleshooting
Erro: "Conexão recusada"
Verificar se container Metaset está rodando:
docker ps | grep metaset
docker logs metaset
Erro: "Metaset indisponível"
Verificar health endpoint:
curl /api/bi/metaset/health
iframe não carrega
Verificar se Metaset permite embed (X-Frame-Options):
- Verificar configuração do Superset/TALISMAN_ENABLED
Referências
- Proxy similar:
server/superset/proxy.ts - Cliente API:
server/bi/metaset-client/ - Rotas API:
server/bi/routes.ts