š§ Solução: Licitação nĆ£o aparece no dashboard do fornecedor
š§ Solução: Licitação nĆ£o aparece no dashboard do fornecedor
š Problema Identificado
Licitação publicada (LC-2025-0007) não aparecia no dashboard do fornecedor, mesmo estando corretamente configurada no banco de dados.
š Diagnóstico
1. Verificação realizada:
ā Licitação existe e estĆ” ativa:
ID: 7
NĆŗmero: LC-2025-0007
Status: published
Data Limite: 2025-12-15 (ATIVA)
ā UserAccess com supplier_id NULL:
user_id: 11 (João Fornecedor)
supplier_id: NULL ā¬
ļø PROBLEMA!
customer_id: NULL
2. Causa raiz:
O backend busca o Supplier do usuƔrio usando:
$supplier = Supplier::whereHas('userAccess', function($query) use ($user) {
$query->where('user_id', $user->id);
})->first();
Quando supplier_id é NULL na tabela user_accesses, a query não encontra nenhum Supplier e retorna:
{
"message": "UsuÔrio não estÔ associado a um fornecedor"
}
ā Solução Aplicada
1. Correção manual (jÔ aplicada):
-- Atualizar UserAccess
UPDATE user_accesses
SET supplier_id = 7
WHERE user_id = 11;
-- Atualizar nome do Supplier
UPDATE suppliers
SET nome = 'João Fornecedor LTDA'
WHERE id = 7;
2. Comando Artisan criado:
Para facilitar futuros setups, foi criado o comando:
php artisan agrsis:setup-fornecedor {email} [--name=] [--cnpj=]
Exemplo de uso:
docker exec agrsis_api php artisan agrsis:setup-fornecedor \
joao.fornecedor@agrsis.test \
--name="João Fornecedor LTDA" \
--cnpj=12345678000199
O comando faz:
- Busca usuƔrio pelo email
- Cria ou encontra Supplier com nome e CNPJ
- Cria/atualiza UserAccess associando user ao supplier
- Define
customer_idcomo NULL (garantir que é fornecedor) - Mostra resumo da configuração
š Resultado Atual
API retorna licitação corretamente:
{
"data": [
{
"id": 7,
"numero": "LC-2025-0007",
"descricao": "Licitação de teste para compra de fertilizantes...",
"data_limite": "2025-12-15T00:00:00.000000Z",
"status": "published",
"produtor": {
"id": 15,
"nome": "João Silva"
},
"itens": [],
"ja_proposta": false,
"dias_restantes": 0.96
}
],
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 15,
"total": 1
}
}
šÆ Próximos Passos
- Recarregue o dashboard do fornecedor (http://localhost:3004)
- A licitação LC-2025-0007 deve aparecer agora
- Verifique os logs no console do browser (DevTools ā Console)
- Procure por:
ā LicitaƧƵes carregadas: [...]
šØ Prevenção
Para evitar este problema no futuro:
Ao criar novo usuƔrio fornecedor:
Opção 1: Via comando Artisan (recomendado)
docker exec agrsis_api php artisan agrsis:setup-fornecedor \
email@fornecedor.com \
--name="Nome do Fornecedor" \
--cnpj=CNPJ_DO_FORNECEDOR
Opção 2: Via seeder
// Criar user
$user = User::create([...]);
// Criar supplier
$supplier = Supplier::create([...]);
// IMPORTANTE: Criar UserAccess com supplier_id preenchido
UserAccess::create([
'user_id' => $user->id,
'supplier_id' => $supplier->id, // ā¬
ļø NĆO DEIXAR NULL!
'customer_id' => null,
]);
š Logs Adicionados
Para debug futuro, foram adicionados logs detalhados:
Backend (Laravel):
š [FORNECEDOR] Listando licitaƧƵes
š¤ [FORNECEDOR] Supplier encontrado?
š [FORNECEDOR] Total de licitaƧƵes PUBLISHED
š
[FORNECEDOR] Filtro padrão: apenas ativas
ā
[FORNECEDOR] Licitações encontradas após filtros
Ver logs:
# Opção 1: Em tempo real
docker exec agrsis_api php artisan pail
# Opção 2: Arquivo
tail -f api/storage/logs/laravel.log
Frontend (Vue/Nuxt):
š Carregando licitaƧƵes...
š Resposta da API getLicitacoes:
ā
LicitaƧƵes carregadas:
š Total de licitaƧƵes:
Ver logs:
- Abrir DevTools (F12)
- Aba Console
- Recarregar pƔgina
š Commits Relacionados
d02625c feat: adicionar comando para configurar usuƔrio como fornecedor
11b96d5 debug: adicionar logs no backend para debug de licitaƧƵes fornecedor
1726468 debug: adicionar logs detalhados para debug de licitaƧƵes
ā Status
RESOLVIDO - Licitação agora aparece corretamente no dashboard do fornecedor após correção do supplier_id no UserAccess.