# Brabensa Pro · Edge Functions

Funciones serverless de Supabase para procesar la cola de emails con SendGrid.

## Despliegue de `notificar-apartado`

### 1. Crea una cuenta de SendGrid
- Ve a https://sendgrid.com/ y crea cuenta gratuita (100 emails/día gratis).
- En **Settings → Sender Authentication** verifica un dominio o al menos un **Single Sender** (ej. `noreply@tudominio.com`).
- En **Settings → API Keys** crea una API Key con permiso **Mail Send** (Full Access funciona). Cópiala (sólo se muestra una vez).

### 2. Instala Supabase CLI
```bash
# macOS
brew install supabase/tap/supabase
# o
npm install -g supabase
```

### 3. Conecta tu proyecto
```bash
cd /app/frontend/public/supabase-functions
supabase login                                      # autoriza con tu cuenta de Supabase
supabase link --project-ref ytljyytejlswweuxiylz    # liga este folder al proyecto
```

### 4. Configura los Secrets (variables de entorno)
```bash
supabase secrets set SENDGRID_API_KEY=SG.XXXXX_tu_api_key
supabase secrets set SENDGRID_FROM=noreply@tudominio.com
supabase secrets set SENDGRID_FROM_NAME="Brabensa Pro"
```

### 5. Despliega la función
```bash
supabase functions deploy notificar-apartado --no-verify-jwt
```

> `--no-verify-jwt` permite invocarla desde cron sin JWT. Si quieres seguridad estricta, omítelo y manda el header `Authorization` con el service-role key.

### 6. Configura el email del admin en la app
- Entra a `plano-lotificacion.html` → modo Admin (PIN `2026`) → **Configuración global** → llena el campo "Email del administrador".

### 7. Programa la ejecución cada minuto
Opción A — Cron de Supabase (más simple, requiere `pg_cron`):
```sql
-- En Supabase SQL Editor (sólo una vez)
CREATE EXTENSION IF NOT EXISTS pg_cron;
SELECT cron.schedule(
  'brabensa-notif-1min',
  '* * * * *',
  $$ SELECT net.http_post(
       url := 'https://ytljyytejlswweuxiylz.supabase.co/functions/v1/notificar-apartado',
       headers := jsonb_build_object('Content-Type', 'application/json')
     ); $$
);
```

Opción B — Servicio externo (cron-job.org, EasyCron, etc.):
- URL: `https://ytljyytejlswweuxiylz.supabase.co/functions/v1/notificar-apartado`
- Método: POST
- Frecuencia: cada 1 minuto

### 8. Verifica el flujo end-to-end
1. Aparta un lote desde el plano → genera una fila `pendiente` en `notificaciones_email`.
2. Espera 1 minuto (o invoca manualmente la Edge Function desde Dashboard).
3. Revisa tu inbox y la tabla `notificaciones_email` (debe quedar en `enviada`).

### Troubleshooting
- **Error 401**: verifica que la API Key tenga permiso "Mail Send" y no esté revocada.
- **Email no llega**: verifica que el dominio/sender de `SENDGRID_FROM` esté **verificado** en SendGrid.
- **Edge Function falla**: revisa logs en Supabase Dashboard → Edge Functions → notificar-apartado → Logs.
