# 🚀 Correções Críticas - EXECUTAR AGORA

## ✅ Problemas Corrigidos

### 1. 🔴 **CRÍTICO: Instâncias WhatsApp Extras Sumindo**

**Problema:** Ao fazer upgrade ou downgrade, as instâncias extras de WhatsApp compradas separadamente estavam desaparecendo.

**Solução:**
- ✅ **ProrationService**: Preserva `whatsapp_extra_qty` ao mudar plano
- ✅ **WebhookController**: Transfere extras da subscription antiga para a nova
- ✅ **PaymentController**: Transfere extras no `fulfillOrder()`
- ✅ **Logs detalhados**: Registra cada transferência

**Resultado:** Instâncias extras agora são **sempre preservadas** em qualquer mudança de plano.

### 2. ⚠️ **Histórico de Pagamentos Não Aparecia**

**Problema:** Seção de histórico só aparecia se usuário tivesse subscription ativa.

**Solução:**
- ✅ Histórico agora é **sempre exibido**
- ✅ Funciona mesmo sem subscription

### 3. 🆕 **Sistema de Renovação com QR Code**

**Novo:** Endpoint para renovar assinatura e gerar QR Code de pagamento.

**Funcionalidades:**
- ✅ Aplica créditos automaticamente
- ✅ Gera QR Code PIX
- ✅ Se crédito cobrir tudo, renova gratuitamente
- ✅ Mostra valor final após descontos

---

## 🚀 Deploy no Servidor

Execute AGORA:

```bash
cd /var/www/gestorstream

# Dar permissão
chmod +x deploy_correcoes_subscription.sh

# Executar correções
./deploy_correcoes_subscription.sh
```

**Este script faz:**
1. ✅ Atualiza código do Git
2. ✅ Limpa cache do Laravel
3. ✅ Verifica rotas
4. ✅ Recompila frontend
5. ✅ Recarrega nginx

---

## 🧪 Testes Obrigatórios

### Teste 1: Preservação de Extras (MAIS IMPORTANTE)

```bash
# No navegador:
1. Compre 2 instâncias extras de WhatsApp
2. Verifique que você tem 2 extras
3. Faça upgrade para plano maior
4. Verifique que AINDA tem 2 extras ✅
5. Faça downgrade
6. Verifique que AINDA tem 2 extras ✅
```

**Via API:**
```bash
GET /api/v1/subscriptions/current

# Verificar response:
{
  "subscription": {
    "whatsapp_extra_qty": 2,  // ← DEVE ESTAR AQUI
    "plan": { "name": "Pro" }
  }
}
```

### Teste 2: Histórico Visível

```bash
# No navegador:
1. Acesse https://gestor.jf.eng.br/subscription
2. Role a página
3. Verifique se aparece "Histórico de Pagamentos" ✅
4. Deve mostrar lista de pagamentos (ou mensagem "Nenhum pagamento")
```

### Teste 3: Renovação com QR Code

```bash
# Via API:
curl -X POST https://gestor.jf.eng.br/api/v1/subscriptions/renew \
  -H "Authorization: Bearer SEU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"gateway": "openpix"}'

# Deve retornar:
{
  "payment": {
    "qr_code": "...",      // ← PIX copia e cola
    "qr_code_url": "...",  // ← URL da imagem
    "amount": 25.80,
    "credit_applied": 24.20
  }
}
```

---

## 📊 Como Verificar se Funcionou

### 1. Verificar Logs de Transferência

```bash
# Após fazer upgrade/downgrade, verificar logs:
tail -100 /var/www/gestorstream/backend/storage/logs/laravel.log | grep "WhatsApp extras"

# Deve mostrar:
[INFO] WhatsApp extras transferred from previous subscription
  from_subscription_id: 5
  to_subscription_id: 6
  quantity: 2
```

### 2. Verificar no Banco

```bash
cd /var/www/gestorstream/backend
php artisan tinker

>>> $subscription = \App\Models\Subscription::where('status', 'active')->first();
>>> echo "Extras: " . $subscription->whatsapp_extra_qty;
# Deve mostrar o número correto de extras
```

### 3. Verificar Rota de Renovação

```bash
cd /var/www/gestorstream/backend
php artisan route:list | grep renew

# Deve mostrar:
POST subscriptions/renew ......... renew
```

---

## 🔄 Fluxo Correto Agora

### Antes (BUGADO):
```
1. Usuário tem Plano Basic + 2 extras
2. Faz upgrade para Pro
3. Sistema cancela subscription antiga
4. ❌ Extras são perdidas!
```

### Agora (CORRIGIDO):
```
1. Usuário tem Plano Basic + 2 extras
2. Faz upgrade para Pro
3. Sistema:
   a. Cria nova subscription com Plano Pro
   b. 🔄 TRANSFERE as 2 extras para nova subscription
   c. Cancela subscription antiga
4. ✅ Usuário fica com Plano Pro + 2 extras preservadas!
```

---

## 📝 Arquivos Modificados

### Backend (4 arquivos)
1. `app/Services/ProrationService.php` - Preserva extras
2. `app/Http/Controllers/Api/WebhookController.php` - Transfere extras
3. `app/Http/Controllers/Api/PaymentController.php` - Transfere extras
4. `app/Http/Controllers/Api/SubscriptionController.php` - Novo método `renew()`
5. `routes/api.php` - Nova rota `/subscriptions/renew`

### Frontend (1 arquivo)
1. `src/pages/SubscriptionPage.tsx` - Histórico sempre visível

---

## ⚠️ PENDENTE: Notificações de Vencimento

**Solicitado mas não implementado ainda:**
- Sistema de notificações quando subscription está perto de vencer
- Botão na página `/subscription` para gerar QR Code de renovação

**Próximos passos:**
1. Criar sistema de notificações automáticas
2. Adicionar botão "Renovar Assinatura" no frontend
3. Modal com QR Code de renovação

---

## ✅ Checklist

- [ ] Deploy executado
- [ ] Teste 1: Extras preservadas em upgrade
- [ ] Teste 2: Extras preservadas em downgrade
- [ ] Teste 3: Histórico visível
- [ ] Teste 4: Renovação funciona
- [ ] Logs mostram transferências
- [ ] Usuário confirmou que funcionou

---

**Execute `./deploy_correcoes_subscription.sh` e teste cada item!** 🚀

Depois me confirme:
1. ✅ Extras estão sendo preservadas?
2. ✅ Histórico está aparecendo?
3. ✅ Renovação funciona?

Aí implemento as notificações de vencimento próximo.
