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:
| Pacote | Resolução por país |
|---|---|
@cactus-agents/payments | Providers de pagamento (PIX para BR, SPEI para MX) |
@cactus-agents/kyc | Documentos exigidos (CPF para BR, CURP para MX) |
@cactus-agents/validations | Validators (formato CPF, formato CURP, etc.) |
@cactus-agents/brand | selectByCountry() filtra dados multi-país da API |
selectByCountry
A função selectByCountry(items, country) do @cactus-agents/brand segue a chain:
- Exact match — item com
country.code === BRAND_COUNTRY - Default — item com
is_default === 1 - 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.