Ficha do Contato¶
O que é¶
Tela central de um contato — /contatos/:id — reunindo em abas tudo que o time Comercial e
a Mesa precisam saber e fazer sobre uma pessoa: dados pessoais, negócios no funil, histórico
na mesa de análise, pré-aprovações, propostas, operações vinculadas, documentos e a análise de
crédito (Open Finance) propriamente dita. É a tela que o kanban-comercial abre quando o
usuário clica "Abrir perfil do contato" no drawer do card, ou os atalhos ▶/👁/+ da Mesa.
Como funciona¶
A aba ativa é controlada pelo query param ?tab=… (sync bidirecional com a URL — trocar de
aba atualiza a URL sem recarregar a página, e a URL pode abrir direto numa aba específica).
Abas disponíveis (VALID_TABS): dados-pessoais (default), negociacoes, historico-mesa,
pre-aprovacoes, propostas, operacoes, documentos, analise-credito.
No header: nome, CPF, badges de origem/ocupação/banco, tags computadas (Open Finance, status
da mesa, Negado, Com Proposta, Cliente, Aguardando Assinatura, Completo/Incompleto, nº de
documentos, Novo), botão Abrir no Chatwoot (se o contato tem chatwoot_id — abre
https://chat.menosjuros.com/app/accounts/1/contacts/:chatwoot_id em nova aba, app externo)
e Excluir (com confirmação).
Aba Análise de Crédito (?tab=analise-credito&analise_id=…)¶
É a aba que os botões rápidos da Mesa no card do kanban-comercial abrem diretamente (▶
Iniciar análise, 👁 Ver análise, + Criar proposta — todos navegam para
/contatos/:contatoId?tab=analise-credito&analise_id=:analiseId em nova aba). Mostra os
relatórios de Open Finance do contato (rendas, contas, transações, débitos concorrentes,
despesas recorrentes, risk insights) quando o provedor é Belvo; para Klavi (ou contato sem
Open Finance) mostra um estado vazio apontando para o console Klavi.
Quando a URL carrega analise_id, um card sticky de ações (StickyAcoesAnalise) fica
fixo no rodapé da aba e decide o que mostrar pelo status da análise
(contatos_mesa.status) + quem é o analista atual:
- Em análise (não iniciada) → botão "Iniciar análise" (trava o contato, vira analista).
- Analisando + sou eu → botões Recusar, Enviar para CCB (pula a criação de
proposta, muda o status direto para "Envio da CCB") e Aprovar (abre o dialog de criar
proposta; "Salvar e Adicionar Nova" permite criar mais de uma proposta na mesma aprovação).
- Analisando + outro analista → banner informativo, sem ação.
- Aprovado / Negado → banner com quem decidiu, quando, e o motivo da recusa.
- Outros status (Pendência, Aguardando aceite, Envio da CCB) → banner neutro.
Após decidir (aprovar/recusar/enviar pra CCB), a aba tenta fechar a própria janela (fluxo
comum: aberta via window.open pela fila da Mesa ou pelo card do board); se o browser não
deixar fechar, navega de volta para /credito/analise/em-analise.
Aba Negociações¶
Aba read-only que lista os negócios (agregado negocio) do contato — o ativo em
destaque + o histórico de negócios encerrados (arquivados/concluídos) — usando o mesmo
componente NegocioCardReadOnly do kanban-comercial. Busca via
GET /v2/comercial/negocios/por-contato/:id/todos (query lazy, só dispara quando a aba está
aberta). Para cada negócio mostra Pipeline (badge Comercial/Mesa) + Etapa
(ver pipe-e-etapa). O negócio ativo tem o botão "Abrir no Pipeline", que usa o helper
rotaDoBoardNegocio (domains/comercial/negocios/utils/rota-board.ts) para calcular a rota
certa (/comercial/kanban-comercial, /comercial/kanban-mesa ou /comercial/kanban-mesa-f2,
conforme pipe/etapa do card) e abre o board já filtrado por esse contato
(?q=<cpf>) — o caminho de volta do perfil do contato para o board de onde ele provavelmente
veio. Histórico (negócios não-ativos) não tem esse atalho — só o board atual expõe o card.
Outras abas¶
- Dados Pessoais (default) — dados cadastrais editáveis (endereço, telefone, bancarização etc.) e dados complementares.
- Histórico Mesa — tabela do histórico de passagens do contato pela mesa de análise (status por período) e recusas registradas.
- Pré-Aprovações — sessões de pré-aprovação do contato (produto, resultado, detalhes expansíveis).
- Propostas — lista as propostas do contato (produto, valores, datas de aceite/pagamento), com atalho para criar nova proposta.
- Operações — operações bancárias vinculadas ao contato e às contas cadastradas.
- Documentos — lista/upload de documentos do contato (usada também para alimentar a etapa
de bancarização — ver
funcionalidades/aguardando-documentacao).
Regras de negócio¶
⚠️ A documentar. Esta tela ainda não tem as regras de negócio levantadas do código.
O que entra aqui: invariante (o que nunca pode acontecer), permissão (quem pode fazer o quê), bloqueio (o que impede a ação e a mensagem que o usuário vê), cálculo (fórmula e arredondamento) e efeito colateral (o que mais muda quando isso acontece).
Regra só entra aqui com origem no código — arquivo e linha. Regra que alguém "acha que é assim" é pior que seção vazia, porque vira decisão de produto baseada em memória.
Onde vive no código¶
- CRM:
apps/crm-menos-juros/client/src/pages/contatos/central/index.tsx(shell + tabs) components/AnaliseCreditoSection.tsx+components/analise-credito/StickyAcoesAnalise.tsx(aba Análise de Crédito)components/NegociacoesSection.tsx(aba Negociações) +domains/comercial/negocios/hooks/use-negocios-do-contato.ts+domains/comercial/negocios/utils/rota-board.tscomponents/{DadosPessoaisSection,HistoricoMesaSection,PreAprovacoesSection,PropostasSection,DocumentosSection}.tsxdomains/core/contatos/components/OperacoesSection.tsx- Rota:
/contatos/:id,apps/crm-menos-juros/client/src/routes/AppRoutes.tsx - API:
GET /v2/comercial/negocios/por-contato/:id/todos(aba Negociações)
Relacionado¶
kanban-comercial · negocio · pipe-e-etapa · proposta · comercial · mesa · analise-de-credito
Histórico¶
- 2026-07-10: primeira ingestão desta funcionalidade no wiki, a partir do mapeamento das telas alcançadas por clique a partir do Kanban Comercial.