Blog · 11 min de leitura

Identidade ancorada em SaaS multi-tenant: quando uma pessoa veste muitos papéis

Um cliente que vira funcionário, ou um dono que vira cliente, continua sendo a mesma pessoa — o sistema precisa saber disso.
Por · publicado em

Estudo de caso · engenharia de plataformas. Metodologia Meta Dados (Genba · Kanso · Omotenashi).

Resumo. Em SaaS multi-tenant do domínio de serviços, o mesmo ser humano aparece como cliente, funcionário e dono — às vezes em vários estabelecimentos. Modelamos esse problema como um grafo de identidade ancorada: uma entidade global (a pessoa, ancorada pelo CPF) para a qual convergem vínculos denormalizados por tenant. Um experimento controlado, executado no banco de produção sob transação com ROLLBACK, mostra que a identidade unifica corretamente pelo CPF, mas que o dado denormalizado diverge silenciosamente entre tabelas e que uma classe de portas que cria login "inline" com CPF nulo parte um humano em duas identidades. Descrevemos duas intervenções verificadas e derivamos princípios reutilizáveis.

1. Introdução

Plataformas de agendamento tratam três entidades como cidadãs de primeira classe — cliente, funcionário e estabelecimento — cada uma com sua chave natural: o cliente é reconhecido pelo telefone; o funcionário exige CPF; o estabelecimento identifica-se por CNPJ + e-mail (ou CPF, no autônomo). O problema surge porque essas três não são disjuntas: um cliente pode ser contratado e virar funcionário; um cliente pode abrir o próprio negócio; um dono pode agendar como cliente em outro salão. O sistema precisa que a informação trafegue entre as tabelas e se mantenha coerente, sem dado vital divergente em cadastros diferentes.

Tratamos a plataforma Marcaê como estudo de caso, mas o modelo e os achados são gerais: valem para qualquer SaaS onde um indivíduo assume papéis heterogêneos ao longo do tempo e entre inquilinos.

2. O modelo: identidade ancorada

A ideia central é separar identidade de papel. A pessoa é uma entidade global — sem tenant, ancorada por uma chave forte (o CPF normalizado). Cada vínculo (cliente, funcionário, usuário) carrega uma cópia denormalizada dos campos vitais e uma chave estrangeira person_id apontando para a pessoa. Um gatilho de banco (vincular_pessoa_por_cpf) faz o find-or-create: ao gravar um vínculo com CPF válido, ele associa (ou cria) a pessoa daquele CPF e fixa o person_id. Sem CPF válido, a identidade é local ao tenant.

ESTAB. AESTAB. BClienteFuncionárioDonoClientePESSOACPF único · âncoranome · email · telsem CPF → identidade local ao tenant
Grafo de identidade ancorada: vínculos de múltiplos tenants convergem (fan-in) para uma única pessoa via person_id. Sem CPF, o vínculo permanece isolado no tenant.

3. Invariantes e métrica de divergência

O modelo deve garantir dois invariantes. O primeiro é a unificação de identidade (I1): dois vínculos com o mesmo CPF válido apontam para a mesma pessoa. O segundo é a completude de papéis (I2): a pessoa conhece todos os papéis (tenant + papel) derivados de seus vínculos.

Para medir a coerência dos dados vitais (nome, e-mail, telefone), definimos uma taxa de divergência δ: a fração de pessoas em que algum campo vital tem mais de um valor não-vazio entre a âncora e seus vínculos. δ = 0 é o alvo — a pessoa é a fonte única da verdade.

4. O defeito da identidade partida

Uma classe de portas cria a conta de login "inline" (junto com o cliente) usando uma ancoragem que ignora o CPF — na prática, cria uma pessoa nova, sempre. Se um humano passa por uma porta que ancora e por uma porta que não ancora, ele passa a ser representado por duas pessoas — violando I1. A taxa de partição σ cresce proporcionalmente ao uso das portas que não ancoram. É o defeito de maior severidade, porque, uma vez partida, a identidade só se reconcilia por operação manual/SQL.

5. Metodologia e resultados

Adotamos Genba — ir ao chão de fábrica: em vez de raciocinar sobre o modelo pretendido, exercitamos o modelo real. Duas técnicas: (1) leitura exaustiva das 15 portas onde nasce ou se transforma um cliente/funcionário/usuário/dono, registrando o que cada uma escreve e se ancora no CPF; (2) simulação transacional — instanciamos jornadas de identidade direto no banco de produção, dentro de BEGIN … ROLLBACK: o gatilho de ancoragem dispara de verdade, mas nada persiste.

Os resultados confirmaram o modelo e flagraram onde ele falha:

6. Intervenções

Deduplicação como relação de equivalência. A regra antiga colapsava dois cadastros só pelo telefone; a nova exige telefone E nome normalizados. Assim, dois humanos distintos que compartilham um telefone (a mãe que agenda pelo próprio celular para o filho) deixam de ser fundidos por engano.

Mesclagem como fold campo-a-campo. Quando dois cadastros são de fato a mesma pessoa, a fusão deixa de ser "escolha um e descarte o outro" e passa a ser resolução por campo: uma tabela de diferenças apresenta cada campo divergente lado a lado, e o operador escolhe o valor que fica no sobrevivente. A ordem importa — religar as referências e arquivar os removidos antes de aplicar a escolha — senão o índice único parcial colide. Fusão que perde dado é regressão; fusão campo-a-campo preserva o melhor de cada cadastro.

7. Discussão e princípios

O caso ilustra um trade-off recorrente: denormalizar campos vitais nos vínculos torna cada tela rápida e autônoma, ao custo de coerência; manter a pessoa como fonte única da verdade elimina a divergência, ao custo de acoplamento na leitura. Princípios reutilizáveis para qualquer plataforma multi-tenant com identidade compartilhada:

8. Conclusão

A identidade do Marcaê unifica corretamente quando há CPF — a âncora funciona e é robusta a transições de papel. A classe de portas que partia a identidade foi fechada por gatilho no banco (a reconciliação garante que a conta siga a pessoa do CPF, a mesclagem deixou de gerar login órfão, e a âncora passou a aprender os vitais que lhe faltavam). Resta apenas a fonte-única-da-verdade plena — decisão de projeto, não defeito. O ganho não é só técnico: é a garantia de que um cliente que vira funcionário, ou um dono que vira cliente, continua sendo a mesma pessoa em todo o sistema.

Sistemas que conectamos aqui

Perguntas frequentes

Por que não usar só o telefone para identificar a pessoa?

Porque telefone não é uma chave forte de pessoa: dois humanos distintos compartilham um número (a mãe que agenda pelo próprio celular para o filho), e uma pessoa troca de número. Ancorar pelo CPF (chave forte, única por indivíduo) e usar telefone+nome apenas como relação de deduplicação evita fundir humanos diferentes por engano.

Isso vale só para agendamento ou para qualquer SaaS?

O modelo é geral. Vale para qualquer SaaS multi-tenant onde um mesmo indivíduo assume papéis heterogêneos ao longo do tempo e entre inquilinos — marketplaces, plataformas de saúde, educação, gestão condominial. O princípio "uma âncora, uma chave; papel é estado, não identidade" transporta entre domínios; o que muda é a chave forte e o conjunto de campos vitais.

Comece sem custo

Sua plataforma tem o mesmo humano em cadastros divergentes? Diagnóstico gratuito em 48h.

Mapeamos seus sistemas atuais, apontamos os maiores gargalos e entregamos um plano priorizado por risco × esforço. Você sai com clareza — usando ou não a Meta Dados.

Quero meu diagnóstico → Falar no WhatsApp Sem compromisso, sem cartão.
Respondemos em até 2 horas úteis.
←  Voltar para Blog