5.0 KiB
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
iddriverscomo identificador único - O matching é feito por
iddrivers, não pornome_completo - Os dados fornecidos mostram
iddriversdiferentes (14 vs 55), confirmando que são registros distintos
Correção Aplicada
- ✅ Adicionados comentários explicativos na lógica de
cadastrosAbertosDataemContractsView.jsx - ✅ Adicionada verificação adicional para garantir que
iddriversnão sejanullantes de fazer o matching - ✅ Documentação clara de que o matching é feito por
iddriverse não pornome_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
onClicknormalmente
Correção Aplicada
- ✅ Adicionada função
handleClickno componenteGrKanbanCardque 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
iddriversnão sejanull - Cadastros com nomes similares mas
iddriversdiferentes 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
- Matching por iddrivers: O sistema sempre usou
iddriverspara matching, mas agora está mais explícito e documentado - Bloqueio de cards: O bloqueio funciona tanto para drag quanto para click
- Compatibilidade: As correções são retrocompatíveis e não afetam funcionalidades existentes
🔍 Testes Recomendados
-
Bug 1:
- Criar um cadastro com nome similar a um contrato existente mas com
iddriversdiferente - Verificar se o cadastro aparece na coluna "Cadastros Abertos"
- Verificar se ao criar um contrato para esse cadastro, ele desaparece da coluna
- Criar um cadastro com nome similar a um contrato existente mas com
-
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