RESUMO EXECUTIVO - Compatibilidade Frontend/API
RESUMO EXECUTIVO - Compatibilidade Frontend/API
Status Geral: 🔴 CRÍTICO - NÃO RECOMENDADO PARA PRODUÇÃO
Erros Críticos Encontrados
1. 🔴 CAMPO QUANTIDADE NÃO É MAPEADO CORRETAMENTE
Arquivo: /apps/producer/components/order/wizard/Step2Products.vue
Problema:
- Interface declara:
quantidade: number(linha 23) - Template usa:
v-model.number="item.quantity"(linha 222) - Sincronização envia:
quantidade: item.quantity→ UNDEFINED!
Consequência: Produtos chegam na API com quantidade = 0 ou undefined
Solução: Padronizar nomenclatura
// Opção 1: Renomear em todo lugar para "quantity"
interface ProdutoItem {
quantity: number; // mudar
}
v-model.number="item.quantity" // OK
// Opção 2: Renomear em todo lugar para "quantidade"
v-model.number="item.quantidade" // mudar
2. 🔴 FALTA VALIDAÇÃO COMPLETA NA API
Arquivo: /apps/api/app/Http/Requests/StoreOrderRequest.php
Campos não validados:
bidding_type- deveria ser enum (open|closed)customer_address_id- deveria validar EXISTSfreight_type- deveria ser enum (cif|fob)deadline_mode- deveria ser enum (general|specific)condicao_pagamento- valores válidos?
Consequência: Dados inválidos são salvos no banco
Solução: Adicionar regras de validação
'bidding_type' => 'required|in:open,closed',
'freight_type' => 'required|in:cif,fob',
'customer_address_id' => 'required|integer|exists:customer_addresses,id',
'deadline_mode' => 'in:general,specific',
'condicao_pagamento' => 'in:avista,parcelado,a_combinar',
Problemas de Design
3. 🟡 CAMPO DESCRIPTION FIXO
Arquivo: /apps/producer/composables/useWizardOrder.ts (linha 393)
Problema: Description sempre é "Rascunho de licitação"
API Valida: min:50|max:1000
Solução: Adicionar campo customizável no Step 1
4. 🟡 INCONSISTÊNCIA DE NOMES DE CAMPOS
Problema:
- StoreOrderRequest espera:
data_limite_cotacao - saveDraft envia:
deadline_date - Diferentes convenções causam confusão
Solução: Padronizar em toda a API
Matriz de Status por Step
| Step | Componente | Status | Problema |
|---|---|---|---|
| 1 | BasicInfo | ✅ OK | Nenhum |
| 2 | Products | 🔴 CRÍTICO | quantidade undefined |
| 3 | Deadlines | ✅ OK | Nenhum |
| 4 | Location | ✅ OK | Nenhum |
| 5 | Review | ✅ OK | Nenhum |
| API | saveDraft | 🔴 CRÍTICO | Validação faltando |
Checklist de Correção
FAZER IMEDIATAMENTE:
- Step2Products.vue: Corrigir
item.quantity→item.quantidade - StoreOrderRequest.php: Adicionar validações faltantes
- useWizardOrder.ts: Permitir customizar description
- Testar fluxo completo end-to-end
DEPOIS:
- Padronizar nomes de campos na API
- Adicionar testes para validações
- Documentar contrato API
- Usar TypeScript strict mode
Impacto por Usuário
Cenário 1: Criando licitação com 5 produtos
Resultado Esperado: 5 produtos salvos com quantidade Resultado Real: 5 produtos salvos com quantidade = 0 ou undefined Status: 🔴 FALHA
Cenário 2: Enviando dados inválidos
Resultado Esperado: Validação rejeita dados inválidos Resultado Real: Dados inválidos são salvos no banco Status: 🔴 FALHA
Cenário 3: Salvando rascunho sem descrição
Resultado Esperado: Erro (description obrigatória) Resultado Real: "Rascunho de licitação" salvo automaticamente Status: ⚠️ PARCIAL (funiona mas não é ideal)
Tempo Estimado de Correção
| Tarefa | Tempo | Prioridade |
|---|---|---|
| Corrigir quantity → quantidade | 15 min | ALTA |
| Adicionar validações API | 30 min | ALTA |
| Corrigir description | 20 min | MÉDIA |
| Testes end-to-end | 45 min | ALTA |
| Padronizar nomes campos | 20 min | MÉDIA |
| TOTAL | 2h 10min |
Recomendação Final
Não proceder com qualquer deploy até:
- ✅ Campo quantidade ser mapeado corretamente
- ✅ Validações serem adicionadas na API
- ✅ Testes end-to-end passarem
Próximos Passos
- Revisar relatório completo:
COMPATIBILITY_REPORT.md - Corrigir erros críticos
- Rodar suite de testes
- Realizar teste de integração
- Deploy com confiança
Relatório Completo: Veja COMPATIBILITY_REPORT.md
Gerado em: 2024-12-22