Ir al contenido

Base de datos

El esquema completo está en plantillas/supabase/esquema.sql (consolidado de Minerales + endurecimiento). Todas las tablas tienen RLS. Roles en user_roles (admin, editor, viewer) con ia_puede_editar() / ia_puede_ver().

Tabla Contenido Acceso desde el navegador
ia_agentes Configuración (una fila: índice único) Ver / editar según rol; pruebas_ok protegido por trigger
ia_conocimiento tipo, titulo, contenido, activo, vigente_desde, vigente_hasta Ver / editar
ia_documentos, ia_fragmentos Archivos y fragmentos con búsqueda en español Ver / subir
ia_conversaciones Contacto (wa_id), modo agente/humano, asignado_a, datos, resumen, ráfaga (ultimo_entrante_id, respondido_hasta), opt-out y consentimiento Solo lectura
ia_mensajes Mensajes con wa_message_id único, dirección, autor, estado de entrega Solo lectura
ia_eventos Una fila por ejecución: acción, motivo, herramientas (incluye guardrails), modelo, tokens, latencia Solo lectura
ia_leads Leads con datos jsonb y resumen Ver / editar
ia_agente_versiones Snapshots de configuración activada (siguiente fase) Solo lectura
whatsapp_connections Conexión Conecta: connection_id, phone_number_id, waba_id, token y signing key cifrados Ninguno (service_role)
whatsapp_messages, whatsapp_webhook_log Registro crudo e idempotente del webhook Ninguno
Función
ia_wa_registrar_mensaje(...) Upsert de conversación + mensaje; devuelve conv_id, es_nuevo, conv_modo
ia_reclamar_turno(conversacion, wamid) Turno atómico por conversación (evita respuestas dobles)
ia_wa_estado(wamid, estado) Estados de entrega que solo avanzan
ia_registrar_lead(...) Crea el lead (cantidad numérica tolerante con ia_try_numeric)
ia_buscar_fragmentos(agente, q, limite) Búsqueda en documentos (revocada a authenticated)