Spaces:
Runtime error
Runtime error
| -- Create the table for storing agent metrics over time | |
| CREATE TABLE agent_metrics ( | |
| id SERIAL PRIMARY KEY, | |
| tenant_id UUID NOT NULL, | |
| date DATE NOT NULL, | |
| total_agents INT NOT NULL, | |
| active_agents INT NOT NULL, | |
| tasks_completed INT NOT NULL, | |
| avg_rating FLOAT NOT NULL, | |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| -- Insert sample data into agent_metrics table | |
| INSERT INTO agent_metrics (tenant_id, date, total_agents, active_agents, tasks_completed, avg_rating) VALUES | |
| ('tenant-1-uuid', '2023-01-01', 500, 375, 8000, 4.5), | |
| ('tenant-1-uuid', '2023-01-08', 525, 395, 8500, 4.52), | |
| ('tenant-1-uuid', '2023-01-15', 540, 410, 9200, 4.54), | |
| ('tenant-1-uuid', '2023-01-22', 560, 430, 9800, 4.56), | |
| ('tenant-1-uuid', '2023-01-29', 575, 445, 10400, 4.58), | |
| ('tenant-2-uuid', '2023-02-05', 590, 460, 11000, 4.6), | |
| ('tenant-2-uuid', '2023-02-12', 600, 475, 11600, 4.62), | |
| ('tenant-2-uuid', '2023-02-19', 615, 490, 12200, 4.64), | |
| ('tenant-2-uuid', '2023-02-26', 630, 505, 12800, 4.66), | |
| ('tenant-2-uuid', '2023-03-05', 645, 520, 13400, 4.68), | |
| ('tenant-1-uuid', '2023-03-12', 660, 535, 14000, 4.7), | |
| ('tenant-1-uuid', '2023-03-19', 675, 550, 14600, 4.72), | |
| ('tenant-1-uuid', '2023-03-26', 690, 565, 15200, 4.74), | |
| ('tenant-1-uuid', '2023-04-02', 700, 580, 15800, 4.76), | |
| ('tenant-1-uuid', '2023-04-09', 710, 595, 16400, 4.78); | |
| -- Create the table for storing agent team performance | |
| CREATE TABLE agent_teams ( | |
| id SERIAL PRIMARY KEY, | |
| tenant_id UUID NOT NULL, | |
| team VARCHAR(255) NOT NULL, | |
| agents INT NOT NULL, | |
| tasks INT NOT NULL, | |
| avg_rating FLOAT NOT NULL, | |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| -- Insert sample data into agent_teams table | |
| INSERT INTO agent_teams (tenant_id, team, agents, tasks, avg_rating) VALUES | |
| ('tenant-1-uuid', 'Sales', 120, 3200, 4.7), | |
| ('tenant-1-uuid', 'Support', 180, 4800, 4.75), | |
| ('tenant-1-uuid', 'Marketing', 95, 2400, 4.65), | |
| ('tenant-2-uuid', 'Analytics', 65, 1600, 4.8), | |
| ('tenant-2-uuid', 'HR', 40, 800, 4.72); | |
| -- Create the table for storing custom reports | |
| CREATE TABLE custom_reports ( | |
| id SERIAL PRIMARY KEY, | |
| tenant_id UUID NOT NULL, | |
| report_type VARCHAR(255) NOT NULL, | |
| report_period VARCHAR(255) NOT NULL, | |
| start_date DATE, | |
| end_date DATE, | |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| -- Create the table for storing forecast data | |
| CREATE TABLE forecast_data ( | |
| id SERIAL PRIMARY KEY, | |
| tenant_id UUID NOT NULL, | |
| metric VARCHAR(255) NOT NULL, | |
| period VARCHAR(255) NOT NULL, | |
| date DATE NOT NULL, | |
| value INT NOT NULL, | |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| -- Enable Row-Level Security (RLS) for all analytics reporting tables | |
| ALTER TABLE agent_metrics ENABLE ROW LEVEL SECURITY; | |
| ALTER TABLE agent_teams ENABLE ROW LEVEL SECURITY; | |
| ALTER TABLE custom_reports ENABLE ROW LEVEL SECURITY; | |
| ALTER TABLE forecast_data ENABLE ROW LEVEL SECURITY; | |
| -- Create RLS policies for agent_metrics | |
| CREATE POLICY "tenant_isolation" ON agent_metrics | |
| FOR ALL | |
| USING (tenant_id = current_setting('app.current_tenant')::uuid); | |
| CREATE POLICY "Enable real-time" ON agent_metrics | |
| FOR SELECT USING (true); | |
| CREATE POLICY "metrics_access" ON agent_metrics | |
| FOR SELECT | |
| USING (auth.uid() = user_id); | |
| -- Create RLS policies for agent_teams | |
| CREATE POLICY "tenant_isolation" ON agent_teams | |
| FOR ALL | |
| USING (tenant_id = current_setting('app.current_tenant')::uuid); | |
| CREATE POLICY "Enable real-time" ON agent_teams | |
| FOR SELECT USING (true); | |
| CREATE POLICY "teams_access" ON agent_teams | |
| FOR SELECT | |
| USING (auth.uid() = user_id); | |
| -- Create RLS policies for custom_reports | |
| CREATE POLICY "tenant_isolation" ON custom_reports | |
| FOR ALL | |
| USING (tenant_id = current_setting('app.current_tenant')::uuid); | |
| CREATE POLICY "Enable real-time" ON custom_reports | |
| FOR SELECT USING (true); | |
| CREATE POLICY "reports_access" ON custom_reports | |
| FOR SELECT | |
| USING (auth.uid() = user_id); | |
| -- Create RLS policies for forecast_data | |
| CREATE POLICY "tenant_isolation" ON forecast_data | |
| FOR ALL | |
| USING (tenant_id = current_setting('app.current_tenant')::uuid); | |
| CREATE POLICY "Enable real-time" ON forecast_data | |
| FOR SELECT USING (true); | |
| CREATE POLICY "forecast_access" ON forecast_data | |
| FOR SELECT | |
| USING (auth.uid() = user_id); | |
| -- Create indexes for optimization | |
| CREATE INDEX idx_agent_metrics_tenant_id ON agent_metrics(tenant_id); | |
| CREATE INDEX idx_agent_teams_tenant_id ON agent_teams(tenant_id); | |
| CREATE INDEX idx_custom_reports_tenant_id ON custom_reports(tenant_id); | |
| CREATE INDEX idx_forecast_data_tenant_id ON forecast_data(tenant_id); |