# Mercado Livre - Links de Afiliados

## ✅ Como Funciona

### 1. **Link de Afiliado vs Link de Produto**

**Link de Afiliado** (gerado pelo Mercado Livre):
```
https://mercadolivre.com/sec/22jz6pY
```
- ✅ **Rastreável**: Gera comissão para o afiliado
- ✅ **URL Curta**: Fácil de compartilhar
- ⚠️ **Redirect**: Leva a uma página intermediária

**Link de Produto** (direto):
```
https://produto.mercadolivre.com.br/MLB-5769989890-arvore-natal
```
- ❌ **Não rastreável**: Não gera comissão
- ❌ **URL Longa**: Difícil de compartilhar

## 🎯 Solução Implementada

### Fluxo do Sistema:

```
1. Usuário cola: https://mercadolivre.com/sec/22jz6pY
   ⬇️
2. Sistema segue redirect:
   https://www.mercadolivre.com.br/social/promogeekbr
   ⬇️
3. Sistema detecta: "É uma página de afiliado"
   ⬇️
4. Sistema busca no HTML: Primeiro produto em destaque
   Encontra: MLB-5769989890
   ⬇️
5. Sistema busca na API: Dados completos do produto
   Nome: Árvore De Natal Completa Premium Ferro 1,80m Verde
   Preço: R$ 129,00
   Preço Antigo: R$ 229,90
   ⬇️
6. Sistema formata texto usando o LINK DE AFILIADO ORIGINAL:
   
   Árvore De Natal Completa Premium Ferro 1,80m Verde
   
   De: R̶$̶ 229,90
   Por: R$ 129,00 (43% OFF)
   
   🚚 Frete GRÁTIS
   
   ✨ Produto Novo
   
   Compre aqui: https://mercadolivre.com/sec/22jz6pY
```

## 🔧 Implementação Técnica

### Detecção de Página de Afiliado

```php
// Detectar se é página intermediária
$isAffiliatePage = strpos($finalUrl, '/social/') !== false || 
                  strpos($finalUrl, '/lojas/') !== false ||
                  strpos($finalUrl, '/stores/') !== false;
```

### Extração do Produto Principal

```php
if ($isAffiliatePage) {
    // Buscar MLB no HTML
    preg_match_all('/(?:href=["\']|data-item-id=["\']|\/p\/)(MLB-?\d+)/', $body, $matches);
    
    // Pegar o PRIMEIRO MLB (produto em destaque)
    $productId = $matches[1][0];
}
```

### Preservação do Link de Afiliado

```php
// Priorizar link de afiliado original
$linkToUse = $originalUrl ?: $product['permalink'];

// $originalUrl = https://mercadolivre.com/sec/22jz6pY (LINK DE AFILIADO)
// $product['permalink'] = https://produto.mercadolivre.com.br/MLB-XXX (fallback)
```

## 📊 Exemplo Real

### Entrada:
```
https://mercadolivre.com/sec/22jz6pY
```

### Processamento (Logs):
```
=== RESOLVENDO URL CURTA ML ===
url_curta: https://mercadolivre.com/sec/22jz6pY

=== URL FINAL ===
url_final: https://www.mercadolivre.com.br/social/promogeekbr...

=== PÁGINA DE AFILIADO DETECTADA ===
url_final: https://www.mercadolivre.com.br/social/promogeekbr...

=== PRODUTO PRINCIPAL ENCONTRADO NA PÁGINA DE AFILIADO ===
product_id: MLB-5769989890
total_produtos_na_pagina: 1

=== BUSCANDO PRODUTO ML ===
product_id: MLB-5769989890

=== PRODUTO PARSEADO ===
title: Árvore De Natal Completa Premium Ferro 1,80m Verde
price: R$ 129,00
old_price: R$ 229,90
```

### Saída:
```
Árvore De Natal Completa Premium Ferro 1,80m Verde

De: R̶$̶ 229,90
Por: R$ 129,00 (43% OFF)

🚚 Frete GRÁTIS

✨ Produto Novo

Compre aqui: https://mercadolivre.com/sec/22jz6pY

[Textos de rodapé personalizados do Mercado Livre]
```

## ✅ Tipos de Links Suportados

### 1. Link de Afiliado (URL Curta)
```
https://mercadolivre.com/sec/22jz6pY ✅
```
- Sistema segue redirect
- Extrai produto principal
- Mantém link original

### 2. Link de Produto Direto
```
https://produto.mercadolivre.com.br/MLB-XXXXXX ✅
```
- Extrai MLB da URL
- Busca dados na API
- Usa permalink do produto

### 3. Link de Produto com MLB na URL
```
https://www.mercadolivre.com.br/produto/MLB-XXXXXX ✅
```
- Extrai MLB da URL
- Busca dados na API

## 🎯 Vantagens da Solução

1. ✅ **Mantém Comissão**: Link de afiliado preservado
2. ✅ **Dados Completos**: Busca preços, imagens, frete via API
3. ✅ **Automático**: Não precisa de MLB manual
4. ✅ **Logs Detalhados**: Fácil debug
5. ✅ **Flexível**: Aceita múltiplos formatos de URL

## 🔍 Troubleshooting

### "Não foi possível extrair o ID"

**Solução:**
```bash
# Ver logs detalhados
tail -f storage/logs/laravel.log | grep "ML"
```

**Possíveis causas:**
1. HTML do Mercado Livre mudou (atualizar regex)
2. Produto removido/expirado
3. Link de afiliado inválido

### Produto Não Encontrado (404)

**Possíveis causas:**
1. Produto expirou/foi removido
2. MLB extraído incorretamente
3. Produto de outro país (MLM, MLA, etc)

**Solução:**
```bash
# Verificar MLB extraído nos logs
grep "PRODUTO ID ENCONTRADO" storage/logs/laravel.log
```

## 🚀 Melhorias Futuras

- [ ] Cache de produtos por 5 minutos
- [ ] Suporte a links de outros países (MLA, MLM, MLC)
- [ ] Detecção de produtos patrocinados
- [ ] Extração de múltiplos produtos de uma página
- [ ] Suporte a cupons de desconto do ML

