# 🎯 GUIA: Teste com Dados Reais da API

> 🚀 **Como testar o API Analyzer com dados reais da API PraFrota autenticada**

## 📋 **PRÉ-REQUISITOS**

### ✅ **1. Aplicação Rodando**
```bash
# A aplicação Angular deve estar rodando
# Acesse: http://localhost:4200
```

### ✅ **2. Login Realizado**
- Faça login normalmente na aplicação
- Certifique-se de que está autenticado
- Verifique se consegue navegar pelas telas normalmente

### ✅ **3. DevTools Aberto**
- Pressione **F12** ou **Ctrl+Shift+I**
- Vá para a aba **Console**

---

## 🚀 **PASSO A PASSO**

### **1. Carregar Script de Teste**

Cole este código no console e execute:

```javascript
// 🧪 SCRIPT DE TESTE - DADOS REAIS DA API
async function testRealAPI(domainName) {
  console.log(`🚀 TESTANDO API REAL PARA: ${domainName.toUpperCase()}`);
  console.log('='.repeat(60));
  
  // Obter token e tenant do localStorage
  const token = localStorage.getItem('prafrota_auth_token');
  const tenantId = localStorage.getItem('tenant_id');
  
  if (!token) {
    console.error('❌ Token não encontrado. Faça login primeiro!');
    return;
  }
  
  console.log('✅ Token encontrado:', token.substring(0, 20) + '...');
  console.log('✅ Tenant ID:', tenantId);
  
  // URLs para testar
  const baseUrl = 'https://prafrota-be-bff-tenant-api.grupopra.tech';
  const endpoints = [
    `${domainName}?page=1&limit=1`,
    `${domainName}s?page=1&limit=1`,
    `api/v1/${domainName}?page=1&limit=1`,
    `api/v1/${domainName}s?page=1&limit=1`
  ];
  
  // Headers de autenticação
  const headers = {
    'x-tenant-user-auth': token,
    'x-tenant-uuid': tenantId,
    'Accept': 'application/json'
  };
  
  for (const endpoint of endpoints) {
    const fullUrl = `${baseUrl}/${endpoint}`;
    console.log(`\n🔍 Testando: ${endpoint}`);
    
    try {
      const response = await fetch(fullUrl, { method: 'GET', headers });
      console.log(`📊 Status: ${response.status}`);
      
      if (response.ok) {
        const data = await response.json();
        
        if (data?.data?.length > 0) {
          const sample = data.data[0];
          
          console.log('🎉 DADOS REAIS ENCONTRADOS!');
          console.log(`📊 Total: ${data.totalCount || 'N/A'}`);
          console.log(`📋 Campos: ${Object.keys(sample).length}`);
          
          console.log('\n📝 ESTRUTURA:');
          Object.entries(sample).forEach(([key, value]) => {
            const type = typeof value;
            const preview = type === 'string' && value.length > 30 
              ? value.substring(0, 30) + '...' 
              : value;
            console.log(`  ${key}: ${type} = ${preview}`);
          });
          
          console.log('\n📄 INTERFACE GERADA:');
          console.log(generateInterface(domainName, sample));
          
          return { success: true, endpoint: fullUrl, sample };
        }
      }
    } catch (error) {
      console.log(`❌ Erro: ${error.message}`);
    }
  }
  
  return { success: false };
}

function generateInterface(domain, sample) {
  const className = domain.charAt(0).toUpperCase() + domain.slice(1);
  let code = `/**\n * 🎯 ${className} - DADOS REAIS DA API\n */\nexport interface ${className} {\n`;
  
  Object.entries(sample).forEach(([key, value]) => {
    const type = typeof value === 'object' && value !== null 
      ? (Array.isArray(value) ? 'any[]' : 'any')
      : typeof value;
    const optional = value === null ? '?' : '';
    code += `  ${key}${optional}: ${type};\n`;
  });
  
  return code + '}';
}

console.log('🎯 Script carregado! Use: testRealAPI("vehicles")');
```

### **2. Executar Testes**

Agora você pode testar qualquer domínio:

```javascript
// Testar veículos
await testRealAPI('vehicle');

// Testar motoristas  
await testRealAPI('driver');

// Testar empresas
await testRealAPI('company');

// Testar produtos (se existir)
await testRealAPI('product');
```

---

## 📊 **RESULTADOS ESPERADOS**

### ✅ **Sucesso - Dados Encontrados**
```
🚀 TESTANDO API REAL PARA: VEHICLE
============================================================
✅ Token encontrado: eyJhbGciOiJIUzI1NiIs...
✅ Tenant ID: abc123-def456-789

🔍 Testando: vehicle?page=1&limit=1
📊 Status: 200

🎉 DADOS REAIS ENCONTRADOS!
📊 Total: 150
📋 Campos: 12

📝 ESTRUTURA:
  id: number = 1
  name: string = Veículo ABC-1234
  brand: string = Ford
  model: string = Transit
  year: number = 2023
  plate: string = ABC-1234
  status: string = active

📄 INTERFACE GERADA:
/**
 * 🎯 Vehicle - DADOS REAIS DA API
 */
export interface Vehicle {
  id: number;
  name: string;
  brand: string;
  model: string;
  year: number;
  plate: string;
  status: string;
}
```

### ❌ **Falha - Token/Login**
```
❌ Token não encontrado. Faça login primeiro!
```

### ❌ **Falha - Endpoint não existe**
```
🔍 Testando: product?page=1&limit=1
📊 Status: 404
❌ Erro: Not Found
```

---

## 🎯 **DOMÍNIOS PARA TESTAR**

### ✅ **Domínios que DEVEM existir:**
- `vehicle` - Veículos
- `driver` - Motoristas  
- `company` - Empresas
- `user` - Usuários
- `route` - Rotas

### 🧪 **Domínios para investigar:**
- `product` - Produtos
- `client` - Clientes
- `supplier` - Fornecedores
- `maintenance` - Manutenções

---

## 🔧 **TROUBLESHOOTING**

### **Problema: Token não encontrado**
**Solução:** 
1. Faça logout e login novamente
2. Verifique se está na mesma aba da aplicação
3. Verifique localStorage: `localStorage.getItem('prafrota_auth_token')`

### **Problema: Status 401 (Unauthorized)**
**Solução:**
1. Token expirado - faça login novamente
2. Tenant incorreto - verifique `localStorage.getItem('tenant_id')`

### **Problema: Status 404 (Not Found)**
**Solução:**
1. Endpoint não existe na API
2. Teste variações: singular/plural
3. Teste com prefixo: `api/v1/`

### **Problema: CORS Error**
**Solução:**
1. Execute na mesma aba da aplicação
2. Certifique-se de que está em localhost:4200

---

## 🎉 **PRÓXIMOS PASSOS**

Uma vez que você **conseguir dados reais**, poderemos:

1. **✅ Integrar ao Create-Domain V2.0**
2. **✅ Gerar interfaces precisas**
3. **✅ Usar estrutura real dos DTOs**
4. **✅ Validar com backend**

**🚀 O objetivo é criar domínios baseados em dados 100% reais da API!** 