Spaces:
Sleeping
Sleeping
| -- ============================================================= | |
| -- Supabase Table Schemas for Analytics Storage | |
| -- ============================================================= | |
| -- Run this SQL in the Supabase SQL Editor to mirror the SQLite | |
| -- analytics schema (tool usage, red flags, RAG searches, queries) | |
| -- ============================================================= | |
| CREATE TABLE IF NOT EXISTS tool_usage_events ( | |
| id BIGSERIAL PRIMARY KEY, | |
| tenant_id TEXT NOT NULL, | |
| user_id TEXT, | |
| tool_name TEXT NOT NULL, | |
| "timestamp" BIGINT NOT NULL, | |
| latency_ms INTEGER, | |
| tokens_used INTEGER, | |
| success BOOLEAN DEFAULT TRUE, | |
| error_message TEXT, | |
| metadata JSONB | |
| ); | |
| CREATE INDEX IF NOT EXISTS idx_tool_usage_tenant_timestamp | |
| ON tool_usage_events (tenant_id, "timestamp"); | |
| CREATE TABLE IF NOT EXISTS redflag_violations ( | |
| id BIGSERIAL PRIMARY KEY, | |
| tenant_id TEXT NOT NULL, | |
| user_id TEXT, | |
| rule_id TEXT NOT NULL, | |
| rule_pattern TEXT, | |
| severity TEXT NOT NULL, | |
| matched_text TEXT, | |
| confidence DOUBLE PRECISION, | |
| message_preview TEXT, | |
| "timestamp" BIGINT NOT NULL | |
| ); | |
| CREATE INDEX IF NOT EXISTS idx_redflag_tenant_timestamp | |
| ON redflag_violations (tenant_id, "timestamp"); | |
| CREATE TABLE IF NOT EXISTS rag_search_events ( | |
| id BIGSERIAL PRIMARY KEY, | |
| tenant_id TEXT NOT NULL, | |
| query TEXT NOT NULL, | |
| hits_count INTEGER, | |
| avg_score DOUBLE PRECISION, | |
| top_score DOUBLE PRECISION, | |
| "timestamp" BIGINT NOT NULL, | |
| latency_ms INTEGER | |
| ); | |
| CREATE INDEX IF NOT EXISTS idx_rag_search_tenant_timestamp | |
| ON rag_search_events (tenant_id, "timestamp"); | |
| CREATE TABLE IF NOT EXISTS agent_query_events ( | |
| id BIGSERIAL PRIMARY KEY, | |
| tenant_id TEXT NOT NULL, | |
| user_id TEXT, | |
| message_preview TEXT, | |
| intent TEXT, | |
| tools_used JSONB, | |
| total_tokens INTEGER, | |
| total_latency_ms INTEGER, | |
| success BOOLEAN DEFAULT TRUE, | |
| "timestamp" BIGINT NOT NULL | |
| ); | |
| CREATE INDEX IF NOT EXISTS idx_agent_query_tenant_timestamp | |
| ON agent_query_events (tenant_id, "timestamp"); | |
| -- ============================================================= | |
| -- Optional: Enable Row Level Security and service-role policy | |
| -- ============================================================= | |
| ALTER TABLE tool_usage_events ENABLE ROW LEVEL SECURITY; | |
| ALTER TABLE redflag_violations ENABLE ROW LEVEL SECURITY; | |
| ALTER TABLE rag_search_events ENABLE ROW LEVEL SECURITY; | |
| ALTER TABLE agent_query_events ENABLE ROW LEVEL SECURITY; | |
| CREATE POLICY "Service role can manage tool usage" | |
| ON tool_usage_events FOR ALL | |
| USING (true) WITH CHECK (true); | |
| CREATE POLICY "Service role can manage red flags" | |
| ON redflag_violations FOR ALL | |
| USING (true) WITH CHECK (true); | |
| CREATE POLICY "Service role can manage rag searches" | |
| ON rag_search_events FOR ALL | |
| USING (true) WITH CHECK (true); | |
| CREATE POLICY "Service role can manage agent queries" | |
| ON agent_query_events FOR ALL | |
| USING (true) WITH CHECK (true); | |
| -- ============================================================= | |
| -- After running this script restart your FastAPI/MCP services | |
| -- so they detect the Supabase analytics backend. | |
| -- ============================================================= | |