testes/.agent/project/GR_BUGS_FIXES.md

5.0 KiB

🐛 Correções de Bugs - Módulo GR

Data: 2026-01-28

Bug 1: Matching de Cadastros Abertos com Contratos

Problema Relatado

Na tela de contratos, dentro da coluna "Cadastros Abertos", foi criado um novo cadastro com nome "Daivid Alexandre" enquanto já existia um contrato com nome "Daivid". O sistema estava fazendo matching incorreto.

Análise

Após análise do código, verificamos que:

  • A lógica de matching já estava correta, usando iddrivers como identificador único
  • O matching é feito por iddrivers, não por nome_completo
  • Os dados fornecidos mostram iddrivers diferentes (14 vs 55), confirmando que são registros distintos

Correção Aplicada

  • Adicionados comentários explicativos na lógica de cadastrosAbertosData em ContractsView.jsx
  • Adicionada verificação adicional para garantir que iddrivers não seja null antes de fazer o matching
  • Documentação clara de que o matching é feito por iddrivers e não por nome_completo

Arquivo Modificado

  • src/features/gr/views/ContractsView.jsx (linhas 122-140)

Código Antes

const cadastrosAbertosData = useMemo(() => {
  const contractDriverIds = contractsData.map(c => c.iddrivers);
  
  return registrations.filter(r => {
    const hasContract = contractDriverIds.includes(r.iddrivers);
    // ...
  });
}, [registrations, contractsData]);

Código Depois

// IMPORTANTE: O matching é feito por iddrivers (identificador único), NÃO por nome_completo
// Isso garante que cadastros com nomes similares mas iddrivers diferentes sejam tratados corretamente
const cadastrosAbertosData = useMemo(() => {
  // Extrair todos os iddrivers que possuem contrato criado
  const contractDriverIds = contractsData.map(c => c.iddrivers).filter(id => id != null);
  
  return registrations.filter(r => {
    // Verificar se este cadastro (por iddrivers) já possui um contrato criado
    const hasContract = r.iddrivers != null && contractDriverIds.includes(r.iddrivers);
    // ...
  });
}, [registrations, contractsData]);

Bug 2: Click Habilitado em Cards Bloqueados

Problema Relatado

Na tela de cadastros, na coluna "Aguardando Análise", cadastros com modalidade "Rentals" ou "Agregado" que estão bloqueados (aguardando contrato assinado) ainda permitiam click, permitindo:

  • Edição pelo painel de detalhes
  • Movimentação do card (que já estava bloqueada)

Análise

  • O bloqueio de movimento já estava implementado corretamente
  • O bloqueio de click não estava implementado
  • Cards bloqueados ainda executavam o onClick normalmente

Correção Aplicada

  • Adicionada função handleClick no componente GrKanbanCard que verifica se o card está bloqueado
  • Se bloqueado, o click é prevenido e não executa o onClick
  • Mantida a lógica de bloqueio de drag já existente

Arquivo Modificado

  • src/features/gr/components/GrKanbanCard.jsx (linhas 48-61)

Código Antes

return (
  <div 
    onClick={onClick}
    draggable={!isBlocked}
    onDragStart={handleDragStart}
    // ...
  >

Código Depois

const handleClick = (e) => {
  // Se o card estiver bloqueado, não permitir click
  if (isBlocked) {
    e.preventDefault();
    e.stopPropagation();
    return;
  }
  // Se não estiver bloqueado, executar o onClick normalmente
  onClick?.(e);
};

return (
  <div 
    onClick={handleClick}
    draggable={!isBlocked}
    onDragStart={handleDragStart}
    // ...
  >

Resultado

Bug 1

  • Matching agora está explicitamente documentado como sendo por iddrivers
  • Verificação adicional garante que iddrivers não seja null
  • Cadastros com nomes similares mas iddrivers diferentes são tratados corretamente como registros distintos

Bug 2

  • Cards bloqueados (Agregado/Rentals sem contrato assinado) não permitem mais click
  • Usuário não consegue mais abrir o painel de edição para cards bloqueados
  • Bloqueio de movimento já existente foi mantido

📝 Notas Técnicas

  1. Matching por iddrivers: O sistema sempre usou iddrivers para matching, mas agora está mais explícito e documentado
  2. Bloqueio de cards: O bloqueio funciona tanto para drag quanto para click
  3. Compatibilidade: As correções são retrocompatíveis e não afetam funcionalidades existentes

🔍 Testes Recomendados

  1. Bug 1:

    • Criar um cadastro com nome similar a um contrato existente mas com iddrivers diferente
    • Verificar se o cadastro aparece na coluna "Cadastros Abertos"
    • Verificar se ao criar um contrato para esse cadastro, ele desaparece da coluna
  2. Bug 2:

    • Criar um cadastro com modalidade "Rentals" ou "Agregado"
    • Verificar se o card aparece bloqueado na coluna "Aguardando Análise"
    • Tentar clicar no card e verificar se o painel não abre
    • Tentar arrastar o card e verificar se não move
    • Criar e assinar um contrato para esse cadastro
    • Verificar se o card deixa de estar bloqueado e permite click/movimento