-- phpMyAdmin SQL Dump

-- ============================================================
-- TABLAS AUTO-CREADAS: AHORA INCLUIDAS EN ESTE DUMP
-- ------------------------------------------------------------
-- Antes, las tablas admin_audit_log, alertas_precio y producto_qa
-- se creaban en tiempo de ejecución (CREATE TABLE IF NOT EXISTS)
-- y NO venían en este dump. Ahora están definidas aquí con su
-- esquema completo (columnas, índices y foreign keys) para que
-- una instalación fresca quede 100% lista desde el primer minuto:
--
--   admin_audit_log  → auditoría del panel (includes/functions.php
--                      y panel-admin-tech/logs.php)
--   alertas_precio   → aviso de bajada de precio (api/price-notify.php)
--   producto_qa      → preguntas de producto (api/qa-ask.php)
--
-- El código conserva su CREATE TABLE IF NOT EXISTS como red de
-- seguridad para instalaciones antiguas: si la tabla ya existe
-- (porque el dump la creó), simplemente no hace nada.
--
-- La tabla `testimonios` (reseñas) incluye las 3 columnas extra
-- (titulo, foto, compra_verificada) que antes se agregaban por
-- migración automática. Esa migración también se conserva como
-- red de seguridad en api/review-add.php y
-- panel-admin-tech/testimonios.php.
--
-- La tabla `historial_pedidos` se llena desde
-- panel-admin-tech/pedidos.php cada vez que un admin cambia el
-- estado de un pedido.
-- ============================================================
-- version 5.2.1
-- https://www.phpmyadmin.net/
--
-- Servidor: 127.0.0.1
-- Tiempo de generación: 03-08-2026 a las 20:55:18
-- Versión del servidor: 10.4.32-MariaDB
-- Versión de PHP: 8.2.12

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Base de datos: `techshop_peru`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `admin_audit_log`
--

CREATE TABLE `admin_audit_log` (
  `id` int(11) NOT NULL,
  `usuario_id` int(11) DEFAULT NULL,
  `accion` varchar(100) NOT NULL,
  `tabla` varchar(100) NOT NULL,
  `registro_id` int(11) DEFAULT 0,
  `datos` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`datos`)),
  `ip` varchar(64) DEFAULT NULL,
  `creado_en` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `alertas_precio`
--

CREATE TABLE `alertas_precio` (
  `id` int(11) NOT NULL,
  `producto_id` int(11) NOT NULL,
  `email` varchar(255) NOT NULL,
  `creado_en` timestamp NOT NULL DEFAULT current_timestamp(),
  `notificado` tinyint(1) DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `banners`
--

CREATE TABLE `banners` (
  `id` int(11) NOT NULL,
  `titulo` varchar(200) NOT NULL,
  `subtitulo` varchar(300) DEFAULT NULL,
  `descripcion` text DEFAULT NULL,
  `imagen` varchar(255) NOT NULL,
  `enlace` varchar(255) DEFAULT NULL,
  `texto_boton` varchar(50) DEFAULT 'Ver más',
  `activo` tinyint(1) NOT NULL DEFAULT 1,
  `orden` int(11) NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Volcado de datos para la tabla `banners`
--

INSERT INTO `banners` (`id`, `titulo`, `subtitulo`, `descripcion`, `imagen`, `enlace`, `texto_boton`, `activo`, `orden`) VALUES
(1, '¡Ofertas de Verano!', 'Hasta 30% de descuento', 'En laptops, monitores y accesorios seleccionados con envío gratis a Lima y provincias.', '', NULL, 'Ver Ofertas', 1, 1),
(2, 'Laptops Gamer', 'Potencia sin límites', 'Descubre nuestra selección de laptops gaming con las últimas RTX serie 40. Financiamiento disponible.', '', NULL, 'Explorar Laptops', 1, 2),
(3, 'Tecnología para tu Hogar', 'Smart Home & Oficina', 'Equipa tu espacio de trabajo con lo último en tecnología. Routers WiFi 6, impresoras EcoTank y más.', '', NULL, 'Comprar Ahora', 1, 3);

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `carrito`
--

CREATE TABLE `carrito` (
  `id` int(11) NOT NULL,
  `usuario_id` int(11) DEFAULT NULL,
  `sesion_id` varchar(100) DEFAULT NULL,
  `producto_id` int(11) NOT NULL,
  `cantidad` int(11) NOT NULL DEFAULT 1,
  `fecha_agregado` datetime NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `categorias`
--

CREATE TABLE `categorias` (
  `id` int(11) NOT NULL,
  `nombre` varchar(100) NOT NULL,
  `slug` varchar(120) NOT NULL,
  `descripcion` text DEFAULT NULL,
  `imagen` varchar(255) DEFAULT NULL,
  `icono` varchar(50) DEFAULT NULL,
  `activo` tinyint(1) NOT NULL DEFAULT 1,
  `orden` int(11) NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Volcado de datos para la tabla `categorias`
--

INSERT INTO `categorias` (`id`, `nombre`, `slug`, `descripcion`, `imagen`, `icono`, `activo`, `orden`) VALUES
(1, 'Laptops', 'laptops', 'Laptops para trabajo, gaming y uso diario', NULL, 'laptop', 1, 1),
(2, 'Computadoras', 'computadoras', 'PC de escritorio, All-in-One y Workstations', NULL, 'desktop', 1, 2),
(3, 'Componentes', 'componentes', 'Procesadores, RAM, discos, motherboards y más', NULL, 'cpu', 1, 3),
(4, 'Monitores', 'monitores', 'Monitores para oficina, gaming y diseño', NULL, 'monitor', 1, 4),
(5, 'Celulares', 'celulares', 'Smartphones de todas las marcas', NULL, 'smartphone', 1, 5),
(6, 'Impresoras', 'impresoras', 'Impresoras láser, tinta y multifuncionales', NULL, 'printer', 1, 6),
(7, 'Redes', 'redes', 'Routers, switches, access points y cables', NULL, 'wifi', 1, 7),
(8, 'Accesorios', 'accesorios', 'Teclados, mouse, auriculares, mochilas y más', NULL, 'headphones', 1, 8);

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `configuracion`
--

CREATE TABLE `configuracion` (
  `id` int(11) NOT NULL,
  `clave` varchar(100) NOT NULL,
  `valor` text DEFAULT NULL,
  `descripcion` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Volcado de datos para la tabla `configuracion`
--

INSERT INTO `configuracion` (`id`, `clave`, `valor`, `descripcion`) VALUES
(1, 'tienda_nombre', 'TechShop Perú', 'Nombre de la tienda'),
(2, 'tienda_slogan', 'Tecnología al alcance de todo el Perú', 'Eslogan'),
(3, 'tienda_email', 'ventas@techshop.pe', 'Email de contacto'),
(4, 'tienda_telefono', '+51 1 500-5000', 'Teléfono principal'),
(5, 'tienda_whatsapp', '+51987654321', 'WhatsApp'),
(6, 'tienda_direccion', 'Av. Javier Prado 1234, San Isidro, Lima', 'Dirección física'),
(7, 'tienda_ruc', '20123456789', 'RUC'),
(8, 'moneda', 'S/', 'Símbolo de moneda'),
(9, 'igv_porcentaje', '18', 'Porcentaje IGV'),
(10, 'costo_envio_lima', '15.00', 'Costo envío Lima'),
(11, 'costo_envio_provincia', '25.00', 'Costo envío provincia');

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `cupones`
--

CREATE TABLE `cupones` (
  `id` int(11) NOT NULL,
  `codigo` varchar(50) NOT NULL,
  `descripcion` varchar(255) DEFAULT NULL,
  `tipo` enum('porcentaje','fijo') NOT NULL DEFAULT 'porcentaje',
  `valor` decimal(10,2) NOT NULL,
  `minimo_compra` decimal(10,2) DEFAULT 0.00,
  `fecha_inicio` datetime DEFAULT NULL,
  `fecha_expiracion` datetime DEFAULT NULL,
  `usos_maximos` int(11) DEFAULT NULL,
  `usos_actuales` int(11) NOT NULL DEFAULT 0,
  `activo` tinyint(1) NOT NULL DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Volcado de datos para la tabla `cupones`
--

INSERT INTO `cupones` (`id`, `codigo`, `descripcion`, `tipo`, `valor`, `minimo_compra`, `fecha_inicio`, `fecha_expiracion`, `usos_maximos`, `usos_actuales`, `activo`) VALUES
(1, 'VERANO2026', 'Descuento del 10% por temporada de verano', 'porcentaje', 10.00, 100.00, '2026-01-01 00:00:00', '2026-12-31 23:59:59', 500, 0, 1),
(2, 'TECH50', 'Descuento de S/ 50 en compras mayores a S/ 500', 'fijo', 50.00, 500.00, '2026-01-01 00:00:00', '2026-12-31 23:59:59', 200, 0, 1);

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `detalles_pedido`
--

CREATE TABLE `detalles_pedido` (
  `id` int(11) NOT NULL,
  `pedido_id` int(11) NOT NULL,
  `producto_id` int(11) NOT NULL,
  `nombre_producto` varchar(200) NOT NULL,
  `precio_unitario` decimal(10,2) NOT NULL,
  `cantidad` int(11) NOT NULL,
  `subtotal` decimal(10,2) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `direcciones_usuario`
--

CREATE TABLE `direcciones_usuario` (
  `id` int(11) NOT NULL,
  `usuario_id` int(11) NOT NULL,
  `etiqueta` varchar(50) NOT NULL DEFAULT 'Casa',
  `destinatario` varchar(200) DEFAULT NULL,
  `direccion` varchar(255) NOT NULL,
  `referencia` varchar(255) DEFAULT NULL,
  `ciudad` varchar(100) NOT NULL,
  `departamento` varchar(100) NOT NULL,
  `codigo_postal` varchar(10) DEFAULT NULL,
  `telefono` varchar(20) DEFAULT NULL,
  `es_principal` tinyint(1) NOT NULL DEFAULT 0,
  `fecha_registro` datetime NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `especificaciones_producto`
--

CREATE TABLE `especificaciones_producto` (
  `id` int(11) NOT NULL,
  `producto_id` int(11) NOT NULL,
  `clave` varchar(100) NOT NULL,
  `valor` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Volcado de datos para la tabla `especificaciones_producto`
--

INSERT INTO `especificaciones_producto` (`id`, `producto_id`, `clave`, `valor`) VALUES
(1, 1, 'Procesador', 'Intel Core i5-1235U (12va Gen)'),
(2, 1, 'RAM', '16GB DDR4-3200MHz'),
(3, 1, 'Almacenamiento', '512GB SSD NVMe'),
(4, 1, 'Pantalla', '15.6\" Full HD (1920x1080) IPS'),
(5, 1, 'Sistema Operativo', 'Windows 11 Home'),
(6, 1, 'Garantía', '1 año'),
(7, 2, 'Procesador', 'AMD Ryzen 5 5500U'),
(8, 2, 'RAM', '8GB DDR4-3200MHz'),
(9, 2, 'Almacenamiento', '256GB SSD NVMe'),
(10, 2, 'Pantalla', '14\" Full HD (1920x1080)'),
(11, 2, 'Sistema Operativo', 'Windows 11 Home'),
(12, 6, 'Procesador', 'Intel Core i7-13700K'),
(13, 6, 'Núcleos', '16 (8P + 8E)'),
(14, 6, 'Hilos', '24'),
(15, 6, 'Frecuencia Máxima', '5.4GHz'),
(16, 6, 'Socket', 'LGA1700'),
(17, 11, 'Pantalla', '6.8\" Dynamic AMOLED 2X, 120Hz'),
(18, 11, 'Procesador', 'Snapdragon 8 Gen 3 for Galaxy'),
(19, 11, 'RAM', '12GB'),
(20, 11, 'Almacenamiento', '256GB'),
(21, 11, 'Cámara Principal', '200MP + 50MP + 12MP + 10MP');

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `favoritos`
--

CREATE TABLE `favoritos` (
  `id` int(11) NOT NULL,
  `usuario_id` int(11) NOT NULL,
  `producto_id` int(11) NOT NULL,
  `fecha_agregado` datetime NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `historial_pedidos`
--

CREATE TABLE `historial_pedidos` (
  `id` int(11) NOT NULL,
  `pedido_id` int(11) NOT NULL,
  `estado_anterior` varchar(50) DEFAULT NULL,
  `estado_nuevo` varchar(50) NOT NULL,
  `usuario_id` int(11) DEFAULT NULL,
  `fecha` datetime NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `imagenes_producto`
--

CREATE TABLE `imagenes_producto` (
  `id` int(11) NOT NULL,
  `producto_id` int(11) NOT NULL,
  `ruta` varchar(255) NOT NULL,
  `orden` int(11) NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `marcas`
--

CREATE TABLE `marcas` (
  `id` int(11) NOT NULL,
  `nombre` varchar(100) NOT NULL,
  `slug` varchar(120) NOT NULL,
  `descripcion` text DEFAULT NULL,
  `logo` varchar(255) DEFAULT NULL,
  `activo` tinyint(1) NOT NULL DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Volcado de datos para la tabla `marcas`
--

INSERT INTO `marcas` (`id`, `nombre`, `slug`, `descripcion`, `logo`, `activo`) VALUES
(1, 'HP', 'hp', 'Hewlett-Packard - Calidad y rendimiento', NULL, 1),
(2, 'Lenovo', 'lenovo', 'Innovación y durabilidad', NULL, 1),
(3, 'Dell', 'dell', 'Tecnología empresarial y personal', NULL, 1),
(4, 'Asus', 'asus', 'Innovación para gamers y profesionales', NULL, 1),
(5, 'Acer', 'acer', 'Tecnología accesible para todos', NULL, 1),
(6, 'Apple', 'apple', 'Diseño y ecosistema premium', NULL, 1),
(7, 'Samsung', 'samsung', 'Líder en tecnología móvil y pantallas', NULL, 1),
(8, 'Xiaomi', 'xiaomi', 'Innovación con excelente relación calidad-precio', NULL, 1),
(9, 'Logitech', 'logitech', 'Periféricos de alta calidad', NULL, 1),
(10, 'Kingston', 'kingston', 'Memorias y almacenamiento', NULL, 1),
(11, 'Western Digital', 'western-digital', 'Soluciones de almacenamiento', NULL, 1),
(12, 'Intel', 'intel', 'Procesadores de alto rendimiento', NULL, 1),
(13, 'AMD', 'amd', 'Procesadores y gráficos', NULL, 1),
(14, 'Nvidia', 'nvidia', 'Tarjetas gráficas', NULL, 1),
(15, 'Epson', 'epson', 'Impresión y proyección', NULL, 1),
(16, 'TP-Link', 'tp-link', 'Conectividad y redes', NULL, 1),
(17, 'Corsair', 'corsair', 'Componentes y periféricos gaming', NULL, 1),
(18, 'MSI', 'msi', 'Gaming y creadores de contenido', NULL, 1);

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `mensajes_contacto`
--

CREATE TABLE `mensajes_contacto` (
  `id` int(11) NOT NULL,
  `nombre` varchar(150) NOT NULL,
  `email` varchar(150) NOT NULL,
  `telefono` varchar(20) DEFAULT NULL,
  `asunto` varchar(200) DEFAULT NULL,
  `mensaje` text NOT NULL,
  `leido` tinyint(1) NOT NULL DEFAULT 0,
  `fecha_envio` datetime NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `pedidos`
--

CREATE TABLE `pedidos` (
  `id` int(11) NOT NULL,
  `usuario_id` int(11) NOT NULL,
  `numero_pedido` varchar(20) NOT NULL,
  `estado` enum('pendiente','confirmado','enviado','entregado','cancelado') NOT NULL DEFAULT 'pendiente',
  `tipo_comprobante` enum('boleta','factura') NOT NULL DEFAULT 'boleta',
  `num_documento` varchar(20) DEFAULT NULL,
  `razon_social` varchar(200) DEFAULT NULL,
  `subtotal` decimal(10,2) NOT NULL,
  `descuento` decimal(10,2) NOT NULL DEFAULT 0.00,
  `igv` decimal(10,2) NOT NULL DEFAULT 0.00,
  `envio` decimal(10,2) NOT NULL DEFAULT 0.00,
  `total` decimal(10,2) NOT NULL,
  `direccion_envio` text NOT NULL,
  `ciudad_envio` varchar(100) DEFAULT NULL,
  `departamento_envio` varchar(100) DEFAULT NULL,
  `codigo_postal_envio` varchar(10) DEFAULT NULL,
  `metodo_pago` varchar(50) DEFAULT 'contra_entrega',
  `voucher_imagen` varchar(255) DEFAULT NULL,
  `cupon_codigo` varchar(50) DEFAULT NULL,
  `notas` text DEFAULT NULL,
  `fecha_pedido` datetime NOT NULL DEFAULT current_timestamp(),
  `fecha_actualizacion` datetime DEFAULT NULL ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `productos`
--

CREATE TABLE `productos` (
  `id` int(11) NOT NULL,
  `nombre` varchar(200) NOT NULL,
  `slug` varchar(220) NOT NULL,
  `descripcion_corta` varchar(300) DEFAULT NULL,
  `descripcion` text DEFAULT NULL,
  `precio` decimal(10,2) NOT NULL,
  `precio_oferta` decimal(10,2) DEFAULT NULL,
  `stock` int(11) NOT NULL DEFAULT 0,
  `sku` varchar(50) DEFAULT NULL,
  `categoria_id` int(11) NOT NULL,
  `marca_id` int(11) NOT NULL,
  `imagen_principal` varchar(255) DEFAULT NULL,
  `destacado` tinyint(1) NOT NULL DEFAULT 0,
  `en_oferta` tinyint(1) NOT NULL DEFAULT 0,
  `activo` tinyint(1) NOT NULL DEFAULT 1,
  `calificacion` decimal(2,1) DEFAULT 0.0,
  `num_calificaciones` int(11) DEFAULT 0,
  `fecha_creacion` datetime NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Volcado de datos para la tabla `productos`
--

INSERT INTO `productos` (`id`, `nombre`, `slug`, `descripcion_corta`, `descripcion`, `precio`, `precio_oferta`, `stock`, `sku`, `categoria_id`, `marca_id`, `imagen_principal`, `destacado`, `en_oferta`, `activo`, `calificacion`, `num_calificaciones`, `fecha_creacion`) VALUES
('1', 'Laptop HP Pavilion 15', 'laptop-hp-pavilion-15', 'Intel Core i5 12th Gen, 16GB RAM, 512GB SSD, 15.6\" FHD', '<p>La HP Pavilion 15 es la laptop perfecta para productividad y entretenimiento.</p>', '2899.00', '2599.00', '15', 'HP-PAV15-I5', '1', '1', 'hp-pavilion-15.svg', '1', '1', '1', '4.7', '3', '2026-08-03 13:54:17'),
('2', 'Laptop Lenovo IdeaPad 3', 'laptop-lenovo-ideapad-3', 'AMD Ryzen 5, 8GB RAM, 256GB SSD, 14\" FHD', '<p>La Lenovo IdeaPad 3 combina rendimiento y portabilidad.</p>', '2199.00', '1899.00', '20', 'LNV-IDP3-R5', '1', '2', 'lenovo-ideapad-3.svg', '1', '1', '1', '4.3', '3', '2026-08-03 13:54:17'),
('3', 'Laptop Dell Inspiron 16', 'laptop-dell-inspiron-16', 'Intel Core i7, 16GB RAM, 1TB SSD, 16\" 2.5K', '<p>La Dell Inspiron 16 ofrece una pantalla amplia de 16 pulgadas.</p>', '4299.00', '3899.00', '8', 'DELL-INS16-I7', '1', '3', 'dell-inspiron-16.svg', '1', '1', '1', '4.7', '3', '2026-08-03 13:54:17'),
('4', 'PC Escritorio HP EliteDesk', 'pc-escritorio-hp-elitedesk', 'Intel Core i5, 16GB RAM, 512GB SSD + 1TB HDD', '<p>La HP EliteDesk es una computadora de escritorio empresarial.</p>', '3499.00', '3199.00', '10', 'HP-ED-I5', '2', '1', 'hp-elitedesk.svg', '1', '0', '1', '4.3', '3', '2026-08-03 13:54:17'),
('5', 'PC Gamer Asus ROG Strix', 'pc-gamer-asus-rog-strix', 'Intel Core i7, 32GB RAM, 1TB SSD, RTX 4070', '<p>Domina todos los juegos con la ASUS ROG Strix.</p>', '8999.00', '8499.00', '5', 'ASUS-ROG-I7', '2', '4', 'asus-rog-strix.svg', '1', '1', '1', '5.0', '3', '2026-08-03 13:54:17'),
('6', 'Procesador Intel Core i7-13700K', 'procesador-intel-i7-13700k', '16 núcleos, 24 hilos, 5.4GHz Turbo', '<p>El Intel Core i7-13700K ofrece rendimiento excepcional.</p>', '1899.00', '1699.00', '12', 'INTEL-I7-13K', '3', '12', 'intel-i7-13700k.svg', '1', '1', '1', '4.7', '3', '2026-08-03 13:54:17'),
('7', 'Memoria RAM Kingston Fury 32GB DDR5', 'ram-kingston-fury-32gb-ddr5', '32GB (2x16GB) DDR5-5600MHz, RGB', '<p>Kit de memoria Kingston Fury Beast DDR5.</p>', '699.00', '599.00', '25', 'KST-FURY-32', '3', '10', 'kingston-fury-32gb.svg', '0', '1', '1', '4.3', '3', '2026-08-03 13:54:17'),
('8', 'SSD Kingston NV2 1TB NVMe', 'ssd-kingston-nv2-1tb', '1TB, PCIe 4.0 NVMe, Lectura 3500MB/s', '<p>El SSD Kingston NV2 de 1TB ofrece altas velocidades.</p>', '349.00', '299.00', '30', 'KST-NV2-1TB', '3', '10', 'kingston-nv2-1tb.svg', '0', '1', '1', '4.7', '3', '2026-08-03 13:54:17'),
('9', 'Monitor Samsung 24\" FHD IPS', 'monitor-samsung-24-fhd-ips', '24\", Full HD, IPS, 75Hz, FreeSync', '<p>Monitor Samsung de 24 pulgadas con panel IPS.</p>', '699.00', '599.00', '18', 'SAM-M24-IPS', '4', '7', 'samsung-24-fhd.svg', '0', '1', '1', '4.3', '3', '2026-08-03 13:54:17'),
('10', 'Monitor Asus TUF 27\" QHD 165Hz', 'monitor-asus-tuf-27-qhd', '27\", 2K QHD, 165Hz, 1ms, HDR', '<p>El ASUS TUF Gaming VG27AQ es un monitor 2K.</p>', '1899.00', '1699.00', '7', 'ASUS-TUF-27', '4', '4', 'asus-tuf-27.svg', '1', '1', '1', '4.7', '3', '2026-08-03 13:54:17'),
('11', 'Samsung Galaxy S24 Ultra', 'samsung-galaxy-s24-ultra', '256GB, 12GB RAM, Titanio, 200MP', '<p>El Samsung Galaxy S24 Ultra redefine la experiencia móvil.</p>', '5999.00', '5499.00', '6', 'SAM-S24U', '5', '7', 'samsung-s24-ultra.svg', '1', '1', '1', '4.7', '3', '2026-08-03 13:54:17'),
('12', 'Xiaomi Redmi Note 13 Pro', 'xiaomi-redmi-note-13-pro', '256GB, 8GB RAM, 200MP, 67W', '<p>El Redmi Note 13 Pro ofrece una cámara de 200MP.</p>', '1299.00', '1099.00', '22', 'XIA-RN13P', '5', '8', 'xiaomi-redmi-note13.svg', '0', '1', '1', '4.3', '3', '2026-08-03 13:54:17'),
('13', 'Impresora Epson EcoTank L3250', 'impresora-epson-ecotank-l3250', 'Multifuncional, WiFi, Tanque de tinta', '<p>La Epson EcoTank L3250 imprime a costo ultra bajo.</p>', '799.00', '699.00', '14', 'EPS-L3250', '6', '15', 'epson-l3250.svg', '0', '1', '1', '4.3', '3', '2026-08-03 13:54:17'),
('14', 'Router TP-Link Archer AX73', 'router-tp-link-archer-ax73', 'WiFi 6, AX5400, Doble banda', '<p>El TP-Link Archer AX73 ofrece WiFi 6.</p>', '449.00', '399.00', '20', 'TPL-AX73', '7', '16', 'tplink-ax73.svg', '0', '1', '1', '4.3', '3', '2026-08-03 13:54:17'),
('15', 'Teclado Logitech MX Keys', 'teclado-logitech-mx-keys', 'Inalámbrico, Retroiluminado, USB-C', '<p>El Logitech MX Keys ofrece una experiencia premium.</p>', '459.00', '399.00', '16', 'LOG-MXKEYS', '8', '9', 'logitech-mx-keys.svg', '0', '1', '1', '4.7', '3', '2026-08-03 13:54:17'),
('16', 'Mouse Logitech MX Master 3S', 'mouse-logitech-mx-master-3s', 'Inalámbrico, 8000DPI, Silencioso', '<p>El MX Master 3S es el mouse más avanzado de Logitech.</p>', '499.00', '429.00', '19', 'LOG-MX3S', '8', '9', 'logitech-mx-master3s.svg', '1', '1', '1', '4.7', '3', '2026-08-03 13:54:17');

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `producto_qa`
--

CREATE TABLE `producto_qa` (
  `id` int(11) NOT NULL,
  `producto_id` int(11) NOT NULL,
  `usuario_id` int(11) NOT NULL,
  `pregunta` text NOT NULL,
  `respuesta` text DEFAULT NULL,
  `respondido_por` int(11) DEFAULT NULL,
  `creado_en` timestamp NOT NULL DEFAULT current_timestamp(),
  `respondido_en` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `recuperacion_password`
--

CREATE TABLE `recuperacion_password` (
  `id` int(11) NOT NULL,
  `usuario_id` int(11) NOT NULL,
  `token` varchar(64) NOT NULL,
  `expiracion` datetime NOT NULL,
  `usado` tinyint(1) NOT NULL DEFAULT 0,
  `fecha_creacion` datetime NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `suscripciones_stock`
--

CREATE TABLE `suscripciones_stock` (
  `id` int(11) NOT NULL,
  `producto_id` int(11) NOT NULL,
  `email` varchar(150) NOT NULL,
  `notificado` tinyint(1) NOT NULL DEFAULT 0,
  `fecha_registro` datetime NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `testimonios`
--

CREATE TABLE `testimonios` (
  `id` int(11) NOT NULL,
  `usuario_id` int(11) NOT NULL,
  `producto_id` int(11) DEFAULT NULL,
  `calificacion` tinyint(4) NOT NULL CHECK (`calificacion` between 1 and 5),
  `comentario` text NOT NULL,
  `activo` tinyint(1) NOT NULL DEFAULT 0,
  `fecha_creacion` datetime NOT NULL DEFAULT current_timestamp(),
  `titulo` varchar(200) DEFAULT NULL,
  `foto` varchar(255) DEFAULT NULL,
  `compra_verificada` tinyint(1) DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Volcado de datos para la tabla `testimonios`
--

INSERT INTO `testimonios` (`id`, `usuario_id`, `producto_id`, `calificacion`, `comentario`, `activo`, `fecha_creacion`, `titulo`, `foto`, `compra_verificada`) VALUES
('11', '12', '1', '5', 'La compré para trabajo y estudio, va rapidísima. El i5 de 12va gen con 16GB se nota. Llegó en 24 horas a Lima.', '1', '2026-06-15 01:00:00', 'Excelente laptop para trabajo', NULL, '1'),
('12', '13', '1', '4', 'Cumple con lo prometido, pantalla nítida y batería que dura toda la jornada. El envío fue puntual.', '1', '2026-06-18 01:00:00', 'Muy buena relación calidad-precio', NULL, '0'),
('13', '14', '1', '5', 'Superó mis expectativas por el precio. Ideal para diseño y multitarea. El empaque llegó impecable.', '1', '2026-06-21 01:00:00', 'La recomiendo totalmente', NULL, '0'),
('14', '13', '2', '4', 'Perfecta para estudiantes, el rendimiento es más que suficiente para Office y navegación. La entrega fue rápida a Arequipa.', '1', '2026-06-15 02:00:00', 'Buena laptop de entrada', NULL, '1'),
('15', '14', '2', '5', 'Llegó antes de lo esperado y funciona excelente. El teclado es cómodo para escribir bastante.', '1', '2026-06-18 02:00:00', 'Muy satisfecho con mi compra', NULL, '0'),
('16', '15', '2', '4', 'La uso a diario para clases virtuales y nunca me ha fallado. Buena pantalla y buen audio.', '1', '2026-06-21 02:00:00', 'Cumple perfecto para la U', NULL, '0'),
('17', '14', '3', '5', 'La pantalla de 16 pulgadas es espectacular para editar video. Con 16GB corre todo sin problema.', '1', '2026-06-15 03:00:00', 'Potente y elegante', NULL, '1'),
('18', '15', '3', '5', 'La calidad de construcción es premium. La compré por la garantía oficial y valió cada sol.', '1', '2026-06-18 03:00:00', 'Gran pantalla, gran rendimiento', NULL, '0'),
('19', '16', '3', '4', 'Muy fluida para programar y correr máquinas virtuales. Envío perfecto a Cusco.', '1', '2026-06-21 03:00:00', 'Inversión que vale la pena', NULL, '0'),
('20', '15', '4', '4', 'La uso para contabilidad y ERP, va de maravilla. El SSD hace que encienda en segundos.', '1', '2026-06-15 04:00:00', 'Buen equipo de oficina', NULL, '1'),
('21', '16', '4', '4', 'Buena opción para oficina, silenciosa y no se calienta. El soporte de la tienda fue atento.', '1', '2026-06-18 04:00:00', 'Rendimiento estable', NULL, '0'),
('22', '11', '4', '5', 'Llegó bien empacada y configurada. Cumple todo lo que promete.', '1', '2026-06-21 04:00:00', 'Muy completa', NULL, '0'),
('23', '16', '5', '5', 'Corre todo en ultra con 144fps+. La RTX se nota muchísimo. Llegó en 24h a Lima, espectacular.', '1', '2026-06-15 05:00:00', 'BESTIA para gaming', NULL, '1'),
('24', '11', '5', '5', 'Cero lag, cero ruido excesivo. El RGB es un plus. Totalmente recomendada para gamers.', '1', '2026-06-18 05:00:00', 'FPS al máximo', NULL, '0'),
('25', '12', '5', '5', 'Rendimiento de sobra para streaming y gaming a la vez. La garantía oficial me dio tranquilidad.', '1', '2026-06-21 05:00:00', 'La mejor compra del año', NULL, '0'),
('26', '11', '6', '5', 'Lo compré para mi nueva PC y el rendimiento en juegos y edición es brutal. Vino sellado.', '1', '2026-06-15 06:00:00', 'Procesador de otro nivel', NULL, '1'),
('27', '12', '6', '4', '13va gen pura potencia. Con buena refrigeración rinde de maravilla.', '1', '2026-06-18 06:00:00', 'Excelente para mi build', NULL, '0'),
('28', '13', '6', '5', 'Reemplazó mi i5 y la diferencia se nota en todo. Precio justo y envío rápido.', '1', '2026-06-21 06:00:00', 'Potencia bruta', NULL, '0'),
('29', '12', '7', '4', 'Instalé 32GB y mi laptop respira. Cero problemas de compatibilidad con mi placa.', '1', '2026-06-15 07:00:00', 'RAM estable y rápida', NULL, '1'),
('30', '13', '7', '5', 'La calidad Kingston de siempre. Llegó bien empacada y funciona perfecto.', '1', '2026-06-18 07:00:00', 'Perfecta para actualizar', NULL, '0'),
('31', '14', '7', '4', 'Buena RAM, velocidades reales. La compra fue fácil y el envío rápido.', '1', '2026-06-21 07:00:00', 'Buen precio', NULL, '0'),
('32', '13', '8', '5', 'Pasé de HDD a este NVMe y el cambio es abismal. Lecturas de 3500MB/s reales.', '1', '2026-06-15 08:00:00', 'SSD rapidísimo', NULL, '1'),
('33', '14', '8', '4', 'Instalación sencilla y Windows carga en 8 segundos. Muy recomendado.', '1', '2026-06-18 08:00:00', 'Mi PC voló', NULL, '0'),
('34', '15', '8', '5', 'Calidad-precio inmejorable para almacenamiento rápido. La entrega fue puntual.', '1', '2026-06-21 08:00:00', 'Excelente NVMe', NULL, '0'),
('35', '14', '9', '4', 'Colores vivos y ángulos de visión excelentes. Ideal para diseño gráfico básico.', '1', '2026-06-15 09:00:00', 'Monitor nítido', NULL, '1'),
('36', '15', '9', '5', 'El IPS se nota, la imagen es limpia. Los bordes finos se ven modernos.', '1', '2026-06-18 09:00:00', 'Colores precisos', NULL, '0'),
('37', '16', '9', '4', 'Buena relación calidad-precio para home office. Vino sin píxeles muertos.', '1', '2026-06-21 09:00:00', 'Buen monitor de oficina', NULL, '0'),
('38', '15', '10', '5', 'La fluidez de 165Hz se siente desde el primer segundo. El QHD se ve increíble.', '1', '2026-06-15 10:00:00', '165Hz de locura', NULL, '1'),
('39', '16', '10', '4', 'Para jugar competitivo es perfecto. El soporte es robusto y el panel no tiene bleeding.', '1', '2026-06-18 10:00:00', 'Gaming en serio', NULL, '0'),
('40', '11', '10', '5', 'Excelente monitor, colores vivos y respuesta rapidísima. Envío impecable a Trujillo.', '1', '2026-06-21 10:00:00', 'Monitor top para su precio', NULL, '0'),
('41', '16', '11', '5', 'La cámara es una locura, las fotos nocturnas parecen de cámara profesional. Batería para 2 días.', '1', '2026-06-15 11:00:00', 'El mejor celular del año', NULL, '1'),
('42', '11', '11', '5', 'El S-Pen y la pantalla son espectaculares. Vino con todos los accesorios.', '1', '2026-06-18 11:00:00', 'Cámara de otro nivel', NULL, '0'),
('43', '12', '11', '4', 'Rendimiento de sobra, cero lag. El vendedor respondió todas mis dudas antes de comprar.', '1', '2026-06-21 11:00:00', 'De lujo', NULL, '0'),
('44', '11', '12', '4', 'La batería dura todo el día con uso intenso. La cámara de 200MP sorprende.', '1', '2026-06-15 12:00:00', 'Muy buen celular gama media', NULL, '1'),
('45', '12', '12', '5', 'Mejor relación calidad-precio del mercado. Pantalla AMOLED preciosa.', '1', '2026-06-18 12:00:00', 'Batería excelente', NULL, '0'),
('46', '13', '12', '4', 'Rápido y fluido, ideal para redes y fotos. Envío rápido a Chiclayo.', '1', '2026-06-21 12:00:00', 'Cumple y sobra', NULL, '0'),
('47', '12', '13', '4', 'La tinta original dura muchísimo, la recargué después de 6 meses. Impresión nítida.', '1', '2026-06-15 13:00:00', 'Impresora económica', NULL, '1'),
('48', '13', '13', '5', 'Fácil de configurar por wifi. Económica de mantener, ideal para documentos.', '1', '2026-06-18 13:00:00', 'Tintas que duran meses', NULL, '0'),
('49', '14', '13', '4', 'Buena impresora multifuncional para el hogar. El escáner funciona perfecto.', '1', '2026-06-21 13:00:00', 'Perfecta para casa', NULL, '0'),
('50', '13', '14', '4', 'La señal llega a toda mi casa de 3 pisos. Velocidades estables en toda la casa.', '1', '2026-06-15 14:00:00', 'Router con buena señal', NULL, '1'),
('51', '14', '14', '4', 'Configuré el mesh y no pierdo señal en ningún punto. Buen alcance.', '1', '2026-06-18 14:00:00', 'Cobertura excelente', NULL, '0'),
('52', '15', '14', '5', 'Excelente router para gaming online, latencia baja y estable.', '1', '2026-06-21 14:00:00', 'WiFi 6 de verdad', NULL, '0'),
('53', '14', '15', '5', 'El teclado más cómodo que he usado, las teclas cóncavas son ideales. Multi-dispositivo genial.', '1', '2026-06-15 15:00:00', 'Teclado premium', NULL, '1'),
('54', '15', '15', '4', 'La conexión multipunto con 3 dispositivos es súper práctica. Batería de meses.', '1', '2026-06-18 15:00:00', 'Escritura perfecta', NULL, '0'),
('55', '16', '15', '5', 'Calidad de construcción excelente. Escribir es un placer, sin ruido molesto.', '1', '2026-06-21 15:00:00', 'Mejor que el de oficina', NULL, '0'),
('56', '15', '16', '5', 'El scroll inteligente es una maravilla. Lo uso 8 horas diarias y mi mano no se cansa.', '1', '2026-06-15 16:00:00', 'El mejor mouse', NULL, '1'),
('57', '16', '16', '5', 'Precisión impecable en diseño gráfico. La batería dura semanas.', '1', '2026-06-18 16:00:00', 'Precisión absoluta', NULL, '0'),
('58', '11', '16', '4', 'Vale cada sol, el mejor mouse de productividad del mercado. Envío rápido.', '1', '2026-06-21 16:00:00', 'Productividad total', NULL, '0');
-- --------------------------------------------------------


-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `tickets_soporte`
--

CREATE TABLE `tickets_soporte` (
  `id` int(11) NOT NULL,
  `numero_ticket` varchar(20) NOT NULL,
  `usuario_id` int(11) NOT NULL,
  `pedido_id` int(11) DEFAULT NULL,
  `tipo` enum('consulta','garantia','devolucion','cambio','otro') NOT NULL DEFAULT 'consulta',
  `asunto` varchar(255) NOT NULL,
  `mensaje` text NOT NULL,
  `respuesta` text DEFAULT NULL,
  `estado` enum('abierto','en_revision','resuelto','cerrado') NOT NULL DEFAULT 'abierto',
  `prioridad` enum('baja','normal','alta','urgente') NOT NULL DEFAULT 'normal',
  `fecha_creacion` datetime NOT NULL DEFAULT current_timestamp(),
  `fecha_actualizacion` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `usuarios`
--

CREATE TABLE `usuarios` (
  `id` int(11) NOT NULL,
  `nombres` varchar(100) NOT NULL,
  `apellidos` varchar(100) NOT NULL,
  `email` varchar(150) NOT NULL,
  `password` varchar(255) NOT NULL,
  `telefono` varchar(20) DEFAULT NULL,
  `direccion` text DEFAULT NULL,
  `ciudad` varchar(100) DEFAULT NULL,
  `departamento` varchar(100) DEFAULT NULL,
  `codigo_postal` varchar(10) DEFAULT NULL,
  `rol` enum('cliente','admin') NOT NULL DEFAULT 'cliente',
  `activo` tinyint(1) NOT NULL DEFAULT 1,
  `fecha_registro` datetime NOT NULL DEFAULT current_timestamp(),
  `ultimo_acceso` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Volcado de datos para la tabla `usuarios`
--

INSERT INTO `usuarios` (`id`, `nombres`, `apellidos`, `email`, `password`, `telefono`, `direccion`, `ciudad`, `departamento`, `codigo_postal`, `rol`, `activo`, `fecha_registro`, `ultimo_acceso`) VALUES
('1', 'Admin', 'TechShop', 'admin@techshop.pe', 'y$mBVIji.XF9nHv9xRJDrVN.kWgaqMliB4m2sRj4u5gHW01a76GR9CW', '+51 999 999 999', 'Av. Principal 123', 'Lima', 'Lima', NULL, 'admin', '1', '2026-08-03 13:54:17', NULL),
('11', 'Carlos', 'Quispe Mamani', 'carlos.quispe@demo.pe', 'y$exz7unHqT.T79IRWledMVue1rM8fuv58CA1iQKIt.Ewqu.2aECt.G', '+51 987 111 222', 'Av. Demo 100, Lima', 'Lima', 'Lima', NULL, 'cliente', '1', '2026-08-04 19:57:50', NULL),
('12', 'María', 'Fernández Torres', 'maria.fernandez@demo.pe', 'y$BPPRZ6jhacxJ4L/TlrUouO4FmJVWm.7QppNNxV3HyMu6OlaJn.656', '+51 987 222 333', 'Av. Demo 101, Arequipa', 'Arequipa', 'Arequipa', NULL, 'cliente', '1', '2026-08-04 19:57:50', NULL),
('13', 'Jorge', 'Ramírez Soto', 'jorge.ramirez@demo.pe', 'y$O.jbnOU8zG1Qw9xPrX0.V.uJH9rLd7Kdtsv6AqLdQKPNuW1Teu.uq', '+51 987 333 444', 'Av. Demo 102, Trujillo', 'Trujillo', 'La Libertad', NULL, 'cliente', '1', '2026-08-04 19:57:51', NULL),
('14', 'Lucía', 'Gutiérrez Paz', 'lucia.gutierrez@demo.pe', 'y$Aog8eS7e7Vyf0rF22zyHbuczIoQcqmvBtmYAMDWaiyEZo9HgOU1/i', '+51 987 444 555', 'Av. Demo 103, Cusco', 'Cusco', 'Cusco', NULL, 'cliente', '1', '2026-08-04 19:57:51', NULL),
('15', 'Miguel', 'Rojas Díaz', 'miguel.rojas@demo.pe', 'y$cOutFRSHu4kkHTR0WPLmA.7FKywj9vmwk94l4/BiCdMNlz52fdtDy', '+51 987 555 666', 'Av. Demo 104, Chiclayo', 'Chiclayo', 'Lambayeque', NULL, 'cliente', '1', '2026-08-04 19:57:51', NULL),
('16', 'Andrea', 'Castillo Nuñez', 'andrea.castillo@demo.pe', 'y$imlzDLsgNDiUcO6vnD/otuowN2OqX1GXZ1mvmWSuxwCRCNm/S7icu', '+51 987 666 777', 'Av. Demo 105, Piura', 'Piura', 'Piura', NULL, 'cliente', '1', '2026-08-04 19:57:51', NULL);

-- --------------------------------------------------------

--
-- Índices para tablas volcadas
--

--
-- Indices de la tabla `admin_audit_log`
--
ALTER TABLE `admin_audit_log`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_tabla_reg` (`tabla`,`registro_id`),
  ADD KEY `idx_usuario` (`usuario_id`),
  ADD KEY `idx_creado` (`creado_en`);

--
-- Indices de la tabla `alertas_precio`
--
ALTER TABLE `alertas_precio`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `uk_prod_email` (`producto_id`,`email`),
  ADD KEY `idx_notificado` (`notificado`);

--
-- Indices de la tabla `banners`
--
ALTER TABLE `banners`
  ADD PRIMARY KEY (`id`);

--
-- Indices de la tabla `carrito`
--
ALTER TABLE `carrito`
  ADD PRIMARY KEY (`id`),
  ADD KEY `producto_id` (`producto_id`),
  ADD KEY `idx_usuario` (`usuario_id`),
  ADD KEY `idx_sesion` (`sesion_id`);

--
-- Indices de la tabla `categorias`
--
ALTER TABLE `categorias`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `slug` (`slug`),
  ADD KEY `idx_slug` (`slug`),
  ADD KEY `idx_activo` (`activo`);

--
-- Indices de la tabla `configuracion`
--
ALTER TABLE `configuracion`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `clave` (`clave`);

--
-- Indices de la tabla `cupones`
--
ALTER TABLE `cupones`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `codigo` (`codigo`),
  ADD KEY `idx_codigo` (`codigo`);

--
-- Indices de la tabla `detalles_pedido`
--
ALTER TABLE `detalles_pedido`
  ADD PRIMARY KEY (`id`),
  ADD KEY `producto_id` (`producto_id`),
  ADD KEY `idx_pedido` (`pedido_id`);

--
-- Indices de la tabla `direcciones_usuario`
--
ALTER TABLE `direcciones_usuario`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_usuario` (`usuario_id`);

--
-- Indices de la tabla `especificaciones_producto`
--
ALTER TABLE `especificaciones_producto`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_producto` (`producto_id`);

--
-- Indices de la tabla `favoritos`
--
ALTER TABLE `favoritos`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `uk_usuario_producto` (`usuario_id`,`producto_id`),
  ADD KEY `producto_id` (`producto_id`);

--
-- Indices de la tabla `historial_pedidos`
--
ALTER TABLE `historial_pedidos`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_pedido` (`pedido_id`);

--
-- Indices de la tabla `imagenes_producto`
--
ALTER TABLE `imagenes_producto`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_producto` (`producto_id`);

--
-- Indices de la tabla `marcas`
--
ALTER TABLE `marcas`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `slug` (`slug`),
  ADD KEY `idx_slug` (`slug`);

--
-- Indices de la tabla `mensajes_contacto`
--
ALTER TABLE `mensajes_contacto`
  ADD PRIMARY KEY (`id`);

--
-- Indices de la tabla `pedidos`
--
ALTER TABLE `pedidos`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `numero_pedido` (`numero_pedido`),
  ADD KEY `idx_usuario` (`usuario_id`),
  ADD KEY `idx_estado` (`estado`),
  ADD KEY `idx_numero` (`numero_pedido`);

--
-- Indices de la tabla `productos`
--
ALTER TABLE `productos`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `slug` (`slug`),
  ADD UNIQUE KEY `sku` (`sku`),
  ADD KEY `idx_slug` (`slug`),
  ADD KEY `idx_categoria` (`categoria_id`),
  ADD KEY `idx_marca` (`marca_id`),
  ADD KEY `idx_destacado` (`destacado`),
  ADD KEY `idx_oferta` (`en_oferta`),
  ADD KEY `idx_precio` (`precio`),
  ADD KEY `idx_cat_activo_precio` (`categoria_id`,`activo`,`precio`),
  ADD KEY `idx_marca_activo` (`marca_id`,`activo`),
  ADD KEY `idx_destacado_fecha` (`destacado`,`fecha_creacion`),
  ADD KEY `idx_oferta_activo` (`en_oferta`,`activo`);
ALTER TABLE `productos` ADD FULLTEXT KEY `ft_busqueda_producto` (`nombre`,`descripcion_corta`,`descripcion`);

--
-- Indices de la tabla `producto_qa`
--
ALTER TABLE `producto_qa`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_producto` (`producto_id`),
  ADD KEY `idx_usuario` (`usuario_id`);

--
-- Indices de la tabla `recuperacion_password`
--
ALTER TABLE `recuperacion_password`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `token` (`token`),
  ADD KEY `usuario_id` (`usuario_id`),
  ADD KEY `idx_token` (`token`),
  ADD KEY `idx_expiracion` (`expiracion`);

--
-- Indices de la tabla `suscripciones_stock`
--
ALTER TABLE `suscripciones_stock`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_producto` (`producto_id`);

--
-- Indices de la tabla `testimonios`
--
ALTER TABLE `testimonios`
  ADD PRIMARY KEY (`id`),
  ADD KEY `usuario_id` (`usuario_id`),
  ADD KEY `idx_producto` (`producto_id`),
  ADD KEY `idx_activo` (`activo`);

--
-- Indices de la tabla `tickets_soporte`
--
ALTER TABLE `tickets_soporte`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `numero_ticket` (`numero_ticket`),
  ADD KEY `idx_usuario_ticket` (`usuario_id`),
  ADD KEY `idx_estado` (`estado`);

--
-- Indices de la tabla `usuarios`
--
ALTER TABLE `usuarios`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `email` (`email`),
  ADD KEY `idx_email` (`email`),
  ADD KEY `idx_rol` (`rol`);

--
-- AUTO_INCREMENT de las tablas volcadas
--

--
-- AUTO_INCREMENT de la tabla `admin_audit_log`
--
ALTER TABLE `admin_audit_log`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT de la tabla `alertas_precio`
--
ALTER TABLE `alertas_precio`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT de la tabla `banners`
--
ALTER TABLE `banners`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT de la tabla `carrito`
--
ALTER TABLE `carrito`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT de la tabla `categorias`
--
ALTER TABLE `categorias`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;

--
-- AUTO_INCREMENT de la tabla `configuracion`
--
ALTER TABLE `configuracion`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12;

--
-- AUTO_INCREMENT de la tabla `cupones`
--
ALTER TABLE `cupones`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT de la tabla `detalles_pedido`
--
ALTER TABLE `detalles_pedido`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT de la tabla `direcciones_usuario`
--
ALTER TABLE `direcciones_usuario`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT de la tabla `especificaciones_producto`
--
ALTER TABLE `especificaciones_producto`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=22;

--
-- AUTO_INCREMENT de la tabla `favoritos`
--
ALTER TABLE `favoritos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT de la tabla `historial_pedidos`
--
ALTER TABLE `historial_pedidos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT de la tabla `imagenes_producto`
--
ALTER TABLE `imagenes_producto`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT de la tabla `marcas`
--
ALTER TABLE `marcas`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=19;

--
-- AUTO_INCREMENT de la tabla `mensajes_contacto`
--
ALTER TABLE `mensajes_contacto`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT de la tabla `pedidos`
--
ALTER TABLE `pedidos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT de la tabla `productos`
--
ALTER TABLE `productos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=17;

--
-- AUTO_INCREMENT de la tabla `producto_qa`
--
ALTER TABLE `producto_qa`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT de la tabla `recuperacion_password`
--
ALTER TABLE `recuperacion_password`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT de la tabla `suscripciones_stock`
--
ALTER TABLE `suscripciones_stock`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT de la tabla `testimonios`
--
ALTER TABLE `testimonios`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=59;

--
-- AUTO_INCREMENT de la tabla `tickets_soporte`
--
ALTER TABLE `tickets_soporte`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT de la tabla `usuarios`
--
ALTER TABLE `usuarios`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=17;

--
-- Restricciones para tablas volcadas
--

--
-- Filtros para la tabla `admin_audit_log`
--
ALTER TABLE `admin_audit_log`
  ADD CONSTRAINT `admin_audit_log_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE SET NULL;

--
-- Filtros para la tabla `alertas_precio`
--
ALTER TABLE `alertas_precio`
  ADD CONSTRAINT `alertas_precio_ibfk_1` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`) ON DELETE CASCADE;

--
-- Filtros para la tabla `carrito`
--
ALTER TABLE `carrito`
  ADD CONSTRAINT `carrito_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `carrito_ibfk_2` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`) ON DELETE CASCADE;

--
-- Filtros para la tabla `detalles_pedido`
--
ALTER TABLE `detalles_pedido`
  ADD CONSTRAINT `detalles_pedido_ibfk_1` FOREIGN KEY (`pedido_id`) REFERENCES `pedidos` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `detalles_pedido_ibfk_2` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`);

--
-- Filtros para la tabla `direcciones_usuario`
--
ALTER TABLE `direcciones_usuario`
  ADD CONSTRAINT `direcciones_usuario_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE;

--
-- Filtros para la tabla `especificaciones_producto`
--
ALTER TABLE `especificaciones_producto`
  ADD CONSTRAINT `especificaciones_producto_ibfk_1` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`) ON DELETE CASCADE;

--
-- Filtros para la tabla `favoritos`
--
ALTER TABLE `favoritos`
  ADD CONSTRAINT `favoritos_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `favoritos_ibfk_2` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`) ON DELETE CASCADE;

--
-- Filtros para la tabla `historial_pedidos`
--
ALTER TABLE `historial_pedidos`
  ADD CONSTRAINT `historial_pedidos_ibfk_1` FOREIGN KEY (`pedido_id`) REFERENCES `pedidos` (`id`) ON DELETE CASCADE;

--
-- Filtros para la tabla `imagenes_producto`
--
ALTER TABLE `imagenes_producto`
  ADD CONSTRAINT `imagenes_producto_ibfk_1` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`) ON DELETE CASCADE;

--
-- Filtros para la tabla `pedidos`
--
ALTER TABLE `pedidos`
  ADD CONSTRAINT `pedidos_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`);

--
-- Filtros para la tabla `productos`
--
ALTER TABLE `productos`
  ADD CONSTRAINT `productos_ibfk_1` FOREIGN KEY (`categoria_id`) REFERENCES `categorias` (`id`),
  ADD CONSTRAINT `productos_ibfk_2` FOREIGN KEY (`marca_id`) REFERENCES `marcas` (`id`);

--
-- Filtros para la tabla `producto_qa`
--
ALTER TABLE `producto_qa`
  ADD CONSTRAINT `producto_qa_ibfk_1` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `producto_qa_ibfk_2` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE;

--
-- Filtros para la tabla `recuperacion_password`
--
ALTER TABLE `recuperacion_password`
  ADD CONSTRAINT `recuperacion_password_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE;

--
-- Filtros para la tabla `suscripciones_stock`
--
ALTER TABLE `suscripciones_stock`
  ADD CONSTRAINT `suscripciones_stock_ibfk_1` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`) ON DELETE CASCADE;

--
-- Filtros para la tabla `testimonios`
--
ALTER TABLE `testimonios`
  ADD CONSTRAINT `testimonios_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `testimonios_ibfk_2` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`) ON DELETE SET NULL;

--
-- Filtros para la tabla `tickets_soporte`
--
ALTER TABLE `tickets_soporte`
  ADD CONSTRAINT `tickets_soporte_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
