Consola
Superficie de acciones privilegiadas para roles de admin, moderador y experto. Modelo de roles, auditoría y runbooks por acción.
Si no ves la píldora Consola en el encabezado, esta página todavía no aplica para ti — cada superficie privilegiada está protegida por una concesión de rol explícita.
# Para quién es
Admins
Gestionan roles de usuario, revisan credenciales de investigador, monitorean fallos de sincronización y cuotas de API, y auditan cada acción privilegiada.
Moderadores
Atienden contenido reportado, gestionan la cola de apelaciones y aplican suspensiones suaves con bitácora auditable.
Expertos
Revisan la cola de validación filtrada por sus taxa y monitorean su puntaje de experiencia por taxón.
# Qué incluye
La consola vive en /consola/ y agrupa 36+ pestañas por rol. La barra lateral y las píldoras son proyecciones de una sola fuente console-tabs.ts: agregar una nueva superficie es una entrada, no una ruta hecha a mano.
Pestañas de admin
Resumen, Usuarios, Roles, Credenciales, Bitácora, Cuotas de API, Fallos de sync, Ejecuciones de cron, Feature flags, Bans, Karma, Anomalías, Forense, Errores, Salud, Webhooks, Propuestas, más siete navegadores de entidades de solo lectura (Identificaciones, Notificaciones, Medios, Seguimientos, Listas, Proyectos, Cambios de taxón).
Pestañas de moderador
Resumen, Cola de reportes, Triaje de comentarios, Apelaciones.
Pestañas de experto
Resumen, Puntaje de experiencia, Cola de validación, Solicitar insignia de experto.
# Cómo funcionan los privilegios
Despachador del lado del servidor
Cada escritura privilegiada pasa por la Edge Function supabase/functions/admin/. El despachador reverifica el JWT, exige el rol requerido, ejecuta el handler e inserta un registro admin_audit en la misma transacción. Los navegadores nunca escriben directo a las tablas privilegiadas.
Predicado RLS: has_role(uid, role)
Todas las filas con privilegio usan has_role(), no flags desnormalizados como users.is_expert. Los roles también pueden tener vencimiento (expires_at) y revocarse automáticamente cada noche.
Regla de dos personas
Las acciones irreversibles pueden requerir aprobación de un segundo admin a través de admin_action_proposals. El despachador hace cumplir la regla cuando el feature flag está activo; las propuestas pendientes vencen cada hora.
# Observabilidad y forense
Anomalías
El cron horario detect_admin_anomalies() marca acciones fuera de horario (zona horaria por admin), concesiones masivas y patrones inusuales de escritura.
Resumen de salud
El snapshot semanal compute_admin_health_digest() alimenta la tarjeta principal en /consola/health/ con píldoras direccionales Δ y sparklines de 12 semanas.
Errores de funciones
Sumidero estructurado function_errors conectado al despachador. /consola/errors/ ofrece píldoras coloreadas por severidad, filtros por URL y reconocimiento individual o en lote.
Webhooks
Firmado HMAC-SHA256 saliente, vista detallada de entregas por webhook, replay con un clic y protección contra reenvío basada en nonce.
# Referencias
Módulo 24 — Consola admin — referencia de implementación
Runbook — Bootstrap de admin — primer admin / concesiones de rol
Runbook — Modelo de roles — concesiones admin / moderador / experto
Runbook — Bitácora de auditoría — consultando admin_audit
Runbook — Operación por acción — qué hace cada pestaña en el día a día
Runbook — Navegadores de entidades — plantilla paginada compartida
Doc de diseño — Consola admin — racional e historia