Troubleshooting

šŸ”§ 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:

  1. Busca usuƔrio pelo email
  2. Cria ou encontra Supplier com nome e CNPJ
  3. Cria/atualiza UserAccess associando user ao supplier
  4. Define customer_id como NULL (garantir que Ć© fornecedor)
  5. 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

  1. Recarregue o dashboard do fornecedor (http://localhost:3004)
  2. A licitação LC-2025-0007 deve aparecer agora
  3. Verifique os logs no console do browser (DevTools → Console)
  4. 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.

Copyright Ā© 2026