Skip to content

Configuração da Tabela 'systems'

A tabela systems no backend do CSBBenk é um componente crítico que armazena configurações globais em formato de chave-valor, onde o valor é um campo JSON. Essas configurações permitem controlar dinamicamente diversos aspectos da aplicação sem a necessidade de fazer um novo deploy do código.

As configurações podem abranger desde expirações de tokens e chaves de segurança até elementos de branding, como estilos visuais e contas bancárias vinculadas. As alterações podem ser realizadas de duas formas principais: diretamente via consultas SQL ou através do painel administrativo.

Geralmente, nas seeds da API do CSBBenk, uma estrutura base já é criada para servir de exemplo e facilitar a configuração inicial.

ColunaTipo de DadosDescrição
idINTEGERIdentificador único auto-incrementado (Chave Primária).
keyVARCHARO nome (chave) único do parâmetro de sistema (ex: ‘whitelist’).
valueJSONB ou TEXTO valor da configuração, armazenado em formato JSON para flexibilidade.
statusVARCHARO status do parâmetro (ex: ‘ACTIVE’ ou ‘INACTIVE’).
created_atTIMESTAMP WITH TIME ZONEData e hora de criação do registro.
updated_atTIMESTAMP WITH TIME ZONEData e hora da última atualização do registro.

Exemplo de consulta SQL para visualizar todas as configurações:

SELECT * FROM systems ORDER BY id;

Operacionalização via Painel Administrativo

Section titled “Operacionalização via Painel Administrativo”

No painel de administração, as configurações da tabela systems são abstraídas em diferentes seções para facilitar a edição:

  1. Limites e Taxas: Ajustes em taxas de transação ou limites (ex: saque diário) são feitos na seção “Fees e Limites”. Ao salvar, o sistema atualiza o objeto JSON dentro da chave 'configurations'.
  2. Conta Vinculada: A definição da conta que recebe as taxas de serviço é configurada em uma seção específica, que atualiza as chaves 'bank_account' ou 'configurations'. O painel valida a estrutura do JSON antes de salvar.
  3. Outras Configurações: Permissões de interface ('permissions'), botões personalizados ('personal_buttons') ou versões de componentes ('versions') são editados através de formulários dedicados.

Qualquer alteração feita através do painel administrativo atualiza automaticamente o campo updated_at.


Para modificar um valor JSON existente, use a função jsonb_set.

Exemplo: Alterar a taxa (fee_rate) dentro da chave 'configurations' (supondo id = 2).

UPDATE systems
SET value = jsonb_set(value::jsonb, '{fees_rate}', '0.015'::jsonb),
updated_at = CURRENT_TIMESTAMP AT TIME ZONE 'America/Sao_Paulo'
WHERE id = 2 AND key = 'configurations';

Para remover um parâmetro obsoleto:

DELETE FROM systems WHERE key = 'old_key' AND status = 'ACTIVE';

Abaixo estão detalhadas as principais chaves utilizadas na tabela systems:

  • Propósito: Controla listas de permissões, como IPs autorizados.
  • JSON: {"active": boolean}
  • Exemplo: {"active": false}
  • Operação: Editável via painel admin (“Segurança”) ou SQL.
  • Propósito: Define os tempos de expiração (em segundos) para tokens de autenticação e OTPs.
  • JSON: {"otp": int, "auth": int, "refresh": int}
  • Exemplo: {"otp": 180, "auth": 1800, "refresh": 3600}
  • Operação: Ajustável via painel admin (“Autenticação”).
  • Propósito: Gerencia a visibilidade de elementos na UI, como botões e seções.
  • JSON: {"pages": {"onboarding": {"button_pf": boolean, "button_pj": boolean}}}
  • Exemplo: {"pages": {"onboarding": {"button_pf": true, "button_pj": true}}}
  • Operação: Editável via painel admin.
  • Propósito: Permite bloquear o login por canal (ex: mobile, web).
  • JSON: {"mobile": boolean, "administrator": boolean}
  • Exemplo: {"mobile": false, "administrator": false}
  • Operação: Geralmente via SQL para manutenções emergenciais.
  • Propósito: Armazena chaves criptográficas, como pares de chaves pública/privada.
  • JSON: {"public_key": string, "private_key": string}
  • Exemplo: Chaves no formato PEM.
  • Operação: Edição cuidadosa via painel admin.
  • Propósito: Define botões personalizados no dashboard do cliente.
  • JSON: [{"type": string, "label": string, "value": URL}, ...]
  • Exemplo: Botões para download de extratos CNAB ou acesso a um portal externo.
  • Operação: Editável via painel admin ou SQL.
  • Propósito: Define a conta bancária vinculada para recebimento de taxas.
  • JSON: {"body": {"owners": [...], "businessName": string, ...}}
  • Exemplo: Dados completos da conta da CSB Crie Seu Banco Digital.
  • Operação: Editável via painel admin.
  • Propósito: Armazena informações corporativas e de branding.
  • JSON: {"cors": string, "logo": URL, ...}
  • Exemplo: Dados da CSBBenk, incluindo domínios permitidos (CORS) e logos.
  • Operação: Editável via painel admin.
  • Propósito: Rastreia as versões de componentes da plataforma (API, mobile, etc.).
  • JSON: {"api": string, "mobile": string, ...}
  • Exemplo: {"api": "2.5.0", "mobile": "1.7.0"}
  • Operação: Atualizado via painel admin após cada deploy.
  • Propósito: Agrupa configurações gerais, como ativação de taxas e integrações.
  • JSON: {"fees": boolean, "castle": boolean, ...}
  • Exemplo: Ativa ou desativa a cobrança de taxas ou a integração com o Castle.
  • Operação: Editável via painel admin.
  • Propósito: Lista de documentos (CPFs/CNPJs) que podem ignorar a verificação OTP.
  • JSON: [string, ...]
  • Exemplo: ["54769222000100"]
  • Operação: Editável via painel admin para fins de teste ou suporte.
  • Propósito: Define os estilos visuais da plataforma (whitelabel).
  • JSON: {"style": {"colors": {...}, "images": {...}}, ...}
  • Exemplo: Paleta de cores, logos e imagens de fundo.
  • Operação: Editável via painel admin para customização de temas.