# 🐛 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 ```javascript 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 ```javascript // 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 ```javascript return (
``` #### Código Depois ```javascript 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 (
``` --- ## ✅ 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