# Migración de Experimentos - Supabase

## Pasos para configurar la tabla de experimentos:

### 1. Ve a tu proyecto de Supabase
Abre: https://supabase.com/dashboard/project/qjioywarwdbxmdihyrti

### 2. Navega a SQL Editor
- Click en **"SQL Editor"** en la barra lateral izquierda
- Click en **"New query"**

### 3. Copia y ejecuta el siguiente SQL:

```sql
-- Crear tabla de experimentos
CREATE TABLE IF NOT EXISTS experiments (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  name TEXT NOT NULL,
  description TEXT,
  type TEXT NOT NULL CHECK (type IN ('pricing', 'advertising', 'content', 'promotion')),
  status TEXT NOT NULL DEFAULT 'planned' CHECK (status IN ('planned', 'active', 'completed', 'paused')),
  
  asins TEXT[] NOT NULL DEFAULT '{}',
  marketplace TEXT NOT NULL,
  
  start_date DATE NOT NULL,
  end_date DATE,
  created_at TIMESTAMPTZ DEFAULT NOW(),
  updated_at TIMESTAMPTZ DEFAULT NOW(),
  
  hypothesis TEXT,
  primary_metric TEXT NOT NULL DEFAULT 'units',
  target_lift_percent NUMERIC,
  
  baseline_units NUMERIC,
  baseline_revenue NUMERIC,
  baseline_gv NUMERIC,
  baseline_cvr NUMERIC,
  baseline_acos NUMERIC,
  
  experiment_units NUMERIC,
  experiment_revenue NUMERIC,
  experiment_gv NUMERIC,
  experiment_cvr NUMERIC,
  experiment_acos NUMERIC,
  
  actual_lift_percent NUMERIC,
  statistical_significance NUMERIC,
  
  learnings TEXT,
  owner TEXT
);

-- Si la tabla ya existe y necesitas actualizarla, usa:
-- ALTER TABLE experiments 
-- ADD COLUMN IF NOT EXISTS baseline_gv NUMERIC,
-- ADD COLUMN IF NOT EXISTS baseline_cvr NUMERIC,
-- ADD COLUMN IF NOT EXISTS baseline_acos NUMERIC,
-- ADD COLUMN IF NOT EXISTS experiment_gv NUMERIC,
-- ADD COLUMN IF NOT EXISTS experiment_cvr NUMERIC,
-- ADD COLUMN IF NOT EXISTS experiment_acos NUMERIC;

-- Crear índices para mejorar rendimiento
CREATE INDEX IF NOT EXISTS idx_experiments_status ON experiments(status);
CREATE INDEX IF NOT EXISTS idx_experiments_marketplace ON experiments(marketplace);
CREATE INDEX IF NOT EXISTS idx_experiments_type ON experiments(type);
CREATE INDEX IF NOT EXISTS idx_experiments_dates ON experiments(start_date, end_date);
CREATE INDEX IF NOT EXISTS idx_experiments_asins ON experiments USING GIN(asins);

-- Función para actualizar updated_at
CREATE OR REPLACE FUNCTION update_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
  NEW.updated_at = NOW();
  RETURN NEW;
END;
$$ LANGUAGE plpgsql;

-- Trigger para actualizar updated_at automáticamente
DROP TRIGGER IF EXISTS update_experiments_updated_at ON experiments;
CREATE TRIGGER update_experiments_updated_at
  BEFORE UPDATE ON experiments
  FOR EACH ROW
  EXECUTE FUNCTION update_updated_at_column();

-- Deshabilitar RLS para desarrollo (opcional, habilitar en producción)
ALTER TABLE experiments DISABLE ROW LEVEL SECURITY;
```

### 4. Click en **"Run"** para ejecutar el SQL

### 5. Verifica que se creó correctamente
- Ve a **"Table Editor"** en la barra lateral
- Deberías ver la tabla `experiments` en la lista

### 6. ¡Listo!
La pestaña de Experiments en tu aplicación ya debería funcionar correctamente.

---

## Solución de problemas:

### Error: "relation already exists"
La tabla ya existe. No necesitas hacer nada más.

### Error: "permission denied"
Asegúrate de estar usando la **service_role key** en tu `.env.local`:
```
SUPABASE_SERVICE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
```

### Error: "type already exists"
Los tipos ya están definidos. El resto del SQL debería ejecutarse sin problemas.
