Pular para o conteúdo principal

Multi-Tenancy e Países

Princípio fundamental

Zero código de país no fork do cliente. O core detecta o país via configuração e retorna o comportamento correto automaticamente.

Como funciona

Cada fork de marca define apenas variáveis de ambiente:

BRAND_COUNTRY=BRA          # Código do país ISO 3166
BRAND_LANGUAGE=pt-br # Idioma padrão
BRAND_CURRENCY=BRL # Moeda
BRAND_TIMEZONE=America/Sao_Paulo

Os pacotes @cactus-agents/* usam essas variáveis para resolver:

PacoteResolução por país
@cactus-agents/paymentsProviders de pagamento (PIX para BR, SPEI para MX)
@cactus-agents/kycDocumentos exigidos (CPF para BR, CURP para MX)
@cactus-agents/validationsValidators (formato CPF, formato CURP, etc.)
@cactus-agents/brandselectByCountry() filtra dados multi-país da API

selectByCountry

A função selectByCountry(items, country) do @cactus-agents/brand segue a chain:

  1. Exact match — item com country.code === BRAND_COUNTRY
  2. Default — item com is_default === 1
  3. Fallback — primeiro item do array

Isso permite que a API retorne dados para múltiplos países e o SDK selecione automaticamente.

Sem forks por país

Errado: front-web-base-mex, front-web-base-bra

Certo: Um único front-web-base. Países são resolvidos no core via env vars.

Um fork como front-web-vera-bet-br é um fork de marca, não de país. Se a Vera expandir para o México, basta mudar as env vars — nenhum código precisa ser alterado.

Dados multi-país na API

A API retorna arrays com items por país em vários endpoints. Exemplos:

  • features.contacts — contatos (SAC, suporte) por país
  • features.validation_modules — regras de validação por módulo e país
  • settings — limites de depósito/saque por país

O @cactus-agents/brand usa selectByCountry para filtrar na transformação.