Files
4ventures-client-portal/docs/RUNBOOK.md
4Ventures 791976a3d8 feat: agency portfolio with per-client integrations hub
Admin home lists tenants, alerts, and connection health; header
selector enables superadmin context; Meta/GA4/GSC/GTM/CRM/email
slots live per tenant (manual status until OAuth).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-22 01:31:47 +02:00

62 lines
2.1 KiB
Markdown

# Runbook — Centro de Mando 4Ventures
Operador: `marketing@4ventures.es`
Credenciales locales (gitignored): `.ops/marketing-credentials.txt`
## Health
```bash
curl -sf https://app.4ventures.es/api/health
# expect: serviceRoleConfigured true
./scripts/smoke.sh https://app.4ventures.es
python3 scripts/smoke_operator_login.py
python3 scripts/smoke_chat_auth.py
```
## Deploy (Dokploy)
1. Push a `main` en Gitea `Marketing/4ventures-client-portal`.
2. Dokploy → **Web4Ventures / production / client-portal** → Deploy
(id interno `web4ventures-clientportal-jntjhs`).
3. Environment (runtime + build via “Create Environment File”):
- `NEXT_PUBLIC_SUPABASE_URL`
- `NEXT_PUBLIC_SUPABASE_ANON_KEY`
- `SUPABASE_SERVICE_ROLE_KEY`
- `ANTHROPIC_API_KEY` (opcional, LLM)
4. Traefik: `portal.yml` → `http://web4ventures-clientportal-jntjhs:3000`
5. Smoke: `/login` → KPIs → creatividades → chat.
## Portafolio agencia (admin)
1. Login `marketing@` → redirige a `/dashboard/agencia`.
2. Cabecera **Contexto**: selector de cliente (modo superadmin) o vista global.
3. Tarjetas de portafolio: salud de integraciones + **Entrar** / **Integraciones**.
4. Ficha `/dashboard/agencia/cliente/[id]`: Meta, Google Ads, GA4, GSC, GTM, Clientify, Klaviyo, Mailchimp (estado manual por ahora).
5. SQL: `sql/agency_portfolio.sql` (tablas `integrations` + `agency_alerts`).
OAuth live Meta/MCC/GA4 = siguiente fase; el esqueleto ya escala por tenant.
## Atribución
```html
<script src="https://app.4ventures.es/_4v_attr.js" defer></script>
```
`POST https://n8n-agencia.4ventures.es/webhook/lead-inbound`
## Endurecer git / n8n
Aplicado 2026-09-21: IP allowlist `90.161.248.78/32` en UI de git + n8n; webhooks `/webhook` abiertos.
Detalle / revert: `.ops/HARDEN_SURFACES.md`. Re-aplicar: `python3 scripts/dokploy_apply_traefik_harden.py`.
`app.4ventures.es` y Dokploy **sin** allowlist.
## Rotación JWT Supabase
Claves nuevas en `.ops/supabase_rotated.env` (gitignored). Aplicar requiere recrear el stack Supabase (ver `SECURITY.md`).
## Incidentes
Ver `SECURITY.md`.