# 🔗 Mercado Livre - URLs de Afiliado vs URLs de Produto

## ⚠️ Problema Identificado

Nem todas as URLs curtas do Mercado Livre (`mercadolivre.com/sec/xxxxx`) levam para **produtos específicos**. Algumas levam para **páginas de loja/perfil** com vários produtos.

## 📋 Tipos de URL

### 1. ✅ URL de Produto Específico (Funciona)

**Exemplo:**
```
https://mercadolivre.com/sec/2jhS8nz
    ↓ redireciona para
https://produto.mercadolivre.com.br/MLB-3948125943-panela-pressao-...
```

**Características:**
- ✅ Leva direto para 1 produto
- ✅ Tem título único do produto
- ✅ Tem preço único (ou preço de/por)
- ✅ Pode ser scrapado com sucesso

**Resultado:**
```
Panela De Pressão Mecânica Preta E Inox 4 L Midea

De: R̶$̶ 388,43
Por: R$ 295,21 (24% OFF)

🚚 Frete GRÁTIS
```

---

### 2. ❌ URL de Loja/Perfil (NÃO Funciona)

**Exemplo:**
```
https://mercadolivre.com/sec/2Nm56Yo
    ↓ redireciona para
https://www.mercadolivre.com.br/social/descontoemgames
```

**Características:**
- ❌ Página com **vários produtos** (vitrine)
- ❌ Título da loja: "Desconto em Games | Perfil Social"
- ❌ Vários preços diferentes
- ❌ Não pode ser scrapado (dados misturados)

**Estrutura da página:**
```html
<h1>Desconto em Games</h1>
<p>Acompanhe as melhores promoções em godg.me/grupos</p>

<!-- Produto 1 -->
Jogo 6 Taças Vidro De Vinho / Água - R$ 54,99 → R$ 37,94

<!-- Produto 2 -->
Jogo De Taças Diamond Cristal - R$ 45,99 → R$ 39,99

<!-- Produto 3 -->
...
```

**Resultado do Sistema:**
```
❌ URL de loja/perfil não suportada

Esta URL leva para uma página de loja com vários produtos ("Desconto em Games"), 
não para um produto específico.

📝 Como corrigir:
1. Abra esta URL no navegador
2. Clique no produto que você quer divulgar
3. Copie a URL do produto específico
4. Cole aqui no sistema

✅ Exemplo: https://produto.mercadolivre.com.br/MLB-XXXXXXX-nome-produto
```

---

## 🔍 Como o Sistema Detecta

```php
// 1. Verifica se é página de loja/perfil
if (preg_match('/Desconto em Games|Perfil Social/i', $html) && 
    !preg_match('/<h1[^>]*class="[^"]*ui-pdp-title[^"]*"/', $html)) {
    $isStorePage = true;
}

// 2. Tenta encontrar link de produto específico no HTML
if (preg_match('/(https?:\/\/produto\.mercadolivre\.com\.br\/MLB-\d+[^"\']+)/', $html, $matches)) {
    $productLink = $matches[1]; // ✅ Encontrou!
}

// 3. Se é loja SEM produto específico → ERRO
if ($isStorePage && !$productLink) {
    return error('URL de loja/perfil não suportada');
}
```

---

## 🎯 Solução para o Usuário

### Opção 1: Pegar URL do Produto Diretamente

1. Abra o link de afiliado no navegador
2. Na página da loja, **clique no produto** que quer divulgar
3. Copie a URL da **página do produto** (começa com `produto.mercadolivre.com.br`)
4. Cole essa URL no sistema

### Opção 2: Usar Links de Produto desde o Início

- Ao invés de gerar links de afiliado para a **loja inteira**
- Gere links de afiliado para **cada produto individualmente**
- No painel de afiliados do ML, busque o produto específico

---

## 📊 Comparação

| Aspecto | URL de Produto | URL de Loja |
|---------|----------------|-------------|
| **Redireciona para** | `produto.mercadolivre.com.br/MLB-XXX` | `/social/nome-loja` |
| **Número de produtos** | 1 | Vários (vitrine) |
| **Título na página** | Nome do produto | Nome da loja |
| **Scraping** | ✅ Funciona | ❌ Dados misturados |
| **Sistema suporta?** | ✅ Sim | ❌ Não |

---

## 🔧 Implementação Técnica

### 1. Detecção de Página de Loja

```php
// Sinais de página de loja:
- Título contém "Desconto em Games", "Perfil Social", etc
- NÃO tem <h1 class="ui-pdp-title"> (elemento de produto único)
- Vários elementos andes-money-amount (múltiplos preços)
```

### 2. Tratamento de Erro

```json
{
  "success": false,
  "error": "URL de loja/perfil não suportada",
  "message": "Esta URL leva para uma página de loja...",
  "how_to_fix": "1. Abra esta URL...\n2. Clique no produto...",
  "example": "https://produto.mercadolivre.com.br/MLB-XXXXXXX..."
}
```

### 3. Exibição no Frontend

```javascript
// Mensagem de erro formatada
let errorMsg = data.error || data.message;

if (data.how_to_fix) {
    errorMsg += '\n\n📝 Como corrigir:\n' + data.how_to_fix;
}

if (data.example) {
    errorMsg += '\n\n✅ Exemplo: ' + data.example;
}

showError(errorMsg); // Com quebras de linha preservadas
```

---

## 🚨 Limitações Atuais

❌ **NÃO suportamos:**
- URLs de loja/perfil
- URLs de busca do ML
- URLs de categorias
- URLs de coleções/campanhas

✅ **Suportamos:**
- URLs de produto específico (formato longo)
- URLs curtas de afiliado (`/sec/xxx`) **que levem para produto único**

---

## ✅ ATUALIZAÇÃO: Problema Resolvido!

**Data:** 13/10/2025

Páginas de vitrine de afiliado agora **FUNCIONAM**! 🎉

O sistema detecta o botão **"Ir para produto"** na vitrine e:
1. Extrai a URL do produto específico
2. Faz scraping dessa página
3. **Mantém a URL curta original** (preserva comissão!)

**Ver documentação completa:** `docs/MERCADO_LIVRE_VITRINE_AFILIADO.md`

### Como Funciona:
```
https://mercadolivre.com/sec/2Nm56Yo (vitrine)
    ↓
Busca botão "Ir para produto"
    ↓
Scrapa página do produto específico
    ↓
Retorna com URL curta (mantém comissão!) ✅
```

---

**Implementado:** 13/10/2025  
**Status:** ✅ Funcionando  
**Documentação:** `MERCADO_LIVRE_VITRINE_AFILIADO.md`

