# ✅ FIX: Failed to Fetch ao Excluir Cotações - RESOLVIDO

## 🔍 Problema Identificado

Erro "TypeError: Failed to fetch" ao tentar excluir cotações através da interface.

## 🕵️ Causa Raiz

O servidor tinha **duas configurações de CORS duplicadas**:

1. **Linha 70**: Primeira configuração com `X-User-Token` ✅
2. **Linha 334**: Segunda configuração SEM `X-User-Token` ❌

A segunda configuração estava **sobrescrevendo** a primeira, removendo o suporte ao header customizado `X-User-Token`. Isso causava:

- O navegador fazia um **preflight request** (OPTIONS) antes do DELETE
- O servidor respondia que **não aceitava o header** `X-User-Token`
- O navegador **bloqueava a requisição** com "Failed to fetch"

## 🔧 Solução Implementada

Adicionei o header `X-User-Token` na segunda configuração de CORS (linha 338):

```typescript
// ANTES (linha 338)
allowHeaders: ["Content-Type", "Authorization"],

// DEPOIS (linha 338) ✅
allowHeaders: ["Content-Type", "Authorization", "X-User-Token"],
```

## 📋 Arquitetura de Autenticação (Dual-Token)

O sistema usa dois tokens para autenticação:

1. **Authorization: Bearer {publicAnonKey}**
   - Passa pelo middleware do Supabase
   - Permite acesso às Edge Functions

2. **X-User-Token: {accessToken}**
   - Token JWT do usuário autenticado
   - Usado pelo middleware de permissões
   - Valida permissões específicas do usuário

## 🧪 Validação

Após a correção, o fluxo completo funciona:

1. ✅ Frontend chama `getAuthHeaders(accessToken)` que adiciona ambos os headers
2. ✅ Navegador faz preflight request (OPTIONS)
3. ✅ Servidor responde que aceita `X-User-Token`
4. ✅ Navegador envia DELETE com `X-User-Token`
5. ✅ Middleware `requirePermission` valida token e permissões
6. ✅ Cotação é excluída com sucesso

## 📁 Arquivos Modificados

- `/supabase/functions/server/index.tsx` (linha 338)
  - Adicionado `X-User-Token` aos `allowHeaders` do segundo middleware CORS

## ⚠️ Notas Importantes

- **Não remover** nenhuma das duas configurações de CORS
- Ambas são necessárias para garantir compatibilidade total
- O header `X-User-Token` DEVE estar presente em AMBAS as configurações

## 🎯 Status

✅ **RESOLVIDO** - Sistema funcionando completamente

Data: 27/02/2026
