Skip to main content

Entidade: Time

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

Regras de comportamento: ver Regras de Negócio/Módulo 03: Hierarquia de Times


1. Definição

Um Time é a unidade organizacional do CRM comercial. Representa um grupo de consultores liderado por um único Gestor. Os times formam uma árvore hierárquica com profundidade dinâmica (N1 a N), onde o limite de níveis é configurável por tenant e cada time possui um Padrinho (o gestor do time superior).


2. Atributos Principais

CampoTipoObrigatórioNotas
idUUIDSimGerado pelo sistema
tenant_idUUIDSimFK → Tenant
nomestringSimNome do time (ex: "Time Alpha")
lider_idUUIDSimFK → Usuário com papel GESTOR
padrinho_idUUIDNãoFK → Time pai. null para o time raiz (N1)
nivelintSimProfundidade na hierarquia (1 = raiz)
statusenumSimATIVO, INATIVO
created_attimestampSimImutável após criação

3. Estrutura Hierárquica

Tenant
└── Time N1 (Padrinho = null)
└── Time N2 (apadrinhado pelo N1)
└── Time N3 (apadrinhado pelo N2)
└── Time N4 ...
  • Cada time tem exatamente um líder e no máximo um padrinho.
  • Um líder só pode apadrinhar times que estejam no nível imediatamente abaixo (nível N+1) e que tenham sido fundados por consultores vindos de dentro do seu próprio time de nível N. É proibido o apadrinhamento cruzado entre ramificações independentes de mesmo nível (ex: o líder do time A no nível 2 não pode apadrinhar um consultor que se emancipou do time B também de nível 2). O vínculo padrinho_id deve sempre respeitar a linhagem de pertinência direta.

4. Relacionamentos

Time ──── pertence a ──── Tenant (N:1)
Time ──── possui ─────── Líder (N:1 → Usuário)
Time ──── tem acima ──── Padrinho (N:1 → Time, nullable)
Time ──── tem abaixo ─── Times apadrinhados (1:N → Time)
Time ──── contém ─────── Membros (1:N → Usuário)

Legenda de Cardinalidade:

  • N:1 (Muitos para Um): Múltiplos registros deste domínio apontam para um mesmo registro de destino (ex: vários times pertencem ao mesmo tenant).
  • 1:N (Um para Muitos): Um único registro deste domínio possui múltiplos registros filhos associados (ex: um time possui vários membros/usuários).

5. Visibilidade por Papel

PapelO que enxerga
CONSULTORApenas a própria carteira de leads/clientes
GESTORCarteira própria + carteira de todos os membros do seu time
PADRINHOTudo do seu time + produção consolidada dos times apadrinhados
ADMINToda a árvore do tenant

Consultores de times no mesmo nível (irmãos) não enxergam a carteira uns dos outros.


6. Invariantes (Restrições Absolutas)

  • Todo CONSULTOR e GESTOR pertence a exatamente um time — estado órfão não existe.
  • O lider_id aponta para um Usuário com papel GESTOR ou ADMIN.
  • Ao remover um líder, todos os membros e sub-times abaixo sobem automaticamente para o padrinho do líder removido (ver Regras de Negócio/Módulo 03: Hierarquia de Times - Seção 5).
  • Um time não pode ser criado sem um líder definido.