Skip to main content

Entidade: Tenant

Camada: Domínio — Define o que o objeto é, seus atributos e relacionamentos.

Regras de comportamento: ver Regras de Negócio/Módulo 02: Multi-Tenant & Configuração


1. Definição

Um Tenant é uma empresa que contrata o CRM como plataforma. Representa o nível mais alto de isolamento de dados: tudo no sistema pertence a um tenant e nenhum dado vaza entre tenants distintos.


2. Atributos Principais

CampoTipoObrigatórioNotas
idUUIDSimGerado pelo sistema
subdominiostringSimEx: empresa.crm.com. Imutável após criação
razao_socialstringSimNome jurídico da empresa
nome_fantasiastringNãoUsado na interface e nos e-mails
cnpjstringSimValidado por dígito verificador
logo_urlstringNãoURL pública do logotipo
cor_primariastringNãoHex. Usada no white-label
cor_secundariastringNãoHex. Usada no white-label
statusenumSimPENDENTE_SETUP, ATIVO, SUSPENSO, CANCELADO
plano_contratadostringSimReferência ao plano de assinatura da plataforma
created_attimestampSimImutável após criação

3. Configurações do Tenant (Agregado)

O tenant possui um objeto de configuração associado com todas as regras comportamentais da empresa:

ConfiguraçãoTipoDescrição
hierarquia_max_niveisintLimite de profundidade para produção em cascata
lead_alerta_ociosidade_diasintDias sem interação para disparar alerta
lead_expiracao_diasintDias até expiração automática do lead
proposta_validade_diasintValidade máxima de uma proposta enviada
desconto_max_consultor_pctfloat% máximo de desconto que um consultor pode conceder
desconto_max_gestor_pctfloat% máximo de desconto que um gestor pode conceder
fipe_modoenumCACHE_LOCAL, API_EXTERNA, API_COM_FALLBACK
vistoria_self_serviceboolPermite link de vistoria enviado ao cliente
vistoria_presencialboolPermite vistoria feita pelo consultor
vistoria_aprovacao_gerencialboolLaudo precisa de aprovação do gestor antes da assinatura
registro_modoenumCONVITE (padrão) ou ABERTO
senha_complexidadeenumMEDIA ou FORTE
plano_sincronismo_financeiroenumCOMPLETO (escuta webhooks do ERP e gerencia inadimplência/suspensão no CRM) ou UNIDIRECIONAL (apenas envia a venda; inadimplência e cobrança são tratadas estritamente no ERP, mantendo o status ATIVO no CRM)

4. Relacionamentos

Tenant ──── possui ──── Usuários (1:N)
Tenant ──── possui ──── Times (1:N)
Tenant ──── possui ──── Leads (1:N)
Tenant ──── possui ──── Clientes (1:N)
Tenant ──── possui ──── Contratos (1:N)
Tenant ──── possui ──── Planos (1:N)
Tenant ──── possui ──── Configurações (1:1)
Tenant ──── possui ──── Integrações (1:N)

Legenda de Cardinalidade:

  • 1:N (Um para Muitos): Um único registro deste domínio possui múltiplos registros filhos associados (ex: um tenant possui vários usuários e leads).
  • 1:1 (Um para Um): Relação exclusiva e de correspondência única (ex: um tenant possui exatamente um único registro de configurações ativas).

5. Estados do Ciclo de Vida


6. Invariantes (Restrições Absolutas)

  • O subdominio é imutável após a criação do tenant.
  • Nenhum dado do tenant é acessível pelo SUPER_ADMIN exceto status, subdominio e dados de faturamento da plataforma (não do negócio do cliente).
  • O tenant só assume o status ATIVO após o Admin concluir o Wizard de onboarding completo.