PLANO BI — MetaSet (Apache Superset)
Arquitetura Consolidada
Versão 2.0 — Abril 2026
1. STATUS — CONSOLIDAÇÃO CONCLUÍDA ✅
1.1 O que foi realizado
A migração do Metabase para o Apache Superset foi concluída em abril de 2026.
| Componente |
Status |
Localização |
| MetaSet (Apache Superset 4.1.0) |
✅ Implementado |
/server/bi/metaset/ |
| Cliente TypeScript |
✅ Implementado |
/server/bi/metaset-client/ |
| Rotas Express |
✅ Implementado |
/server/bi/metaset-client/routes.ts |
| Código legado Metabase |
✅ Backup |
/server/metaset/backup/ |
| Integração Kernel |
✅ Ativa |
Porta 8100 |
| Documentação |
✅ Atualizada |
/server/metaset/README.md |
1.2 Arquitetura Consolidada
┌─────────────────────────────────────────────────────────────────────────────┐
│ ARCÁDIA SUITE (Porta 5000) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ BI-API GATEWAY (Porta 8004) │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────────┐ │ │
│ │ │ /bi/api/* │ │/bi/metaset/*│ │ /bi/fdb/* │ │ │
│ │ │ (nativo) │ │ (proxy) │ │ (proxy) │ │ │
│ │ └──────┬──────┘ └──────┬──────┘ └─────────────┬───────────────┘ │ │
│ │ └─────────────────┴───────────────────────┘ │ │
│ └─────────────────────────────┬────────────────────────────────────────┘ │
└────────────────────────────────┼────────────────────────────────────────────┘
│
┌───────────────────────┴───────────────────────┐
▼ ▼
┌─────────────────────────┐ ┌─────────────────────────┐
│ METASET BI (Porta 8100)│ │ FDB-BRIDGE (8200) │
│ Apache Superset 4.1.0 │ │ Sync Firebird → PG │
│ ┌─────────────────┐ │ │ - Change Data Capture │
│ │ superset-src/ │ │ │ - Real-time sync │
│ │ - Dashboards │ │ │ - Tenant isolation │
│ │ - SQL Lab │ │ │ │
│ │ - Charts │ │ │ │
│ │ - RLS │ │ │ │
│ └─────────────────┘ │ │ │
└─────────────────────────┘ └─────────────────────────┘
│
▼
┌─────────────────────────┐
│ PostgreSQL + Redis │
│ (metaset_db + cache) │
└─────────────────────────┘
2. ESTRUTURA DE ARQUIVOS
2.1 Implementação Atual (Apache Superset)
/server/bi/metaset/
├── main.py # FastAPI wrapper (Porta 8100)
├── run.py # Entry point Gunicorn
├── superset_config.py # Configuração Superset
├── security_manager.py # ArcadiaSecurityManager (JWT + RLS)
├── Dockerfile # Container MetaSet
├── init.sh # Script de inicialização
├── requirements.txt # Dependências Python
├── superset-src/ # Código fonte Apache Superset 4.1.0
├── config/ # Configurações adicionais
├── branding/ # Assets de branding
├── security/ # Módulos de segurança
├── extensions/ # Extensões
└── templates/ # Templates customizados
/server/bi/metaset-client/
├── index.ts # Cliente TypeScript completo
└── routes.ts # Rotas Express /api/bi/metaset/*
2.2 Código Legado (Backup)
/server/metaset/backup/
├── client.ts # Cliente Metabase (legado)
└── routes.ts # Rotas Metabase (legado)
3. API ENDPOINTS
3.1 BI-API Gateway (Porta 8004)
| Endpoint |
Método |
Descrição |
/api/bi/metaset/health |
GET |
Health check |
/api/bi/metaset/databases |
GET/POST |
Lista/Cria databases |
/api/bi/metaset/databases/:id/sync |
POST |
Sincroniza schema |
/api/bi/metaset/databases/:id/tables |
GET |
Lista tabelas |
/api/bi/metaset/tables/:id |
GET |
Metadata da tabela |
/api/bi/metaset/query |
POST |
Executa SQL |
/api/bi/metaset/charts |
GET/POST |
Lista/Cria charts |
/api/bi/metaset/charts/:id |
GET/DELETE |
Obtém/Deleta chart |
/api/bi/metaset/dashboards |
GET/POST |
Lista/Cria dashboards |
/api/bi/metaset/dashboards/:id |
GET/PUT/DELETE |
CRUD dashboard |
/api/bi/metaset/guest-token |
POST |
Cria guest token |
/api/bi/metaset/embed/dashboard/:id |
GET |
URL de embed |
/api/bi/metaset/suggest/:table |
GET |
Sugestões de análise |
3.2 MetaSet Direto (Porta 8100)
API nativa do Apache Superset:
GET /health
GET /api/v1/dashboard/
GET /api/v1/dashboard/:id
POST /api/v1/dashboard/
GET /api/v1/chart/
GET /api/v1/dataset/
POST /api/v1/security/guest_token/
GET /api/v1/database/
GET /sqllab/
4. CONFIGURAÇÃO
4.1 Variáveis de Ambiente
# MetaSet Connection
METASET_HOST=metaset
METASET_PORT=8100
# Database
DATABASE_URL=postgresql://arcadia:arcadia123@db:5432/metaset_db
ARCADIA_DATABASE_URL=postgresql://arcadia:arcadia123@db:5432/arcadia
# Redis (Cache)
REDIS_URL=redis://redis:6379/1
# Security
METASET_SECRET_KEY=change-in-production
JWT_SECRET_KEY=arcadia-jwt-secret
# Admin
METASET_ADMIN_USER=admin
METASET_ADMIN_EMAIL=admin@arcadia.app
METASET_ADMIN_PASSWORD=metaset2026
4.2 Feature Flags
FEATURE_FLAGS = {
"EMBEDDED_SUPERSET": True, # Embedding de dashboards
"GUEST_EMBEDDING_ENABLED": True, # Guest tokens
"DASHBOARD_RBAC": True, # Controle de acesso
"SQLLAB_BACKEND_PERSISTENCE": True, # Persistência SQL Lab
"DRILL_BY": True, # Drill-down
"DASHBOARD_CROSS_FILTERS": True, # Filtros cruzados
}
5. SEGURANÇA
5.1 ArcadiaSecurityManager
- Extrai JWT do header
Authorization: Bearer <token>
- Identifica tenant do payload JWT (
tenant_id)
- Aplica RLS automaticamente via
SET LOCAL app.current_tenant
- Mapeia roles: superadmin→Admin, admin→Alpha, analyst→Gamma, viewer→Public
5.2 Row Level Security (RLS)
-- Política aplicada automaticamente
SET LOCAL app.current_tenant = <tenant_id>;
-- Views filtram por tenant
CREATE VIEW tenant_data AS
SELECT * FROM data
WHERE tenant_id = current_setting('app.current_tenant')::int;
6. CLIENTE TYPESCRIPT
6.1 Uso Básico
import { metasetClient } from "./server/bi/metaset-client";
// Health check
const health = await metasetClient.isHealthy();
// Listar dashboards
const dashboards = await metasetClient.listDashboards();
// Executar query
const result = await metasetClient.executeSql(1, "SELECT * FROM sales LIMIT 100");
// Criar dashboard
const dashboard = await metasetClient.createDashboard({
name: "Vendas Q1 2026",
description: "Dashboard de vendas"
});
// Guest token para embedding
const token = await metasetClient.createGuestToken({
resources: [{ type: "dashboard", id: "1" }],
rls: [{ dataset: 1, clause: "tenant_id = 123" }]
});
6.2 Ferramentas do Manus (Agente IA)
| Ferramenta |
Descrição |
metaset.query |
Executa SQL |
metaset.list_tables |
Lista tabelas |
metaset.table_fields |
Campos da tabela |
metaset.create_chart |
Cria gráfico |
metaset.list_charts |
Lista gráficos |
metaset.create_dashboard |
Cria dashboard |
metaset.list_dashboards |
Lista dashboards |
metaset.suggest_analysis |
Sugere análises |
metaset.sync_database |
Sincroniza schema |
metaset.health |
Verifica status |
7. DEPLOYMENT
7.1 Docker Compose
services:
metaset:
build: ./server/bi/metaset
ports:
- "8100:8100"
environment:
- DATABASE_URL=postgresql://arcadia:arcadia123@db:5432/metaset_db
- REDIS_URL=redis://redis:6379/1
labels:
- "arcadia.discovery.enabled=true"
- "arcadia.name=MetaSet BI"
- "arcadia.type=python"
- "arcadia.port=8100"
- "arcadia.capabilities=dashboards,charts,sql_lab,rls,embedding"
7.2 Inicialização
# Via docker compose
docker compose up metaset
# Ou diretamente
cd server/bi/metaset
python run.py --host 0.0.0.0 --port 8100 --workers 2
8. HISTÓRICO DE MUDANÇAS
| Data |
Versão |
Mudança |
| 2026-03 |
1.0 |
Plano inicial de migração Metabase → Superset |
| 2026-04-08 |
2.0 |
Consolidação concluída - Cliente TypeScript, rotas, documentação |
9. REFERÊNCIAS
/server/metaset/README.md - Documentação completa do MetaSet
/server/bi/metaset-client/index.ts - Cliente TypeScript
/server/bi/metaset-client/routes.ts - Rotas Express
- Apache Superset Docs
- Superset API Reference