Pular para conteúdo

Atribuição de negócio

O que é

Quem é o dono de um negocio no kanban-comercial — quatro mecanismos que respondem "de quem é esse card": Pegar (self-assign), Desatribuir, Reatribuir (só admin) e a herança automática de dono ao entrar no pipe Comercial. Sem isso, todo card chegaria "sem dono" e o time perderia tempo decidindo quem toca cada negociação.

Como funciona

Pegar (self-assign)

Botão do card no pipe Comercial, na etapa Aguardando Apresentação. Chama POST /v2/comercial/propostas/contatos/:contatoId/atribuir — emite proposta.atribuida, que define responsavelAtualId = quem clicou e avança o card para Em Negociação. Só no pipe Comercial (a Mesa não tem "Pegar" — lá o responsável é o analista que inicia a análise).

Desatribuir

DELETE .../atribuir — só o próprio responsável vê a opção "Desatribuir de mim" no menu ⋮ do card (CardMenu.tsx só renderiza o item quando card.responsavelAtualId === user.id). Limpa o responsável sem mudar de coluna — o card fica sem dono na mesma etapa, pronto para outro operador pescar.

Reatribuir (admin)

POST /v2/comercial/negocios/:id/reatribuirúnico endpoint do domínio Negócio protegido por AdminGuard (todos os outros usam KanbanPermissaoGuard/RequerKanban). Só admin/super admin veem a opção no menu ⋮ (useEhAdmin() no front). Troca o responsável para qualquer operador escolhido, sem mudar a etapa — é um override de gestão, não uma ação do próprio dono.

Herança de dono ao entrar no Comercial

Quando um negócio transita de Mesa para Comercial (analise.aprovada / proposta.criada), o processor (NegocioEventosProcessor) verifica se as propostas do contato já tinham um responsável comercial único (self-assign feito na tela legada de Propostas, fora do pipe, antes do card existir no board). Se houver dono único, ele é herdado automaticamente — o card já entra em Em Negociação com o responsável certo, em vez de aparecer "sem dono" e provocar um conflito 409 no primeiro "Pegar". Se não houver responsável, ou houver mais de um divergente (ambíguo), o card entra sem dono e segue o fluxo normal de "Pegar". A herança é best-effort: se falhar, o negócio já transitou mesmo assim (a reconciliação cron cobre esses casos).

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

  • Front: apps/crm-menos-juros/client/src/domains/comercial/negocios/hooks/use-acoes-card.ts (pegar, desatribuir, reatribuir), api/negocios-api.ts, pages/comercial/kanban/components/CardMenu.tsx.
  • API: apps/api-menos-juros/src/v2/comercial/negocios/presentation/controllers/negocios.controller.ts (POST :id/reatribuir com @UseGuards(AdminGuard)), infrastructure/processors/negocio-eventos.processor.ts (herança, método que chama responsavelComercialDoContato), domain/ports/negocio-repository.port.ts.

Relacionado

kanban-comercial · negocio · pipe-e-etapa · comercial · mesa

Histórico

  • 2026-07-10: primeira ingestão, a partir do código atual (hooks + controller + processor).