

CREATE TABLE IF NOT EXISTS `whatsapp_ai_knowledge` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `category` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'general',
  `title` varchar(160) COLLATE utf8mb4_unicode_ci NOT NULL,
  `content` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `visibility` enum('public','validated_customer','internal') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'public',
  `priority` int(11) NOT NULL DEFAULT '10',
  `is_active` tinyint(1) NOT NULL DEFAULT '1',
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_ai_knowledge_category` (`category`,`is_active`,`visibility`),
  KEY `idx_ai_knowledge_priority` (`priority`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `whatsapp_ai_logs` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `phone` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL,
  `customer_id` int(10) unsigned DEFAULT NULL,
  `intent` varchar(80) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `input_text` text COLLATE utf8mb4_unicode_ci,
  `reply_text` text COLLATE utf8mb4_unicode_ci,
  `raw_json` mediumtext COLLATE utf8mb4_unicode_ci,
  `status` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'created',
  `reason` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_ai_logs_phone` (`phone`,`created_at`),
  KEY `idx_ai_logs_customer` (`customer_id`,`created_at`),
  KEY `idx_ai_logs_status` (`status`,`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Contenido inicial editable. No contiene precios inventados.
INSERT INTO `whatsapp_ai_knowledge` (`category`,`title`,`content`,`visibility`,`priority`,`is_active`,`created_at`,`updated_at`)
SELECT 'general','Tono de atención','Responder siempre en español argentino, claro, amable y profesional. Evitar respuestas largas. Si no hay certeza, pedir un dato concreto o derivar a administración.','public',100,1,NOW(),NOW()
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM whatsapp_ai_knowledge WHERE title='Tono de atención');

INSERT INTO `whatsapp_ai_knowledge` (`category`,`title`,`content`,`visibility`,`priority`,`is_active`,`created_at`,`updated_at`)
SELECT 'horarios','Horarios de atención','Atención administrativa y soporte: lunes a viernes de 8 a 20 hs; sábados de 8 a 12 hs. Fuera de horario se puede dejar consulta y será revisada por administración.','public',90,1,NOW(),NOW()
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM whatsapp_ai_knowledge WHERE title='Horarios de atención');

INSERT INTO `whatsapp_ai_knowledge` (`category`,`title`,`content`,`visibility`,`priority`,`is_active`,`created_at`,`updated_at`)
SELECT 'pagos','Pagos y comprobantes','El cliente puede enviar captura o PDF del comprobante por WhatsApp. Todo comprobante queda pendiente de conciliación administrativa; no confirmar impacto del pago hasta revisión. Si el número no está registrado, pedir código de cliente, DNI/CUIT, nombre completo o domicilio del servicio.','public',95,1,NOW(),NOW()
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM whatsapp_ai_knowledge WHERE title='Pagos y comprobantes');

INSERT INTO `whatsapp_ai_knowledge` (`category`,`title`,`content`,`visibility`,`priority`,`is_active`,`created_at`,`updated_at`)
SELECT 'instalacion','Nueva instalación','Para solicitar una nueva instalación se debe pedir nombre y apellido, domicilio completo, barrio/localidad, referencia de ubicación y teléfono alternativo. No prometer cobertura ni fecha hasta revisión técnica/comercial.','public',90,1,NOW(),NOW()
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM whatsapp_ai_knowledge WHERE title='Nueva instalación');

INSERT INTO `whatsapp_ai_knowledge` (`category`,`title`,`content`,`visibility`,`priority`,`is_active`,`created_at`,`updated_at`)
SELECT 'planes','Planes y costos','Los planes, costos de instalación y promociones deben cargarse en esta base de conocimiento con valores vigentes. Si no hay precios cargados, pedir zona/localidad y derivar a comercial.','public',80,1,NOW(),NOW()
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM whatsapp_ai_knowledge WHERE title='Planes y costos');

INSERT INTO `whatsapp_ai_knowledge` (`category`,`title`,`content`,`visibility`,`priority`,`is_active`,`created_at`,`updated_at`)
SELECT 'soporte_fibra','Soporte básico fibra','Guía básica para fibra: verificar que la ONU/router tenga energía, revisar que no haya cables flojos, no manipular la fibra, reiniciar el equipo desconectando 20 segundos y esperar 3 minutos. Si continúa sin internet, pedir luces visibles del equipo y derivar a soporte. No mencionar IP, ONU, OLT, PON ni datos internos.','public',85,1,NOW(),NOW()
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM whatsapp_ai_knowledge WHERE title='Soporte básico fibra');

INSERT INTO `whatsapp_ai_knowledge` (`category`,`title`,`content`,`visibility`,`priority`,`is_active`,`created_at`,`updated_at`)
SELECT 'soporte_antena','Soporte básico antena','Guía básica para antena: verificar que el inyector/fuente esté enchufado, revisar cables de red, reiniciar desconectando 20 segundos y esperar 3 minutos. Si hay tormenta, cortes eléctricos o el problema persiste, derivar a soporte. No mencionar IP, MAC ni datos internos.','public',85,1,NOW(),NOW()
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM whatsapp_ai_knowledge WHERE title='Soporte básico antena');
