arcadiasuite/server/bi/metaset/config/metaset_config.py

136 lines
4.5 KiB
Python

"""
MetaSet BI - Configuration
Apache Superset Override for Arcádia Suite
"""
import os
# =============================================================================
# BRANDING ARCÁDIA
# =============================================================================
APP_NAME = "MetaSet by Arcádia"
APP_ICON = "/static/assets/images/metaset-logo.svg"
APP_ICON_WIDTH = 126
LOGO_TARGET_PATH = "/"
FAVICONS = [{"href": "/static/assets/images/favicon.png"}]
# =============================================================================
# SEGURANÇA
# =============================================================================
SECRET_KEY = os.environ.get("METASET_SECRET_KEY", "change-in-production-use-openssl-rand-hex-32")
# JWT para integração com Arcádia Kernel
JWT_SECRET_KEY = os.environ.get("JWT_SECRET", SECRET_KEY)
JWT_ALGORITHM = "HS256"
JWT_ACCESS_TOKEN_EXPIRES = 3600 # 1 hora
# =============================================================================
# BANCO DE DADOS
# =============================================================================
SQLALCHEMY_DATABASE_URI = os.environ.get(
"DATABASE_URL",
"postgresql://arcadia:arcadia123@localhost:5432/metaset_db"
)
# Banco Arcádia para leitura (datasets)
ARCADIA_DATABASE_URL = os.environ.get(
"ARCADIA_DATABASE_URL",
"postgresql://arcadia:arcadia123@localhost:5432/arcadia"
)
# =============================================================================
# CORS - Permite Kernel Arcádia
# =============================================================================
ENABLE_CORS = True
CORS_OPTIONS = {
"supports_credentials": True,
"allow_headers": ["*"],
"resources": {
r"/api/*": {"origins": "*"},
r"/health": {"origins": "*"},
},
}
# =============================================================================
# FEATURE FLAGS
# =============================================================================
FEATURE_FLAGS = {
# Embedding
"EMBEDDED_SUPERSET": True,
"GUEST_EMBEDDING_ENABLED": True,
# Query & Data
"ENABLE_TEMPLATE_PROCESSING": True,
"ALLOW_ADHOC_SUBQUERY": True,
# UI/UX
"ALERT_REPORTS": True,
"DRILL_TO_DETAIL": True,
"DRILL_BY": True,
"DASHBOARD_NATIVE_FILTERS": True,
"DASHBOARD_CROSS_FILTERS": True,
"DASHBOARD_RBAC": True,
# Security
"DASHBOARD_CACHE": True,
"ENABLE_DATASET_HEALTH_CHECK": True,
# Desabilitado por segurança
"ENABLE_JAVASCRIPT_CONTROLS": False,
}
# =============================================================================
# CACHE
# =============================================================================
REDIS_URL = os.environ.get("REDIS_URL", "redis://localhost:6379/1")
CACHE_CONFIG = {
"CACHE_TYPE": "RedisCache",
"CACHE_DEFAULT_TIMEOUT": 300,
"CACHE_KEY_PREFIX": "metaset_",
"CACHE_REDIS_URL": REDIS_URL,
}
DATA_CACHE_CONFIG = {
"CACHE_TYPE": "RedisCache",
"CACHE_DEFAULT_TIMEOUT": 86400,
"CACHE_KEY_PREFIX": "metaset_data_",
"CACHE_REDIS_URL": REDIS_URL,
}
# =============================================================================
# TIMEOUTS
# =============================================================================
SUPERSET_WEBSERVER_TIMEOUT = 300
SQLLAB_TIMEOUT = 300
SQLLAB_ASYNC_TIME_LIMIT_SEC = 600
# =============================================================================
# GUEST TOKEN (EMBEDDING)
# =============================================================================
GUEST_TOKEN_JWT_EXP_SECONDS = 300 # 5 minutos
GUEST_ROLE_NAME = "Gamma"
GUEST_TOKEN_JWT_ALGO = "HS256"
GUEST_TOKEN_HEADER_NAME = "X-GuestToken"
# =============================================================================
# MULTI-TENANCY (RLS)
# =============================================================================
# Configurações para Row Level Security por tenant
ENABLE_ROW_LEVEL_SECURITY = True
RLS_BASE_ROLE = "Gamma"
# =============================================================================
# LOGGING
# =============================================================================
LOG_LEVEL = os.environ.get("LOG_LEVEL", "INFO")
# =============================================================================
# ARCÁDIA INTEGRATION
# =============================================================================
ARCADIA_KERNEL_URL = os.environ.get("KERNEL_URL", "http://localhost:5001")
ARCADIA_API_KEY = os.environ.get("ARCADIA_API_KEY", "")
# Auto-create users from Arcádia
AUTH_USER_REGISTRATION = True
AUTH_USER_REGISTRATION_ROLE = "Gamma"