Pular para conteúdo

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.ts
  • components/{DadosPessoaisSection,HistoricoMesaSection,PreAprovacoesSection,PropostasSection,DocumentosSection}.tsx
  • domains/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.