-- phpMyAdmin SQL Dump
-- version 5.2.2
-- https://www.phpmyadmin.net/
--
-- Servidor: 127.0.0.1:3306
-- Tiempo de generación: 19-08-2026 a las 16:25:25
-- Versión del servidor: 11.8.8-MariaDB-log
-- Versión de PHP: 7.2.34

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: `u560058480_metatesis`
--

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

--
-- Estructura de tabla para la tabla `auth_tokens`
--

CREATE TABLE `auth_tokens` (
  `id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `token` varchar(128) NOT NULL,
  `expires_at` datetime NOT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

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

INSERT INTO `auth_tokens` (`id`, `user_id`, `token`, `expires_at`, `created_at`) VALUES
(6, 4, '9e849a1838780c59f57231335845491ad0897c13154e846a5e6a29592aa2f9ef9bfc2bdbefa9a5af7e09abb063b0c0f1', '2026-05-27 15:14:55', '2026-05-26 15:14:55'),
(7, 3, 'fd12d8b12d446d1050b23850b8617eacc267a84a3fab7c0df97c831b8f89a81570134e23a9215f05d2d2782bcb8700aa', '2026-05-27 15:24:25', '2026-05-26 15:24:25'),
(8, 3, 'bbe1683583a026da8917a7e3c93bb02c4dd8265b35f3472fd4f3ce373b862a806eb4d578f6a6701a6e3da090daddf6c0', '2026-05-27 15:25:09', '2026-05-26 15:25:09'),
(9, 3, 'a3946a5f07578206f663c9cd78ac4f5eee0e9233d2f16435e5acea1f6f0d1b1bd89b86e861be554276146861e4cd4a9c', '2026-05-27 15:42:40', '2026-05-26 15:42:40'),
(10, 3, 'a344b23bae27464ab013265644fae3a7b52e3d3ef484590bec8406087c1fa73b22e3561353557456c53c1badd24cdc27', '2026-05-27 16:04:40', '2026-05-26 16:04:40'),
(11, 3, '6f98adabbec8ee1a8eb7c37d93214da2a1f5704861fa50610d301be3fd11f110b437238f0a1c15ac66fa813aba2b71b8', '2026-05-27 16:11:37', '2026-05-26 16:11:37'),
(12, 3, '23239a73213079e82fed22765950ce8686ee63f61f8d8111526b62cda998a5dd4e491bd5d3f5b4811eb7ae27406afd7f', '2026-05-27 16:18:43', '2026-05-26 16:18:43');

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

--
-- Estructura de tabla para la tabla `ebooks`
--

CREATE TABLE `ebooks` (
  `id` int(11) NOT NULL,
  `title` varchar(200) NOT NULL,
  `description` text DEFAULT NULL,
  `filename` varchar(200) NOT NULL,
  `file_size` int(11) DEFAULT 0,
  `downloads` int(11) DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;

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

INSERT INTO `ebooks` (`id`, `title`, `description`, `filename`, `file_size`, `downloads`, `is_active`, `created_at`) VALUES
(1, 'Guía de Inicio Rápido', 'Guía paso a paso para comenzar con TesisPrompt', 'guia_inicio_rapido.pdf', 2048000, 0, 1, '2026-05-26 14:49:40'),
(2, 'Guía de Inicio Rápido', 'Guía paso a paso para comenzar con TesisPrompt', 'guia_inicio_rapido.pdf', 2048000, 0, 1, '2026-05-26 14:49:40'),
(3, 'Manual Avanzado', 'Manual avanzado de redacción académica con prompts especializados', 'manual_avanzado.pdf', 3560000, 0, 1, '2026-05-26 14:49:40'),
(4, 'Manual Avanzado', 'Manual avanzado de redacción académica con prompts especializados', 'manual_avanzado.pdf', 3560000, 0, 1, '2026-05-26 14:49:40'),
(5, 'Recursos Adicionales', 'Colección de recursos y ejemplos de tesis exitosas', 'recursos_adicionales.pdf', 1890000, 0, 1, '2026-05-26 14:49:40'),
(6, 'Metodología de Investigación', 'Guía completa de metodologías cualitativas y cuantitativas para tu tesis', 'metodologia.pdf', 4200000, 0, 1, '2026-05-26 14:49:40'),
(7, 'Formato APA 7ma Edición', 'Guía actualizada de citas y referencias en formato APA', 'formato_apa.pdf', 2800000, 0, 1, '2026-05-26 14:49:40'),
(8, 'Plantillas de Tesis', '60 plantillas editables para cada sección de tu tesis', 'plantillas_tesis.pdf', 5100000, 0, 1, '2026-05-26 14:49:40'),
(9, 'Guía de Defensa Oral', 'Tips y estrategias para una defensa de tesis exitosa', 'defensa_oral.pdf', 1560000, 0, 1, '2026-05-26 14:49:40'),
(10, 'Estadística para Tesis', 'Guía práctica de análisis estadístico con SPSS y R', 'estadistica.pdf', 3200000, 0, 1, '2026-05-26 14:49:40'),
(11, 'Redacción Académica', 'Manual de escritura académica y estilo científico', 'redaccion_academica.pdf', 2400000, 0, 1, '2026-05-26 14:49:40'),
(12, 'Normas Antiplagio', 'Guía práctica para evitar el plagio y usar correctamente las fuentes', 'normas_antiplagio.pdf', 1800000, 0, 1, '2026-05-26 14:49:40'),
(13, 'Recursos Adicionales', 'Colección de recursos y ejemplos de tesis exitosas', 'recursos_adicionales.pdf', 1890000, 0, 1, '2026-05-26 14:49:40'),
(14, 'Metodología de Investigación', 'Guía completa de metodologías cualitativas y cuantitativas para tu tesis', 'metodologia.pdf', 4200000, 0, 1, '2026-05-26 14:49:40'),
(15, 'Formato APA 7ma Edición', 'Guía actualizada de citas y referencias en formato APA', 'formato_apa.pdf', 2800000, 0, 1, '2026-05-26 14:49:40'),
(16, 'Plantillas de Tesis', '60 plantillas editables para cada sección de tu tesis', 'plantillas_tesis.pdf', 5100000, 0, 1, '2026-05-26 14:49:40'),
(17, 'Guía de Defensa Oral', 'Tips y estrategias para una defensa de tesis exitosa', 'defensa_oral.pdf', 1560000, 0, 1, '2026-05-26 14:49:40'),
(18, 'Estadística para Tesis', 'Guía práctica de análisis estadístico con SPSS y R', 'estadistica.pdf', 3200000, 0, 1, '2026-05-26 14:49:40'),
(19, 'Redacción Académica', 'Manual de escritura académica y estilo científico', 'redaccion_academica.pdf', 2400000, 0, 1, '2026-05-26 14:49:40'),
(20, 'Normas Antiplagio', 'Guía práctica para evitar el plagio y usar correctamente las fuentes', 'normas_antiplagio.pdf', 1800000, 0, 1, '2026-05-26 14:49:40');

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

--
-- Estructura de tabla para la tabla `memberships`
--

CREATE TABLE `memberships` (
  `id` int(11) NOT NULL,
  `customer_email` varchar(100) NOT NULL,
  `plan_name` varchar(100) NOT NULL,
  `plan_id` int(11) DEFAULT NULL,
  `status` enum('active','expired','cancelled') DEFAULT 'active',
  `started_at` datetime DEFAULT NULL,
  `expires_at` datetime DEFAULT NULL,
  `notes` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;

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

INSERT INTO `memberships` (`id`, `customer_email`, `plan_name`, `plan_id`, `status`, `started_at`, `expires_at`, `notes`, `created_at`, `updated_at`) VALUES
(1, 'bdelacruz654@gmail.com', 'Plan Académico', 1, 'active', '2026-05-19 22:45:54', '2027-05-19 22:45:54', 'Creada desde pago simulado. Orden ID: 1', '2026-05-19 22:45:54', '2026-05-19 22:45:54');

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

--
-- Estructura de tabla para la tabla `orders`
--

CREATE TABLE `orders` (
  `id` int(11) NOT NULL,
  `plan` varchar(50) NOT NULL,
  `plan_name` varchar(100) NOT NULL,
  `amount` decimal(10,2) NOT NULL,
  `currency` varchar(10) DEFAULT 'PEN',
  `culqi_token` varchar(255) NOT NULL,
  `customer_email` varchar(100) NOT NULL,
  `status` enum('pending','paid','failed','refunded') DEFAULT 'paid',
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `customer_name` varchar(200) DEFAULT '',
  `customer_phone` varchar(50) DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;

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

INSERT INTO `orders` (`id`, `plan`, `plan_name`, `amount`, `currency`, `culqi_token`, `customer_email`, `status`, `created_at`, `customer_name`, `customer_phone`) VALUES
(1, '1', 'Plan Académico', 69.00, 'PEN', 'simulado_1779230784977', 'bdelacruz654@gmail.com', 'paid', '2026-05-19 22:45:54', 'sddscasc', '+519999999');

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

--
-- Estructura de tabla para la tabla `password_resets`
--

CREATE TABLE `password_resets` (
  `id` int(11) NOT NULL,
  `email` varchar(100) NOT NULL,
  `token` varchar(128) NOT NULL,
  `expires_at` datetime NOT NULL,
  `used` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;

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

--
-- Estructura de tabla para la tabla `plans`
--

CREATE TABLE `plans` (
  `id` int(11) NOT NULL,
  `name` varchar(100) NOT NULL,
  `subtitle` varchar(255) DEFAULT NULL,
  `price` decimal(10,2) NOT NULL DEFAULT 0.00,
  `price_usd` varchar(20) DEFAULT NULL,
  `original_price` decimal(10,2) DEFAULT NULL,
  `duration_label` varchar(100) DEFAULT NULL,
  `badge_text` varchar(100) DEFAULT NULL,
  `badge_color` varchar(50) DEFAULT 'emerald',
  `featured` tinyint(1) NOT NULL DEFAULT 0,
  `button_label` varchar(50) DEFAULT 'Comprar Ahora',
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;

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

INSERT INTO `plans` (`id`, `name`, `subtitle`, `price`, `price_usd`, `original_price`, `duration_label`, `badge_text`, `badge_color`, `featured`, `button_label`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'Plan Académico', '', 69.00, '19', 0.00, 'Pago único, sin suscripciones mensuales', '', 'emerald', 0, 'Comprar Ahora', 1, 0, '2026-05-19 21:24:10', '2026-05-19 21:24:10');

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

--
-- Estructura de tabla para la tabla `plan_features`
--

CREATE TABLE `plan_features` (
  `id` int(11) NOT NULL,
  `plan_id` int(11) NOT NULL,
  `feature_text` text NOT NULL,
  `included` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;

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

--
-- Estructura de tabla para la tabla `prompt_templates`
--

CREATE TABLE `prompt_templates` (
  `id` int(11) NOT NULL,
  `category` varchar(50) NOT NULL DEFAULT 'general',
  `slug` varchar(100) NOT NULL,
  `title` varchar(150) NOT NULL,
  `description` text DEFAULT NULL,
  `template_text` text NOT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;

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

INSERT INTO `prompt_templates` (`id`, `category`, `slug`, `title`, `description`, `template_text`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'thesis', 'delimitar_tema', 'Delimitación del Tema de Tesis', 'Ayuda a definir y acotar un tema de investigación viable.', 'Actúa como un asesor de tesis. Ayúdame a delimitar un tema de investigación a partir de los siguientes datos:\n\nÁrea de interés: {{interes}}\nCarrera o programa: {{carrera}}\nTipo de investigación: {{tipo_investigacion}}\nLimitaciones (tiempo, recursos, acceso a datos): {{limitaciones}}\n\nGenera:\n1. Una propuesta de tema delimitado (máximo 20 palabras)\n2. Tres posibles títulos preliminares\n3. El alcance y las limitaciones del tema propuesto\n4. Dos preguntas de investigación iniciales', 1, '2026-05-15 17:27:39', '2026-05-15 17:27:39'),
(2, 'thesis', 'titulos_tesis', 'Sugerencia de Títulos para Tesis', 'Genera múltiples opciones de títulos académicos.', 'Eres un especialista en investigación académica. A partir del siguiente tema, genera 10 títulos de tesis formales y actuales:\n\nTema general: {{tema}}\nDisciplina: {{disciplina}}\nEnfoque metodológico: {{metodologia}}\nVariable independiente: {{variable_independiente}}\nVariable dependiente: {{variable_dependiente}}\nÁmbito geográfico: {{ambito}}\n\nRequisitos:\n- Formato académico formal\n- Máximo 20 palabras por título\n- Incluir las variables principales\n- Variar entre enfoque cuantitativo, cualitativo y mixto\n- Numerar del 1 al 10', 1, '2026-05-15 17:27:39', '2026-05-15 17:27:39'),
(3, 'thesis', 'planteamiento_problema', 'Redacción del Planteamiento del Problema', 'Estructura completa del planteamiento del problema de investigación.', 'Eres un metodólogo de investigación. Redacta el planteamiento del problema para una tesis con los siguientes datos:\n\nTítulo tentativo: {{titulo}}\nProblema general observado: {{problema}}\nCausas identificadas: {{causas}}\nConsecuencias: {{consecuencias}}\nContexto (local, regional, nacional): {{contexto}}\n\nEstructura requerida:\n1. Realidad problemática (contexto global → local, 3 párrafos)\n2. Formulación del problema (pregunta general y 4 específicas)\n3. Justificación (teórica, práctica, metodológica, social)\n4. Viabilidad de la investigación', 1, '2026-05-15 17:27:39', '2026-05-15 17:27:39'),
(4, 'thesis', 'objetivos_investigacion', 'Formulación de Objetivos SMART', 'Genera objetivos generales y específicos con formato SMART.', 'Actúa como un asesor de tesis. A partir del tema y problema de investigación, formula objetivos SMART (Específicos, Medibles, Alcanzables, Relevantes, con Tiempo):\n\nTema: {{tema}}\nProblema general: {{problema}}\nPoblación o unidad de análisis: {{poblacion}}\nPeriodo de estudio: {{periodo}}\n\nGenera:\n- 1 objetivo general (verbo en infinitivo, medible, alcanzable en {{periodo}})\n- 5 objetivos específicos (cada uno debe iniciar con un verbo diferente: identificar, describir, analizar, determinar, evaluar, etc.)\n- Para cada objetivo específico, indica el indicador de logro', 1, '2026-05-15 17:27:39', '2026-05-15 17:27:39'),
(5, 'thesis', 'bases_teoricas', 'Desarrollo de Bases Teóricas', 'Construye las bases teóricas para una variable de investigación.', 'Eres un especialista en {{disciplina}}. Desarrolla las bases teóricas para la variable \"{{variable}}\" de una tesis.\n\nTeorías principales: {{teorias}}\nAutores de referencia: {{autores}}\nDefiniciones clave: {{definiciones}}\nDimensiones de la variable: {{dimensiones}}\n\nEstructura requerida:\n1. Definición de la variable según al menos 3 autores diferentes (citados en APA)\n2. Enfoques teóricos que sustentan la variable\n3. Dimensiones e indicadores (tabla conceptual)\n4. Relación con otras variables del estudio\n5. Cuadro sinóptico de la variable (en texto descriptivo)', 1, '2026-05-15 17:27:39', '2026-05-15 17:27:39'),
(6, 'thesis', 'antecedentes_investigacion', 'Matriz de Antecedentes de Investigación', 'Genera una matriz de antecedentes nacionales e internacionales.', 'Tu tarea es elaborar una matriz de antecedentes para una tesis sobre \"{{tema}}\".\n\nPalabras clave para búsqueda: {{palabras_clave}}\nCantidad de antecedentes: {{cantidad}}\nIdioma: {{idioma}}\nAños de publicación: {{anios}}\n\nPara cada antecedente incluye:\n1. Autor(es) y año\n2. Título de la investigación\n3. Objetivo principal\n4. Metodología (tipo, diseño, muestra)\n5. Resultados principales\n6. Aporte a tu investigación\n\nDistribución: 60% internacional, 40% nacional. Formato APA 7ª edición.', 1, '2026-05-15 17:27:39', '2026-05-15 17:27:39'),
(7, 'thesis', 'diseno_metodologico', 'Diseño Metodológico Completo', 'Describe el diseño metodológico detallado de la investigación.', 'Eres un metodólogo. Describe el diseño metodológico para una tesis con las siguientes características:\n\nTipo de investigación: {{tipo}}\nNivel de investigación: {{nivel}}\nEnfoque: {{enfoque}}\nDiseño: {{diseno}}\nPoblación: {{poblacion}}\nTamaño de muestra: {{muestra}}\nTécnica de muestreo: {{muestreo}}\nTécnica de recolección: {{tecnica}}\nInstrumento: {{instrumento}}\n\nIncluye:\n1. Tipo, nivel y enfoque (con justificación)\n2. Diseño de investigación (esquema si aplica)\n3. Población, muestra y muestreo (con fórmula si es cuantitativo)\n4. Técnicas e instrumentos (ficha técnica del instrumento)\n5. Procedimiento de recolección de datos\n6. Plan de análisis de datos (prueba estadística o método de análisis)\n7. Aspectos éticos', 1, '2026-05-15 17:27:39', '2026-05-15 17:27:39'),
(8, 'thesis', 'calculo_muestra', 'Cálculo de Tamaño de Muestra', 'Calcula el tamaño de muestra estadístico y describe el muestreo.', 'Actúa como un estadístico. Ayúdame a calcular el tamaño de muestra para mi investigación:\n\nTamaño de la población (N): {{poblacion_total}}\nMargen de error deseado (%): {{margen_error}}\nNivel de confianza (%): {{nivel_confianza}}\nProporción esperada: {{proporcion}}\nTipo de muestreo: {{tipo_muestreo}}\n\nGenera:\n1. Cálculo con fórmula para población finita (mostrar procedimiento)\n2. Tamaño de muestra recomendado\n3. Ajuste por tasa de no respuesta (10-20%)\n4. Descripción del tipo de muestreo (probabilístico o no probabilístico)\n5. Procedimiento de selección de la muestra', 1, '2026-05-15 17:27:39', '2026-05-15 17:27:39'),
(9, 'thesis', 'matriz_consistencia', 'Matriz de Consistencia', 'Genera la matriz de consistencia completa del proyecto.', 'Genera la matriz de consistencia para una tesis con los siguientes datos:\n\nTítulo: {{titulo}}\nProblema general: {{problema_general}}\nProblemas específicos: {{problemas_especificos}}\nObjetivo general: {{objetivo_general}}\nObjetivos específicos: {{objetivos_especificos}}\nHipótesis general: {{hipotesis_general}}\nHipótesis específicas: {{hipotesis_especificas}}\nVariables: {{variables}}\nMetodología: {{metodologia}}\nPoblación: {{poblacion}}\n\nFormato de la matriz (tabla en texto):\n| Problemas | Objetivos | Hipótesis | Variables | Dimensiones | Indicadores | Metodología | Población |\n\nDebe tener una fila por cada objetivo/hipótesis específica.', 1, '2026-05-15 17:27:39', '2026-05-15 17:27:39'),
(10, 'thesis', 'matriz_operacionalizacion', 'Matriz de Operacionalización de Variables', 'Crea la matriz de operacionalización con dimensiones e indicadores.', 'Elabora la matriz de operacionalización para la variable \"{{variable}}\".\n\nDefinición conceptual: {{definicion}}\nDimensiones identificadas: {{dimensiones}}\nNúmero de indicadores por dimensión: {{indicadores_por_dimension}}\nEscala de medición: {{escala}}\nInstrumento: {{instrumento}}\nNúmero total de ítems: {{total_items}}\n\nFormato de la matriz (tabla en texto):\n| Variable | Definición conceptual | Definición operacional | Dimensiones | Indicadores | Ítems | Escala | Instrumento |\n\nCada dimensión debe tener al menos {{indicadores_por_dimension}} indicadores con su correspondiente ítem.', 1, '2026-05-15 17:27:39', '2026-05-15 17:27:39'),
(11, 'thesis', 'cronograma_presupuesto', 'Cronograma y Presupuesto', 'Genera cronograma de actividades y presupuesto detallado.', 'Eres un planificador de proyectos de investigación. Elabora un cronograma y presupuesto para una tesis:\n\nTítulo: {{titulo}}\nDuración estimada (meses): {{duracion}}\nFecha de inicio: {{fecha_inicio}}\nModalidad (presencial/virtual): {{modalidad}}\nRecursos disponibles: {{recursos}}\nActividades principales: {{actividades}}\n\nCRONOGRAMA (tabla en texto):\n| N° | Actividad | Mes 1 | Mes 2 | ... | Mes {{duracion}} | Responsable |\n\nPRESUPUESTO (tabla en texto):\n| Rubro | Descripción | Cantidad | Costo unitario (S/) | Costo total (S/) |\n\nRubros a incluir:\n- Bienes (materiales de escritorio, impresión, empastado)\n- Servicios (internet, fotocopias, asesoría estadística)\n- Recursos humanos (encuestadores, transcriptores)\n- Movilidad y viáticos\n- Imprevistos (10% del subtotal)\n- Total general', 1, '2026-05-15 17:27:39', '2026-05-15 17:27:39'),
(12, 'general', 'revisor_redaccion', 'Revisor de Redacción Académica', 'Corrige y mejora la redacción académica de cualquier texto.', 'Actúa como un corrector de estilo académico. Revisa y mejora el siguiente texto:\n\nTexto a revisar: \"{{texto}}\"\nEstilo requerido: {{estilo}}\nExtensión sugerida: {{extension}}\nFormato de citas: {{formato_citas}}\n\nInstrucciones:\n1. Corrige errores gramaticales y ortográficos\n2. Mejora la claridad y coherencia\n3. Ajusta al estilo académico formal\n4. Mantén el significado original\n5. Versión corregida completa\n6. Lista de cambios realizados (opcional)', 1, '2026-05-15 17:27:39', '2026-05-15 17:27:39'),
(13, 'general', 'generador_citas_apa', 'Generador de Citas APA 7ª Edición', 'Convierte referencias a formato APA 7ª edición correctamente.', 'Eres un bibliotecario especializado en normas APA 7ª edición. Convierte la siguiente fuente a formato APA:\n\nTipo de fuente: {{tipo_fuente}}\nAutores: {{autores}}\nAño: {{anio}}\nTítulo: {{titulo}}\nEditorial/Revista: {{editorial}}\nVolumen(Número): {{volumen}}\nPáginas: {{paginas}}\nDOI o URL: {{doi}}\nCiudad/País: {{ciudad}}\n\nGenera:\n1. Referencia completa en APA 7ª edición\n2. Cita narrativa (según APA)\n3. Cita parentética (según APA)\n4. Indicaciones sobre mayúsculas, cursivas y puntuación aplicadas', 1, '2026-05-15 17:27:39', '2026-05-15 17:27:39'),
(14, 'general', 'parafraseador', 'Parafraseador Académico', 'Parafrasea textos manteniendo el significado original en estilo formal.', 'Eres un parafraseador académico. Reescribe el siguiente texto manteniendo el significado pero cambiando la estructura y vocabulario:\n\nTexto original: \"{{texto_original}}\"\nExtensión deseada: {{extension}}\nTono: {{tono}}\nEvitar palabras: {{evitar_palabras}}\n\nInstrucciones:\n1. No cambiar términos técnicos o definiciones exactas\n2. Mantener las citas textuales si las hay\n3. Usar sinónimos académicos apropiados\n4. Variar la estructura sintáctica\n5. Indicar el porcentaje aproximado de cambio\n6. Versión parafraseada', 1, '2026-05-15 17:27:39', '2026-05-15 17:27:39'),
(15, 'general', 'preguntas_sustentacion', 'Posibles Preguntas para Sustentación', 'Anticipa las preguntas más comunes del jurado en la defensa de tesis.', 'Actúa como un jurado de tesis. Según la siguiente información, genera las posibles preguntas que podrían hacer en la sustentación:\n\nTítulo de tesis: {{titulo}}\nObjetivo general: {{objetivo}}\nMetodología: {{metodologia}}\nPrincipales hallazgos: {{hallazgos}}\nLimitaciones del estudio: {{limitaciones}}\nAportes: {{aportes}}\n\nGenera 15 preguntas divididas en:\n- 5 preguntas sobre el marco teórico (justificación de teorías, autores, definiciones)\n- 5 preguntas sobre la metodología (diseño, muestra, instrumentos, validez)\n- 5 preguntas sobre resultados y conclusiones (hallazgos, implicancias, limitaciones)\n\nPara cada pregunta incluye una sugerencia de respuesta.', 1, '2026-05-15 17:27:39', '2026-05-15 17:27:39'),
(16, 'general', 'indice_tesis', 'Estructurador de Índice de Tesis', 'Genera el índice completo y detallado de la tesis.', 'Eres un asesor de tesis. Ayúdame a estructurar el índice de mi tesis:\n\nTema: {{tema}}\nDisciplina: {{disciplina}}\nTipo de investigación: {{tipo}}\nNúmero de capítulos: {{capitulos}}\nIncluir anexos: {{anexos}}\n\nGenera un índice detallado con:\n- Preliminares (carátula, dedicatoria, agradecimientos, índice, lista de tablas, lista de figuras, resumen, abstract)\n- Capítulo I: Introducción (realidad problemática, formulación, justificación, objetivos, hipótesis)\n- Capítulo II: Marco Teórico (antecedentes, bases teóricas, definición de términos, marco conceptual)\n- Capítulo III: Metodología (tipo, diseño, población, muestra, técnicas, instrumentos, procedimiento)\n- Capítulo IV: Resultados (análisis descriptivo, análisis inferencial, prueba de hipótesis)\n- Capítulo V: Discusión\n- Capítulo VI: Conclusiones y Recomendaciones\n- Referencias\n- Anexos\n\nCada capítulo debe tener al menos 3 subcapítulos.', 1, '2026-05-15 17:27:39', '2026-05-15 17:27:39');

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

--
-- Estructura de tabla para la tabla `rate_limits`
--

CREATE TABLE `rate_limits` (
  `id` int(11) NOT NULL,
  `ip` varchar(45) NOT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

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

INSERT INTO `rate_limits` (`id`, `ip`, `created_at`) VALUES
(26, '132.157.129.145', '2026-05-15 16:45:25'),
(27, '132.157.129.145', '2026-05-15 16:45:25'),
(28, '132.157.129.145', '2026-05-15 16:45:25'),
(29, '132.157.129.145', '2026-05-15 16:45:25'),
(30, '132.157.129.145', '2026-05-15 16:45:25'),
(31, '132.157.129.145', '2026-05-15 16:45:25'),
(32, '132.157.129.145', '2026-05-15 16:45:30'),
(33, '132.157.129.145', '2026-05-15 16:45:30'),
(34, '132.157.129.145', '2026-05-15 16:45:30'),
(35, '132.157.129.145', '2026-05-15 16:45:30'),
(36, '132.157.129.145', '2026-05-15 16:45:30'),
(37, '132.157.129.145', '2026-05-15 16:45:30'),
(38, '132.157.129.145', '2026-05-15 16:45:57'),
(39, '132.157.129.145', '2026-05-15 16:45:57'),
(40, '132.157.129.145', '2026-05-15 16:45:57'),
(41, '132.157.129.145', '2026-05-15 16:45:57'),
(42, '132.157.129.145', '2026-05-15 16:45:57'),
(43, '132.157.129.145', '2026-05-15 16:45:57'),
(44, '132.157.129.145', '2026-05-15 16:46:40'),
(45, '132.157.129.145', '2026-05-15 16:46:40'),
(46, '132.157.129.145', '2026-05-15 16:46:40'),
(47, '132.157.129.145', '2026-05-15 16:46:40'),
(48, '132.157.129.145', '2026-05-15 16:46:40'),
(49, '132.157.129.145', '2026-05-15 16:46:40'),
(80, '181.67.122.131', '2026-05-19 21:05:56'),
(81, '181.67.122.131', '2026-05-19 21:05:56'),
(82, '181.67.122.131', '2026-05-19 21:05:56'),
(83, '181.67.122.131', '2026-05-19 21:05:57'),
(84, '181.67.122.131', '2026-05-19 21:05:57'),
(85, '181.67.122.131', '2026-05-19 21:05:57'),
(86, '181.67.122.131', '2026-05-19 21:05:57'),
(87, '181.67.122.131', '2026-05-19 21:07:42'),
(88, '181.67.122.131', '2026-05-19 21:07:42'),
(89, '181.67.122.131', '2026-05-19 21:07:42'),
(90, '181.67.122.131', '2026-05-19 21:14:24'),
(91, '181.67.122.131', '2026-05-19 21:14:24'),
(92, '181.67.122.131', '2026-05-19 21:14:24'),
(93, '181.67.122.131', '2026-05-19 21:14:24'),
(94, '181.67.122.131', '2026-05-19 21:14:24'),
(95, '181.67.122.131', '2026-05-19 21:14:24'),
(96, '181.67.122.131', '2026-05-19 21:14:32'),
(97, '181.67.122.131', '2026-05-19 21:14:32'),
(98, '181.67.122.131', '2026-05-19 21:14:32'),
(99, '181.67.122.131', '2026-05-19 21:14:48'),
(100, '181.67.122.131', '2026-05-19 21:14:48'),
(101, '181.67.122.131', '2026-05-19 21:14:48'),
(102, '181.67.122.131', '2026-05-19 21:14:48'),
(103, '181.67.122.131', '2026-05-19 21:14:48'),
(104, '181.67.122.131', '2026-05-19 21:14:48'),
(105, '181.67.122.131', '2026-05-19 21:14:48'),
(106, '181.67.122.131', '2026-05-19 21:14:48'),
(107, '181.67.122.131', '2026-05-19 21:14:53'),
(108, '181.67.122.131', '2026-05-19 21:14:53'),
(109, '181.67.122.131', '2026-05-19 21:14:53'),
(110, '181.67.122.131', '2026-05-19 21:14:53'),
(111, '181.67.122.131', '2026-05-19 21:14:56'),
(112, '181.67.122.131', '2026-05-19 21:14:56'),
(113, '181.67.122.131', '2026-05-19 21:14:56'),
(114, '181.67.122.131', '2026-05-19 21:14:56'),
(115, '181.67.122.131', '2026-05-19 21:15:22'),
(116, '181.67.122.131', '2026-05-19 21:15:22'),
(117, '181.67.122.131', '2026-05-19 21:15:22'),
(118, '181.67.122.131', '2026-05-19 21:15:22'),
(119, '181.67.122.131', '2026-05-19 21:24:10'),
(120, '181.67.122.131', '2026-05-19 21:24:10'),
(121, '181.67.122.131', '2026-05-19 21:24:16'),
(122, '181.67.122.131', '2026-05-19 21:24:16'),
(123, '181.67.122.131', '2026-05-19 21:24:16'),
(124, '181.67.122.131', '2026-05-19 21:24:16'),
(125, '181.67.122.131', '2026-05-19 21:24:16'),
(126, '181.67.122.131', '2026-05-19 21:24:16'),
(127, '181.67.122.131', '2026-05-19 21:24:16'),
(128, '181.67.122.131', '2026-05-19 21:24:16'),
(129, '181.67.122.131', '2026-05-19 21:26:22'),
(130, '181.67.122.131', '2026-05-19 21:26:22'),
(131, '181.67.122.131', '2026-05-19 21:26:23'),
(132, '181.67.122.131', '2026-05-19 21:26:23'),
(133, '181.67.122.131', '2026-05-19 21:26:23'),
(134, '181.67.122.131', '2026-05-19 21:26:23'),
(135, '181.67.122.131', '2026-05-19 21:26:23'),
(136, '181.67.122.131', '2026-05-19 21:26:23'),
(137, '181.67.122.131', '2026-05-19 21:26:25'),
(138, '181.67.122.131', '2026-05-19 21:26:25'),
(139, '181.67.122.131', '2026-05-19 21:26:25'),
(140, '181.67.122.131', '2026-05-19 21:26:25'),
(141, '181.67.122.131', '2026-05-19 21:26:32'),
(142, '181.67.122.131', '2026-05-19 21:26:32'),
(143, '181.67.122.131', '2026-05-19 21:26:32'),
(144, '181.67.122.131', '2026-05-19 21:26:32'),
(145, '181.67.122.131', '2026-05-19 21:26:32'),
(146, '181.67.122.131', '2026-05-19 21:26:32'),
(147, '181.67.122.131', '2026-05-19 21:26:32'),
(148, '181.67.122.131', '2026-05-19 21:26:32'),
(149, '181.67.122.131', '2026-05-19 21:26:32'),
(150, '181.67.122.131', '2026-05-19 21:26:32'),
(151, '181.67.122.131', '2026-05-19 21:26:32'),
(152, '181.67.122.131', '2026-05-19 21:26:32'),
(153, '181.67.122.131', '2026-05-19 21:26:39'),
(154, '181.67.122.131', '2026-05-19 21:26:39'),
(155, '181.67.122.131', '2026-05-19 21:26:39'),
(156, '181.67.122.131', '2026-05-19 21:26:39'),
(157, '181.67.122.131', '2026-05-19 21:26:39'),
(158, '181.67.122.131', '2026-05-19 21:26:39'),
(159, '181.67.122.131', '2026-05-19 21:26:56'),
(160, '181.67.122.131', '2026-05-19 21:26:56'),
(161, '181.67.122.131', '2026-05-19 21:26:56'),
(162, '181.67.122.131', '2026-05-19 21:26:56'),
(163, '181.67.122.131', '2026-05-19 21:26:56'),
(164, '181.67.122.131', '2026-05-19 21:26:56'),
(165, '181.67.122.131', '2026-05-19 21:27:23'),
(166, '181.67.122.131', '2026-05-19 21:27:23'),
(167, '181.67.122.131', '2026-05-19 21:27:23'),
(168, '181.67.122.131', '2026-05-19 21:27:23'),
(169, '181.67.122.131', '2026-05-19 21:27:23'),
(170, '181.67.122.131', '2026-05-19 21:27:23'),
(171, '181.67.122.131', '2026-05-19 22:39:34'),
(172, '181.67.122.131', '2026-05-19 22:39:34'),
(173, '181.67.122.131', '2026-05-19 22:39:34'),
(174, '181.67.122.131', '2026-05-19 22:39:34'),
(175, '181.67.122.131', '2026-05-19 22:39:34'),
(176, '181.67.122.131', '2026-05-19 22:39:36'),
(177, '181.67.122.131', '2026-05-19 22:39:36'),
(178, '181.67.122.131', '2026-05-19 22:39:36'),
(179, '181.67.122.131', '2026-05-19 22:39:37'),
(180, '181.67.122.131', '2026-05-19 22:39:37'),
(181, '181.67.122.131', '2026-05-26 14:49:45'),
(182, '181.67.122.131', '2026-05-26 14:49:45'),
(183, '181.67.122.131', '2026-05-26 14:49:45'),
(184, '181.67.122.131', '2026-05-26 14:49:45'),
(185, '181.67.122.131', '2026-05-26 14:49:45'),
(186, '181.67.122.131', '2026-05-26 14:49:45'),
(187, '181.67.122.131', '2026-05-26 14:49:45'),
(188, '181.67.122.131', '2026-05-26 14:49:45'),
(189, '181.67.122.131', '2026-05-26 14:49:45'),
(190, '181.67.122.131', '2026-05-26 14:49:45'),
(191, '181.67.122.131', '2026-05-26 14:49:45'),
(192, '181.67.122.131', '2026-05-26 14:50:58'),
(193, '181.67.122.131', '2026-05-26 14:50:59'),
(194, '181.67.122.131', '2026-05-26 14:51:07'),
(195, '181.67.122.131', '2026-05-26 14:51:07'),
(196, '181.67.122.131', '2026-05-26 14:51:08'),
(197, '181.67.122.131', '2026-05-26 14:51:52'),
(198, '181.67.122.131', '2026-05-26 14:51:52'),
(199, '181.67.122.131', '2026-05-26 14:51:52'),
(200, '181.67.122.131', '2026-05-26 14:51:52'),
(201, '181.67.122.131', '2026-05-26 14:51:52'),
(202, '181.67.122.131', '2026-05-26 14:51:52'),
(203, '181.67.122.131', '2026-05-26 14:51:52'),
(204, '181.67.122.131', '2026-05-26 14:51:52'),
(205, '181.67.122.131', '2026-05-26 14:51:52'),
(206, '181.67.122.131', '2026-05-26 14:51:52'),
(207, '181.67.122.131', '2026-05-26 14:51:53'),
(208, '181.67.122.131', '2026-05-26 14:51:53'),
(209, '181.67.122.131', '2026-05-26 14:51:57'),
(210, '181.67.122.131', '2026-05-26 14:51:57'),
(211, '181.67.122.131', '2026-05-26 14:51:57'),
(212, '181.67.122.131', '2026-05-26 14:51:57'),
(213, '181.67.122.131', '2026-05-26 14:51:57'),
(214, '181.67.122.131', '2026-05-26 14:51:57'),
(215, '181.67.122.131', '2026-05-26 14:52:08'),
(216, '181.67.122.131', '2026-05-26 14:52:08'),
(217, '181.67.122.131', '2026-05-26 14:52:08'),
(218, '181.67.122.131', '2026-05-26 14:52:08'),
(219, '181.67.122.131', '2026-05-26 14:52:08'),
(220, '181.67.122.131', '2026-05-26 14:52:08'),
(221, '181.67.122.131', '2026-05-26 14:52:43'),
(222, '181.67.122.131', '2026-05-26 14:52:43'),
(223, '181.67.122.131', '2026-05-26 14:52:44'),
(224, '181.67.122.131', '2026-05-26 14:52:44'),
(225, '181.67.122.131', '2026-05-26 14:52:44'),
(226, '181.67.122.131', '2026-05-26 14:52:44'),
(227, '181.67.122.131', '2026-05-26 14:52:56'),
(228, '181.67.122.131', '2026-05-26 14:52:56'),
(229, '181.67.122.131', '2026-05-26 14:52:56'),
(230, '181.67.122.131', '2026-05-26 14:52:56'),
(231, '181.67.122.131', '2026-05-26 14:52:56'),
(232, '181.67.122.131', '2026-05-26 14:52:56'),
(233, '181.67.122.131', '2026-05-26 14:53:04'),
(234, '181.67.122.131', '2026-05-26 14:53:04'),
(235, '181.67.122.131', '2026-05-26 14:53:04'),
(236, '181.67.122.131', '2026-05-26 14:53:04'),
(237, '181.67.122.131', '2026-05-26 14:53:04'),
(238, '181.67.122.131', '2026-05-26 14:53:04'),
(239, '181.67.122.131', '2026-05-26 15:08:42'),
(240, '181.67.122.131', '2026-05-26 15:08:43'),
(241, '181.67.122.131', '2026-05-26 15:08:43'),
(242, '181.67.122.131', '2026-05-26 15:08:43'),
(243, '181.67.122.131', '2026-05-26 15:08:43'),
(244, '181.67.122.131', '2026-05-26 15:08:43'),
(245, '181.67.122.131', '2026-05-26 15:08:43'),
(246, '181.67.122.131', '2026-05-26 15:08:43'),
(247, '181.67.122.131', '2026-05-26 15:08:43'),
(248, '181.67.122.131', '2026-05-26 15:08:43'),
(249, '181.67.122.131', '2026-05-26 15:08:43'),
(250, '181.67.122.131', '2026-05-26 15:12:19'),
(251, '181.67.122.131', '2026-05-26 15:12:19'),
(252, '181.67.122.131', '2026-05-26 15:12:19'),
(253, '181.67.122.131', '2026-05-26 15:12:19'),
(254, '181.67.122.131', '2026-05-26 15:12:19'),
(255, '181.67.122.131', '2026-05-26 15:12:19'),
(256, '181.67.122.131', '2026-05-26 15:12:19'),
(257, '181.67.122.131', '2026-05-26 15:12:19'),
(258, '181.67.122.131', '2026-05-26 15:12:20'),
(259, '181.67.122.131', '2026-05-26 15:12:20'),
(260, '181.67.122.131', '2026-05-26 15:14:55'),
(261, '181.67.122.131', '2026-05-26 15:14:55'),
(262, '181.67.122.131', '2026-05-26 15:14:56'),
(263, '181.67.122.131', '2026-05-26 15:24:25'),
(264, '181.67.122.131', '2026-05-26 15:24:43'),
(265, '181.67.122.131', '2026-05-26 15:25:09'),
(266, '181.67.122.131', '2026-05-26 15:42:40'),
(267, '181.67.122.131', '2026-05-26 16:04:40'),
(268, '181.67.122.131', '2026-05-26 16:11:37'),
(269, '181.67.122.131', '2026-05-26 16:18:43'),
(4, '201.230.249.154', '2026-05-15 15:44:48'),
(5, '201.230.249.154', '2026-05-15 15:45:32'),
(6, '201.230.249.154', '2026-05-15 15:45:44'),
(7, '201.230.249.154', '2026-05-15 15:47:15'),
(8, '201.230.249.154', '2026-05-15 15:47:16'),
(9, '201.230.249.154', '2026-05-15 15:47:16'),
(10, '201.230.249.154', '2026-05-15 15:47:16'),
(11, '201.230.249.154', '2026-05-15 15:47:16'),
(12, '201.230.249.154', '2026-05-15 15:47:16'),
(13, '201.230.249.154', '2026-05-15 15:47:16'),
(14, '201.230.249.154', '2026-05-15 15:48:04'),
(15, '201.230.249.154', '2026-05-15 15:48:04'),
(16, '201.230.249.154', '2026-05-15 15:48:04'),
(17, '201.230.249.154', '2026-05-15 15:48:04'),
(18, '201.230.249.154', '2026-05-15 15:48:04'),
(19, '201.230.249.154', '2026-05-15 15:48:04'),
(20, '201.230.249.154', '2026-05-15 15:48:07'),
(21, '201.230.249.154', '2026-05-15 15:48:07'),
(22, '201.230.249.154', '2026-05-15 15:48:07'),
(23, '201.230.249.154', '2026-05-15 15:48:07'),
(24, '201.230.249.154', '2026-05-15 15:48:07'),
(25, '201.230.249.154', '2026-05-15 15:48:07'),
(71, '201.230.249.182', '2026-05-15 17:30:35'),
(72, '201.230.249.182', '2026-05-15 17:30:35'),
(73, '201.230.249.182', '2026-05-15 17:30:35'),
(74, '201.230.249.182', '2026-05-15 17:30:39'),
(75, '201.230.249.182', '2026-05-15 17:30:39'),
(76, '201.230.249.182', '2026-05-15 17:30:39'),
(77, '201.230.249.182', '2026-05-15 17:30:59'),
(78, '201.230.249.182', '2026-05-15 17:30:59'),
(79, '201.230.249.182', '2026-05-15 17:30:59'),
(3, '201.230.249.218', '2026-05-15 15:42:50'),
(50, '201.230.249.52', '2026-05-15 17:27:04'),
(51, '201.230.249.52', '2026-05-15 17:27:04'),
(52, '201.230.249.52', '2026-05-15 17:27:04'),
(53, '201.230.249.52', '2026-05-15 17:27:04'),
(54, '201.230.249.52', '2026-05-15 17:27:04'),
(55, '201.230.249.52', '2026-05-15 17:27:04'),
(56, '201.230.249.52', '2026-05-15 17:27:51'),
(57, '201.230.249.52', '2026-05-15 17:27:51'),
(58, '201.230.249.52', '2026-05-15 17:27:51'),
(59, '201.230.249.52', '2026-05-15 17:27:51'),
(60, '201.230.249.52', '2026-05-15 17:27:51'),
(61, '201.230.249.52', '2026-05-15 17:27:51'),
(62, '201.230.249.52', '2026-05-15 17:28:39'),
(63, '201.230.249.52', '2026-05-15 17:28:39'),
(64, '201.230.249.52', '2026-05-15 17:28:39'),
(65, '201.230.249.52', '2026-05-15 17:28:39'),
(66, '201.230.249.52', '2026-05-15 17:28:39'),
(67, '201.230.249.52', '2026-05-15 17:28:39'),
(68, '201.230.249.52', '2026-05-15 17:28:59'),
(69, '201.230.249.52', '2026-05-15 17:28:59'),
(70, '201.230.249.52', '2026-05-15 17:28:59'),
(1, '201.230.249.95', '2026-05-15 15:37:44'),
(2, '201.230.249.95', '2026-05-15 15:38:41'),
(270, '38.255.108.215', '2026-05-26 20:24:56'),
(271, '38.255.108.215', '2026-05-26 20:25:01'),
(272, '38.255.108.215', '2026-05-26 20:25:04');

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

--
-- Estructura de tabla para la tabla `users`
--

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `username` varchar(50) NOT NULL,
  `email` varchar(100) NOT NULL,
  `password` varchar(255) NOT NULL,
  `role` enum('admin','user') DEFAULT 'user',
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

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

INSERT INTO `users` (`id`, `username`, `email`, `password`, `role`, `created_at`, `updated_at`) VALUES
(3, 'admin', 'admin@example.com', '$2y$10$ri3CjHpkJyRbV16eEWNALOWyKowOYvuxbjV3EDL22XRkFMnY17vL6', 'admin', '2026-05-06 19:44:39', '2026-05-06 19:44:39'),
(4, 'user', 'user@example.com', '$2y$10$8YkQIHqWsRQaPohfP3mOV.IDV1Z9X4/ke6kgT8t4qrMVDvIKlpxzm', 'user', '2026-05-06 19:44:39', '2026-05-26 14:50:59');

--
-- Índices para tablas volcadas
--

--
-- Indices de la tabla `auth_tokens`
--
ALTER TABLE `auth_tokens`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `token` (`token`),
  ADD KEY `user_id` (`user_id`);

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

--
-- Indices de la tabla `memberships`
--
ALTER TABLE `memberships`
  ADD PRIMARY KEY (`id`),
  ADD KEY `plan_id` (`plan_id`);

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

--
-- Indices de la tabla `password_resets`
--
ALTER TABLE `password_resets`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `token` (`token`),
  ADD KEY `idx_email` (`email`),
  ADD KEY `idx_token` (`token`);

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

--
-- Indices de la tabla `plan_features`
--
ALTER TABLE `plan_features`
  ADD PRIMARY KEY (`id`),
  ADD KEY `plan_id` (`plan_id`);

--
-- Indices de la tabla `prompt_templates`
--
ALTER TABLE `prompt_templates`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `uniq_category_slug` (`category`,`slug`);

--
-- Indices de la tabla `rate_limits`
--
ALTER TABLE `rate_limits`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_ip_time` (`ip`,`created_at`);

--
-- Indices de la tabla `users`
--
ALTER TABLE `users`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `username` (`username`),
  ADD UNIQUE KEY `email` (`email`);

--
-- AUTO_INCREMENT de las tablas volcadas
--

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

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

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

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

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

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

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

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

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

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

--
-- Restricciones para tablas volcadas
--

--
-- Filtros para la tabla `auth_tokens`
--
ALTER TABLE `auth_tokens`
  ADD CONSTRAINT `auth_tokens_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Filtros para la tabla `memberships`
--
ALTER TABLE `memberships`
  ADD CONSTRAINT `memberships_ibfk_1` FOREIGN KEY (`plan_id`) REFERENCES `plans` (`id`) ON DELETE SET NULL;

--
-- Filtros para la tabla `plan_features`
--
ALTER TABLE `plan_features`
  ADD CONSTRAINT `plan_features_ibfk_1` FOREIGN KEY (`plan_id`) REFERENCES `plans` (`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 */;
