Modello dei Dati
Lo schema tipizzato in dettaglio si trova nelle migrazioni Supabase e inpackages/database/types.ts. Questa pagina riassume le parti del modello rilevanti per il ragionamento di prodotto e operativo.
Regole di progettazione
- Supabase Postgres è il sistema di registrazione (system of record).
- I webhook sono memorizzati come record operativi di prima classe.
- Le conversazioni sono derivate dalla cronologia durevole dei messaggi.
- Gli outbox job sono righe esplicite, non internals di coda nascosti.
- Lo scoping per workspace e le RLS sono obbligatori su ogni tabella.
Gruppi di entità principali
Workspace e accesso
workspacesworkspace_membersapi_keys
api_keys sono ambitate per workspace e utilizzate per l’autenticazione della API REST pubblica v1. Tutte le operazioni sulle chiavi filtrano in base al workspace_id risolto del chiamante — le chiavi di altri workspace non sono mai visibili né operabili.
Piano dei canali e dei contatti
channelscontactstagscontact_tag_links
Inbox e ledger dei messaggi
conversationsmessagesmessage_events
Template, campagne e journey
templatescampaignscampaign_recipientsjourneys
Livello AI e Margaret
llm_provider_configs— configurazione del provider LLM per workspace (OpenAI, Anthropic, OpenRouter, Ollama, vLLM). Fa riferimento a segreti memorizzati in Supabase Vault.workspace_secret_bindings— associa un workspace a un segreto Vault denominato (ad es. una chiave API LLM o un token di accesso Meta). I segreti non appaiono mai in colonne in chiaro.ai_agents— definisce una persona dell’agent AI, la selezione del modello, i permessi degli strumenti e le impostazioni di pseudonimizzazione PII per workspace.ai_threads— un thread di contesto di conversazione AI associato a una coppia contatto/conversazione.ai_thread_messages— singoli messaggi all’interno di un thread AI (ruoli user, assistant, tool).ai_agent_executions— log di audit delle esecuzioni di tool-use durante l’esecuzione dell’agent (BORD-140–143). Ogni esecuzione registra l’agent, gli strumenti invocati, input/output e l’esito.
Piano dei webhook e operativo
webhook_eventsoutbox_jobsaudit_logs
webhook_eventsmemorizza le consegne in entrata dal provider e dai partneroutbox_jobsmemorizza il lavoro asincrono di follow-up, inclusi gli invii di messaggiaudit_logsmemorizza le azioni dell’operatore e del sistema (modifiche ai membri, cancellazioni GDPR, rotazioni dei segreti, operazioni di scrittura che richiedono revisione)
Progettazione webhook-first
I record dei webhook trasportano:- origine e topic
- risultato della verifica
- chiavi di deduplicazione
- stato di elaborazione
- conteggi dei tentativi
- riepiloghi del payload
Postura Realtime
Lo schema abilita Supabase Realtime su tabelle operative come:conversationsmessageswebhook_eventsoutbox_jobscampaigns
Nota sull’implementazione attuale
Il repository preserva i contratti di route e UI con un’implementazione tipizzata in-memory in@repo/database quando WHATSAPP_PLATFORM_DATA_MODE=mock. Questa è una scelta di consegna, non uno schema diverso. Lo schema canonico si trova nelle migrazioni Supabase e nei tipi generati.