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/reatribuircom@UseGuards(AdminGuard)),infrastructure/processors/negocio-eventos.processor.ts(herança, método que chamaresponsavelComercialDoContato),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).