-- =====================================================================
-- SOINSA MIDAS — SCRIPT SQL FASE 1
-- 8 Tablas base para sistema integrado
-- Copiar y pegar en phpMyAdmin Hostinger
-- =====================================================================
SET NAMES utf8mb4;

-- 1. COTIZACIONES
CREATE TABLE IF NOT EXISTS cotizaciones (
  id INT AUTO_INCREMENT PRIMARY KEY,
  cot_num VARCHAR(20) NOT NULL UNIQUE,
  empresa VARCHAR(200),
  rut VARCHAR(20),
  contacto VARCHAR(100),
  cargo VARCHAR(100),
  telefono VARCHAR(20),
  email VARCHAR(100),
  proyecto VARCHAR(200),
  ubicacion VARCHAR(200),
  duracion VARCHAR(50),
  responsable VARCHAR(50),
  obs TEXT,
  items JSON,
  proveedores JSON,
  traslados JSON,
  costo_snapshot JSON,
  total_uf DECIMAL(10,2),
  total_clp BIGINT,
  margen_pct DECIMAL(5,2),
  estado ENUM('Borrador','Enviada','Aprobada','Rechazada','En contrato') DEFAULT 'Borrador',
  oc VARCHAR(50),
  notion_id VARCHAR(100),
  creado_por VARCHAR(50),
  created_at DATETIME DEFAULT NOW(),
  updated_at DATETIME DEFAULT NOW() ON UPDATE NOW(),
  INDEX idx_cot_num (cot_num),
  INDEX idx_empresa (empresa),
  INDEX idx_estado (estado)
);

-- 2. CONTRATOS
CREATE TABLE IF NOT EXISTS contratos (
  id INT AUTO_INCREMENT PRIMARY KEY,
  contrato_num VARCHAR(20) NOT NULL UNIQUE,
  cot_origen VARCHAR(20),
  empresa VARCHAR(200),
  rut VARCHAR(20),
  proyecto VARCHAR(200),
  responsable VARCHAR(50),
  equipos JSON,
  valor_mensual BIGINT,
  valor_uf DECIMAL(10,2),
  fecha_inicio DATE,
  fecha_termino DATE,
  estado ENUM('Activo','Pausado','Terminado','En negociación') DEFAULT 'En negociación',
  oc VARCHAR(50),
  archivo_url VARCHAR(500),
  created_at DATETIME DEFAULT NOW(),
  INDEX idx_empresa (empresa),
  INDEX idx_estado (estado)
);

-- 3. EDP (ESTADO DE PAGO)
CREATE TABLE IF NOT EXISTS edp (
  id INT AUTO_INCREMENT PRIMARY KEY,
  edp_num VARCHAR(20) NOT NULL UNIQUE,
  contrato_id INT,
  cot_num VARCHAR(20),
  empresa VARCHAR(200),
  proyecto VARCHAR(200),
  responsable VARCHAR(50),
  periodo_desde DATE,
  periodo_hasta DATE,
  items_horometro JSON,
  total_horas DECIMAL(8,2),
  total_clp BIGINT,
  total_uf DECIMAL(10,2),
  iva BIGINT,
  total_con_iva BIGINT,
  estado ENUM('Borrador','Enviado','Aprobado','Facturado','Pagado') DEFAULT 'Borrador',
  nota_cobro TEXT,
  factura_num VARCHAR(50),
  fecha_pago DATE,
  created_at DATETIME DEFAULT NOW(),
  updated_at DATETIME DEFAULT NOW() ON UPDATE NOW(),
  INDEX idx_edp_num (edp_num),
  INDEX idx_empresa (empresa),
  INDEX idx_estado (estado)
);

-- 4. EQUIPOS_CATALOGO
CREATE TABLE IF NOT EXISTS equipos_catalogo (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nombre VARCHAR(200) NOT NULL,
  categoria VARCHAR(100),
  unidad VARCHAR(20),
  uf_mes_ref DECIMAL(8,2),
  uf_hora_ref DECIMAL(8,2),
  nota TEXT,
  activo TINYINT DEFAULT 1,
  created_at DATETIME DEFAULT NOW(),
  INDEX idx_categoria (categoria)
);

-- 5. CLIENTES
CREATE TABLE IF NOT EXISTS clientes (
  id INT AUTO_INCREMENT PRIMARY KEY,
  razon_social VARCHAR(200) NOT NULL,
  rut VARCHAR(20),
  giro VARCHAR(200),
  direccion VARCHAR(300),
  contacto_nombre VARCHAR(100),
  contacto_cargo VARCHAR(100),
  contacto_tel VARCHAR(20),
  contacto_email VARCHAR(100),
  activo TINYINT DEFAULT 1,
  created_at DATETIME DEFAULT NOW(),
  INDEX idx_rut (rut),
  INDEX idx_razon_social (razon_social)
);

-- 6. DOCUMENTOS_IA
CREATE TABLE IF NOT EXISTS documentos_ia (
  id INT AUTO_INCREMENT PRIMARY KEY,
  tipo ENUM('factura','audio','contrato','oc','otro') DEFAULT 'otro',
  archivo_url VARCHAR(500),
  contenido_extraido LONGTEXT,
  datos_estructurados JSON,
  procesado_por VARCHAR(50),
  vinculado_a VARCHAR(20),
  estado ENUM('pendiente','procesado','revisado') DEFAULT 'pendiente',
  creado_por VARCHAR(50),
  created_at DATETIME DEFAULT NOW(),
  INDEX idx_tipo (tipo),
  INDEX idx_vinculado_a (vinculado_a)
);

-- 7. AGENTE_CONVERSACIONES
CREATE TABLE IF NOT EXISTS agente_conversaciones (
  id INT AUTO_INCREMENT PRIMARY KEY,
  sesion_id VARCHAR(50),
  modulo VARCHAR(30),
  rol ENUM('user','assistant') DEFAULT 'user',
  mensaje LONGTEXT,
  contexto JSON,
  created_at DATETIME DEFAULT NOW(),
  INDEX idx_sesion (sesion_id),
  INDEX idx_modulo (modulo)
);

-- 8. WHATSAPP_LOG
CREATE TABLE IF NOT EXISTS whatsapp_log (
  id INT AUTO_INCREMENT PRIMARY KEY,
  tipo VARCHAR(50),
  destinatario VARCHAR(100),
  telefono VARCHAR(20),
  mensaje LONGTEXT,
  link_wa VARCHAR(1000),
  vinculado_a VARCHAR(20),
  enviado_por VARCHAR(50),
  created_at DATETIME DEFAULT NOW(),
  INDEX idx_tipo (tipo),
  INDEX idx_telefono (telefono)
);

-- =====================================================================
-- ✅ SCRIPT LISTO — copiar TODO esto y pegar en phpMyAdmin
-- =====================================================================
