testes/.agent/project/GR_BUGS_FIXES.md

145 lines
5.0 KiB
Markdown

# 🐛 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 (
<div
onClick={onClick}
draggable={!isBlocked}
onDragStart={handleDragStart}
// ...
>
```
#### 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 (
<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