Files
4ventures-client-portal/docs/OPERATOR.md
4Ventures 1eb02dac4d feat: Google Drive agency sync with auto folder match
Connect marketing@ once, match Drive folders to tenants by name,
list Drive in Activos, and mirror portal uploads to the linked folder.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-22 16:27:54 +02:00

50 lines
2.0 KiB
Markdown

# Operador marketing@4ventures.es
## Estado (2026-09-21)
- Usuario **creado** en Supabase Auth (`role=admin`, `tenant_id` = 4Ventures Central).
- Password local (gitignored): `.ops/marketing-credentials.txt`
- Login verificado en https://app.4ventures.es/login → `/dashboard/*` y `/dashboard/agencia`
- `sql/creatives.sql` **aplicado** en prod; RLS activo en tablas de negocio (incl. `agent_runs`, verificado 2026-09-21)
- Re-aplicar RLS `agent_runs` si hace falta: `sql/agent_runs_rls.sql` (idempotente)
- Biblioteca de activos (archivos): `sql/asset_files.sql` + bucket privado `tenant-assets` (máx. 80 MB/archivo). UI: `/dashboard/activos`. Apply: `python3 scripts/dokploy_apply_asset_files.py`
- Google Drive (agencia): `sql/google_drive.sql`. OAuth marketing@ → auto-match carpetas por nombre de tenant. Env Dokploy: `GOOGLE_OAUTH_CLIENT_ID`, `GOOGLE_OAUTH_CLIENT_SECRET`, `NEXT_PUBLIC_APP_URL`. Redirect: `https://app.4ventures.es/api/admin/drive/callback`. UI: Agencia → Conectar Drive.
## Login
1. Abre https://app.4ventures.es/login
2. Email: `marketing@4ventures.es`
3. Password: la de `.ops/marketing-credentials.txt` (o el gestor de la agencia)
## Reset / reprovision (si hace falta)
Studio (Kong) o Admin API con service role:
```json
{
"role": "admin",
"company": "4Ventures",
"slug": "4ventures-hub",
"tenant_id": "0b3c5fc0-6901-4caf-b26a-b6a0201d8541"
}
```
## Rotación de API keys (recomendado)
Settings → API → Regenerate `anon` y `service_role`.
Actualizar en Dokploy → Web4Ventures → `client-portal` → Environment (API `application.update`).
Nunca pegar keys en PDFs ni `.env.example`.
## Pendiente ops
- `ANTHROPIC_API_KEY` en Dokploy env si se quiere el asistente LLM
- OAuth live Meta / Google Ads / GA4 / GSC (hoy: estado manual por tenant en Agencia)
- IP allowlist Traefik: mantener IPs oficina actuales en `middleware-hardening.yml`
## Verificación
- Rol `admin` → ve `/dashboard/agencia`
- Rol `client` → redirigido fuera de agencia
- Chat/simulate solo con sesión
- Health: `serviceRoleConfigured: true`