trading-platform-database-v2/seeds/prod/education/01-education-courses.sql
rckrdmrd 45e77e9a9c feat: Initial commit - Database schemas and scripts
DDL schemas for Trading Platform:
- User management
- Authentication
- Payments
- Education
- ML predictions
- Trading data

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 04:30:23 -06:00

187 lines
24 KiB
SQL

-- =====================================================
-- SEED DATA - Schema Education (Producción)
-- =====================================================
-- Proyecto: OrbiQuant IA (Trading Platform)
-- Basado en: Curso_Basico.md (ICT/IPDA)
-- =====================================================
-- =====================================================
-- 0. SYSTEM USER (para instructor)
-- =====================================================
-- Crear usuario sistema/admin para ser instructor
INSERT INTO auth.users (id, email, email_verified, email_verified_at, password_hash, status, role)
VALUES (
'00000000-0000-0000-0000-000000000001',
'academy@orbiquant.com',
true,
NOW(),
'$2b$10$dummyhashdummyhashdummyhashdummyhashdummyhash', -- placeholder
'active',
'admin'
) ON CONFLICT (email) DO NOTHING;
-- =====================================================
-- 1. CATEGORIES
-- =====================================================
INSERT INTO education.categories (id, name, slug, description, color, display_order, is_active) VALUES
('10000001-0001-0000-0000-000000000001', 'Trading Básico', 'trading-basico', 'Fundamentos del trading y mercados financieros', '#3B82F6', 1, true),
('10000001-0002-0000-0000-000000000002', 'Análisis Técnico ICT', 'analisis-tecnico-ict', 'Metodología ICT y Smart Money Concepts', '#10B981', 2, true),
('10000001-0003-0000-0000-000000000003', 'Estrategias Avanzadas', 'estrategias-avanzadas', 'Estrategias de trading profesional', '#8B5CF6', 3, true),
('10000001-0004-0000-0000-000000000004', 'Trading con IA', 'trading-ia', 'Trading asistido por inteligencia artificial', '#F59E0B', 4, true),
('10000001-0005-0000-0000-000000000005', 'Gestión de Riesgo', 'gestion-riesgo', 'Control de riesgo y gestión de capital', '#EF4444', 5, true)
ON CONFLICT (slug) DO NOTHING;
-- =====================================================
-- 2. CURSO: Trading ICT - De Cero a Profesional
-- =====================================================
INSERT INTO education.courses (
id, title, slug, short_description, full_description, category_id,
difficulty_level, instructor_id, instructor_name, is_free, price_usd, xp_reward,
status, published_at, total_modules, total_lessons, thumbnail_url,
learning_objectives, prerequisites
) VALUES (
'20000001-0001-0000-0000-000000000001',
'Trading ICT - De Cero a Profesional',
'trading-ict-completo',
'Domina la metodología ICT/IPDA desde los fundamentos hasta estrategias avanzadas',
'Curso completo de trading basado en la metodología ICT (Inner Circle Trader) y el concepto IPDA (Interbank Price Delivery Algorithmic). Aprenderás a leer el mercado como lo hacen las instituciones, identificar zonas de liquidez, order blocks, y ejecutar trades de alta probabilidad.',
'10000001-0002-0000-0000-000000000002',
'beginner',
'00000000-0000-0000-0000-000000000001',
'OrbiQuant Academy',
true,
NULL,
1000,
'published',
NOW(),
7,
28,
'/images/courses/ict-course-thumbnail.jpg',
ARRAY['Entender la estructura del mercado según IPDA', 'Identificar Higher Highs, Lower Lows y cambios de tendencia', 'Detectar Order Blocks y Fair Value Gaps', 'Operar en las Kill Zones con alta probabilidad', 'Aplicar gestión de riesgo profesional'],
ARRAY['Acceso a una plataforma de trading (MT4/MT5 o TradingView)', 'Conocimientos básicos de informática', 'Disciplina y compromiso de estudio']
) ON CONFLICT (slug) DO NOTHING;
-- =====================================================
-- 3. MODULES (7 módulos basados en Curso_Basico.md)
-- =====================================================
INSERT INTO education.modules (id, course_id, title, description, display_order, duration_minutes) VALUES
('30000001-0001-0000-0000-000000000001', '20000001-0001-0000-0000-000000000001', 'Módulo 1: Elementos Básicos', 'Mercado de derivados, OTC, tipos de gráficos y velas japonesas', 1, 45),
('30000001-0002-0000-0000-000000000002', '20000001-0001-0000-0000-000000000001', 'Módulo 2: Factores y Herramientas', 'Tipos de broker, regulaciones, plataformas MT4/MT5 y TradingView', 2, 60),
('30000001-0003-0000-0000-000000000003', '20000001-0001-0000-0000-000000000001', 'Módulo 3: Introducción al IPDA', 'Interbank Price Delivery Algorithmic, estructura y narrativa del precio', 3, 90),
('30000001-0004-0000-0000-000000000004', '20000001-0001-0000-0000-000000000001', 'Módulo 4: Tendencia y Key Levels', 'Identificación de tendencias, Key Levels, Power of Three y Matrices IPDA', 4, 75),
('30000001-0005-0000-0000-000000000005', '20000001-0001-0000-0000-000000000001', 'Módulo 5: Kill Zones y Momentum', 'Horarios de las principales bolsas y sesiones de trading', 5, 60),
('30000001-0006-0000-0000-000000000006', '20000001-0001-0000-0000-000000000001', 'Módulo 6: Order Blocks', 'Tipos de Order Blocks: OB, OBQ, KOB, GOB, POB', 6, 90),
('30000001-0007-0000-0000-000000000007', '20000001-0001-0000-0000-000000000001', 'Módulo 7: Imbalances', 'FVG, iFVG, BPR, VFVG, NWOG, NDOG', 7, 75)
ON CONFLICT (id) DO NOTHING;
-- =====================================================
-- 4. LESSONS
-- =====================================================
-- Módulo 1: Elementos Básicos
INSERT INTO education.lessons (id, module_id, title, description, content_type, article_content, display_order, is_preview, xp_reward) VALUES
('40000001-0101-0000-0000-000000000001', '30000001-0001-0000-0000-000000000001', 'Mercado de Derivados y OTC', 'Qué son los derivados, futuros, opciones, CFDs y el mercado OTC', 'article', '<h2>Derivados</h2><p>El mercado de derivados es donde se negocian instrumentos financieros cuyo valor depende (o deriva) del precio de otro activo.</p><h3>Ejemplos de derivados:</h3><ul><li>Futuros</li><li>Opciones</li><li>CFDs (Contratos por diferencia)</li><li>Swaps</li></ul><h2>OTC (Over The Counter)</h2><p>OTC significa "fuera de mercado". Son operaciones que no pasan por una bolsa formal.</p>', 1, true, 10),
('40000001-0102-0000-0000-000000000002', '30000001-0001-0000-0000-000000000001', 'Tipos de Gráficos', 'Gráfico de líneas, barras y velas japonesas', 'article', '<h2>1. Gráfico de Líneas</h2><p>Muestra solo el precio de cierre de cada periodo.</p><h2>2. Gráfico de Barras</h2><p>Muestra OHLC (Open, High, Low, Close).</p><h2>3. Gráfico de Velas Japonesas</h2><p>El más usado en trading profesional.</p>', 2, true, 10),
('40000001-0103-0000-0000-000000000003', '30000001-0001-0000-0000-000000000001', 'Velas Japonesas en Profundidad', 'Anatomía de las velas, patrones básicos', 'article', '<h2>Anatomía de una Vela</h2><ul><li><strong>Cuerpo:</strong> Distancia entre apertura y cierre</li><li><strong>Mecha superior:</strong> Precio máximo</li><li><strong>Mecha inferior:</strong> Precio mínimo</li></ul>', 3, false, 15),
('40000001-0104-0000-0000-000000000004', '30000001-0001-0000-0000-000000000001', 'Timeframes y Análisis Multi-temporal', 'Selección de temporalidades según estilo de trading', 'article', '<h2>Timeframes</h2><ul><li>M1, M5, M15: Scalping</li><li>H1, H4: Day trading</li><li>D1, W1: Swing trading</li></ul>', 4, false, 10);
-- Módulo 2: Factores y Herramientas
INSERT INTO education.lessons (id, module_id, title, description, content_type, article_content, display_order, is_preview, xp_reward) VALUES
('40000001-0201-0000-0000-000000000001', '30000001-0002-0000-0000-000000000002', 'Tipos de Broker', 'ECN, STP, Market Maker y modelos híbridos', 'article', '<h2>ECN</h2><p>Te conecta directamente con la red de participantes.</p><h2>STP</h2><p>Pasa órdenes a proveedores de liquidez.</p><h2>Market Maker</h2><p>Crea mercado interno.</p>', 1, true, 10),
('40000001-0202-0000-0000-000000000002', '30000001-0002-0000-0000-000000000002', 'Regulaciones Globales', 'FCA, ASIC, CySEC, CFTC y su importancia', 'article', '<h2>Principales Reguladores</h2><ul><li>FCA (Reino Unido)</li><li>ASIC (Australia)</li><li>CySEC (Chipre/UE)</li><li>CFTC/NFA (EE.UU.)</li></ul>', 2, false, 10),
('40000001-0203-0000-0000-000000000003', '30000001-0002-0000-0000-000000000002', 'MetaTrader 4 y 5', 'Configuración y uso de MT4/MT5', 'article', '<h2>MetaTrader</h2><p>La plataforma más popular para trading de forex y CFDs.</p>', 3, false, 15),
('40000001-0204-0000-0000-000000000004', '30000001-0002-0000-0000-000000000002', 'TradingView', 'Plataforma de análisis técnico avanzado', 'article', '<h2>TradingView</h2><p>La mejor plataforma para análisis técnico con comunidad activa.</p>', 4, false, 10);
-- Módulo 3: Introducción al IPDA
INSERT INTO education.lessons (id, module_id, title, description, content_type, article_content, display_order, is_preview, xp_reward) VALUES
('40000001-0301-0000-0000-000000000001', '30000001-0003-0000-0000-000000000003', 'Qué es IPDA', 'Interbank Price Delivery Algorithmic explicado', 'article', '<h2>IPDA</h2><p>IPDA significa Interbank Price Delivery Algorithmic. Es el concepto de que el precio se mueve de manera algorítmica para entregar liquidez institucional.</p>', 1, true, 15),
('40000001-0302-0000-0000-000000000002', '30000001-0003-0000-0000-000000000003', 'Estructura del Mercado ICT', 'BOS, CHoCH, Market Structure Shift', 'article', '<h2>Conceptos Clave</h2><ul><li>BOS: Break of Structure</li><li>CHoCH: Change of Character</li><li>MSS: Market Structure Shift</li></ul>', 2, false, 20),
('40000001-0303-0000-0000-000000000003', '30000001-0003-0000-0000-000000000003', 'Narrativa del Precio', 'Cómo interpretar la historia del precio', 'article', '<h2>La Narrativa</h2><p>El precio cuenta una historia. Cada vela es un capítulo.</p>', 3, false, 15),
('40000001-0304-0000-0000-000000000004', '30000001-0003-0000-0000-000000000003', 'Liquidez Institucional', 'Buy-side y Sell-side liquidity', 'article', '<h2>Liquidez</h2><ul><li>Buy-side: Liquidez por encima de máximos</li><li>Sell-side: Liquidez por debajo de mínimos</li></ul>', 4, false, 20);
-- Módulo 4: Tendencia y Key Levels
INSERT INTO education.lessons (id, module_id, title, description, content_type, article_content, display_order, is_preview, xp_reward) VALUES
('40000001-0401-0000-0000-000000000001', '30000001-0004-0000-0000-000000000004', 'Higher Highs y Lower Lows', 'Identificación de tendencias', 'article', '<h2>Estructura de Tendencia</h2><ul><li>Alcista: Higher Highs + Higher Lows</li><li>Bajista: Lower Highs + Lower Lows</li></ul>', 1, true, 15),
('40000001-0402-0000-0000-000000000002', '30000001-0004-0000-0000-000000000004', 'Key Levels', 'Soporte, resistencia y niveles clave', 'article', '<h2>Key Levels</h2><p>Niveles donde el precio ha reaccionado históricamente.</p>', 2, false, 15),
('40000001-0403-0000-0000-000000000003', '30000001-0004-0000-0000-000000000004', 'Power of Three (AMD)', 'Accumulation, Manipulation, Distribution', 'article', '<h2>Power of Three</h2><ul><li><strong>A</strong>ccumulation: Rango lateral</li><li><strong>M</strong>anipulation: Falsa ruptura</li><li><strong>D</strong>istribution: Movimiento real</li></ul>', 3, false, 25),
('40000001-0404-0000-0000-000000000004', '30000001-0004-0000-0000-000000000004', 'Matrices IPDA', 'Premium y Discount zones', 'article', '<h2>Matrices</h2><ul><li>Premium: Por encima del 50% del rango</li><li>Discount: Por debajo del 50% del rango</li></ul>', 4, false, 20);
-- Módulo 5: Kill Zones
INSERT INTO education.lessons (id, module_id, title, description, content_type, article_content, display_order, is_preview, xp_reward) VALUES
('40000001-0501-0000-0000-000000000001', '30000001-0005-0000-0000-000000000005', 'Sesiones del Mercado', 'Asia, Londres, Nueva York', 'article', '<h2>Sesiones</h2><ul><li>Asia: 00:00 - 08:00 UTC</li><li>Londres: 08:00 - 16:00 UTC</li><li>Nueva York: 13:00 - 21:00 UTC</li></ul>', 1, true, 15),
('40000001-0502-0000-0000-000000000002', '30000001-0005-0000-0000-000000000005', 'Kill Zones', 'Horarios de alta probabilidad', 'article', '<h2>Kill Zones</h2><p>Momentos del día donde hay mayor probabilidad de movimientos direccionales.</p>', 2, false, 20),
('40000001-0503-0000-0000-000000000003', '30000001-0005-0000-0000-000000000005', 'ICT Killzone Times', 'London Open, NY Open, etc.', 'article', '<h2>Horarios Clave</h2><ul><li>London Open: 02:00 - 05:00 EST</li><li>NY Open: 07:00 - 10:00 EST</li><li>London Close: 10:00 - 12:00 EST</li></ul>', 3, false, 15),
('40000001-0504-0000-0000-000000000004', '30000001-0005-0000-0000-000000000005', 'Momentum y Volatilidad', 'Medición y aprovechamiento', 'article', '<h2>Momentum</h2><p>La fuerza del movimiento del precio.</p>', 4, false, 15);
-- Módulo 6: Order Blocks
INSERT INTO education.lessons (id, module_id, title, description, content_type, article_content, display_order, is_preview, xp_reward) VALUES
('40000001-0601-0000-0000-000000000001', '30000001-0006-0000-0000-000000000006', 'Qué es un Order Block', 'Definición y características', 'article', '<h2>Order Block</h2><p>La última vela opuesta antes de un movimiento impulsivo. Representa donde las instituciones colocaron órdenes.</p>', 1, true, 20),
('40000001-0602-0000-0000-000000000002', '30000001-0006-0000-0000-000000000006', 'Tipos de Order Blocks', 'OB, OBQ, KOB, GOB, POB', 'article', '<h2>Tipos</h2><ul><li>OB: Order Block regular</li><li>OBQ: Order Block Qualitativo</li><li>KOB: Key Order Block</li><li>GOB: Golden Order Block</li><li>POB: Propulsion Order Block</li></ul>', 2, false, 25),
('40000001-0603-0000-0000-000000000003', '30000001-0006-0000-0000-000000000006', 'Validación de Order Blocks', 'Cómo confirmar un OB válido', 'article', '<h2>Validación</h2><ul><li>Debe estar en zona de descuento/premium</li><li>Debe tener desplazamiento (displacement)</li><li>Debe respetar estructura de mercado</li></ul>', 3, false, 20),
('40000001-0604-0000-0000-000000000004', '30000001-0006-0000-0000-000000000006', 'Trading con Order Blocks', 'Entradas y gestión de trades', 'article', '<h2>Estrategia</h2><ol><li>Identificar OB en zona premium/discount</li><li>Esperar retroceso al OB</li><li>Confirmar con estructura menor</li><li>Entrada con SL detrás del OB</li></ol>', 4, false, 25);
-- Módulo 7: Imbalances
INSERT INTO education.lessons (id, module_id, title, description, content_type, article_content, display_order, is_preview, xp_reward) VALUES
('40000001-0701-0000-0000-000000000001', '30000001-0007-0000-0000-000000000007', 'Fair Value Gaps', 'Qué son los FVG y cómo identificarlos', 'article', '<h2>FVG</h2><p>Un Fair Value Gap es un desequilibrio de precio donde hay un "gap" entre la mecha de una vela y la mecha de otra, dejando un espacio vacío.</p>', 1, true, 20),
('40000001-0702-0000-0000-000000000002', '30000001-0007-0000-0000-000000000007', 'Tipos de FVG', 'iFVG, BISI, SIBI', 'article', '<h2>Tipos</h2><ul><li>iFVG: Inverted FVG</li><li>BISI: Buy-side Imbalance, Sell-side Inefficiency</li><li>SIBI: Sell-side Imbalance, Buy-side Inefficiency</li></ul>', 2, false, 20),
('40000001-0703-0000-0000-000000000003', '30000001-0007-0000-0000-000000000007', 'BPR y VFVG', 'Balanced Price Range y Void FVG', 'article', '<h2>Conceptos Avanzados</h2><ul><li>BPR: Cuando un FVG alcista y bajista se superponen</li><li>VFVG: FVG que ha sido parcialmente rellenado</li></ul>', 3, false, 20),
('40000001-0704-0000-0000-000000000004', '30000001-0007-0000-0000-000000000007', 'NWOG y NDOG', 'New Week/Day Opening Gap', 'article', '<h2>Opening Gaps</h2><ul><li>NWOG: Gap entre cierre del viernes y apertura del domingo</li><li>NDOG: Gap entre cierre y apertura diaria</li></ul>', 4, false, 15);
-- =====================================================
-- 5. QUIZZES
-- =====================================================
INSERT INTO education.quizzes (id, lesson_id, title, description, passing_score_percentage, time_limit_minutes, max_attempts, xp_reward) VALUES
('50000001-0001-0000-0000-000000000001', '40000001-0103-0000-0000-000000000003', 'Quiz: Velas Japonesas', 'Evalúa tu conocimiento sobre velas japonesas', 70, 10, 3, 50),
('50000001-0002-0000-0000-000000000002', '40000001-0302-0000-0000-000000000002', 'Quiz: Estructura de Mercado', 'Evalúa tu conocimiento sobre BOS, CHoCH y MSS', 70, 15, 3, 75),
('50000001-0003-0000-0000-000000000003', '40000001-0403-0000-0000-000000000003', 'Quiz: Power of Three', 'Evalúa tu conocimiento sobre AMD', 70, 10, 3, 75),
('50000001-0004-0000-0000-000000000004', '40000001-0602-0000-0000-000000000002', 'Quiz: Order Blocks', 'Evalúa tu conocimiento sobre tipos de OB', 70, 15, 3, 100),
('50000001-0005-0000-0000-000000000005', '40000001-0701-0000-0000-000000000001', 'Quiz: Fair Value Gaps', 'Evalúa tu conocimiento sobre FVG e imbalances', 70, 10, 3, 75);
-- =====================================================
-- 6. QUIZ QUESTIONS
-- =====================================================
-- Quiz 1: Velas Japonesas
INSERT INTO education.quiz_questions (id, quiz_id, question_text, question_type, options, explanation, points, display_order) VALUES
('60000001-0101-0000-0000-000000000001', '50000001-0001-0000-0000-000000000001', '¿Qué representa el cuerpo de una vela japonesa?', 'multiple_choice', '[{"id":"a","text":"La distancia entre apertura y cierre","isCorrect":true},{"id":"b","text":"El precio máximo","isCorrect":false},{"id":"c","text":"El precio mínimo","isCorrect":false},{"id":"d","text":"El volumen","isCorrect":false}]', 'El cuerpo representa la diferencia entre el precio de apertura y cierre del periodo.', 10, 1),
('60000001-0102-0000-0000-000000000002', '50000001-0001-0000-0000-000000000001', '¿Qué color tiene una vela alcista?', 'multiple_choice', '[{"id":"a","text":"Verde o Blanco","isCorrect":true},{"id":"b","text":"Rojo o Negro","isCorrect":false},{"id":"c","text":"Azul","isCorrect":false},{"id":"d","text":"Amarillo","isCorrect":false}]', 'Las velas alcistas (cierre > apertura) son verdes o blancas.', 10, 2),
('60000001-0103-0000-0000-000000000003', '50000001-0001-0000-0000-000000000001', '¿Qué muestra la mecha superior de una vela?', 'multiple_choice', '[{"id":"a","text":"El precio máximo alcanzado","isCorrect":true},{"id":"b","text":"El precio mínimo","isCorrect":false},{"id":"c","text":"El volumen","isCorrect":false},{"id":"d","text":"El spread","isCorrect":false}]', 'La mecha superior indica el precio máximo que alcanzó durante ese periodo.', 10, 3);
-- Quiz 2: Estructura de Mercado
INSERT INTO education.quiz_questions (id, quiz_id, question_text, question_type, options, explanation, points, display_order) VALUES
('60000002-0201-0000-0000-000000000001', '50000001-0002-0000-0000-000000000002', '¿Qué significa BOS en ICT?', 'multiple_choice', '[{"id":"a","text":"Break of Structure","isCorrect":true},{"id":"b","text":"Buy Order Signal","isCorrect":false},{"id":"c","text":"Bearish Order Setup","isCorrect":false},{"id":"d","text":"Bullish Option Strategy","isCorrect":false}]', 'BOS significa Break of Structure - ruptura de la estructura de mercado.', 10, 1),
('60000002-0202-0000-0000-000000000002', '50000001-0002-0000-0000-000000000002', '¿Qué indica un CHoCH?', 'multiple_choice', '[{"id":"a","text":"Cambio de carácter del mercado","isCorrect":true},{"id":"b","text":"Continuación de tendencia","isCorrect":false},{"id":"c","text":"Consolidación","isCorrect":false},{"id":"d","text":"Corrección menor","isCorrect":false}]', 'CHoCH (Change of Character) indica un posible cambio de tendencia.', 10, 2),
('60000002-0203-0000-0000-000000000003', '50000001-0002-0000-0000-000000000002', '¿Cómo se identifica una tendencia alcista?', 'multiple_choice', '[{"id":"a","text":"Higher Highs y Higher Lows","isCorrect":true},{"id":"b","text":"Lower Highs y Lower Lows","isCorrect":false},{"id":"c","text":"Igual Highs e igual Lows","isCorrect":false},{"id":"d","text":"Solo Higher Highs","isCorrect":false}]', 'Una tendencia alcista se confirma con máximos y mínimos cada vez más altos.', 10, 3);
-- Quiz 3: Power of Three
INSERT INTO education.quiz_questions (id, quiz_id, question_text, question_type, options, explanation, points, display_order) VALUES
('60000003-0301-0000-0000-000000000001', '50000001-0003-0000-0000-000000000003', '¿Cuáles son las 3 fases del Power of Three?', 'multiple_choice', '[{"id":"a","text":"Accumulation, Manipulation, Distribution","isCorrect":true},{"id":"b","text":"Advance, Move, Drop","isCorrect":false},{"id":"c","text":"Analysis, Market, Delivery","isCorrect":false},{"id":"d","text":"Accumulate, Move, Distribute","isCorrect":false}]', 'AMD: Accumulation (rango), Manipulation (falsa ruptura), Distribution (movimiento real).', 15, 1),
('60000003-0302-0000-0000-000000000002', '50000001-0003-0000-0000-000000000003', '¿Qué ocurre en la fase de Manipulation?', 'multiple_choice', '[{"id":"a","text":"Una falsa ruptura para atrapar traders","isCorrect":true},{"id":"b","text":"El movimiento principal del precio","isCorrect":false},{"id":"c","text":"Consolidación lateral","isCorrect":false},{"id":"d","text":"Cierre de posiciones","isCorrect":false}]', 'La manipulación es diseñada para tomar liquidez y atrapar traders en el lado equivocado.', 15, 2);
-- Quiz 4: Order Blocks
INSERT INTO education.quiz_questions (id, quiz_id, question_text, question_type, options, explanation, points, display_order) VALUES
('60000004-0401-0000-0000-000000000001', '50000001-0004-0000-0000-000000000004', '¿Qué es un Order Block?', 'multiple_choice', '[{"id":"a","text":"La última vela opuesta antes de un impulso","isCorrect":true},{"id":"b","text":"Un nivel de soporte","isCorrect":false},{"id":"c","text":"Una zona de consolidación","isCorrect":false},{"id":"d","text":"Un patrón de velas","isCorrect":false}]', 'Un OB es la última vela de color opuesto antes de un movimiento impulsivo, donde las instituciones colocaron órdenes.', 15, 1),
('60000004-0402-0000-0000-000000000002', '50000001-0004-0000-0000-000000000004', '¿Qué significa OBQ?', 'multiple_choice', '[{"id":"a","text":"Order Block Qualitativo","isCorrect":true},{"id":"b","text":"Order Block Quick","isCorrect":false},{"id":"c","text":"Order Block Quantity","isCorrect":false},{"id":"d","text":"Order Block Quote","isCorrect":false}]', 'OBQ es un Order Block que cumple criterios adicionales de calidad.', 10, 2),
('60000004-0403-0000-0000-000000000003', '50000001-0004-0000-0000-000000000004', '¿Cuál es el OB más fuerte?', 'multiple_choice', '[{"id":"a","text":"Key Order Block (KOB)","isCorrect":true},{"id":"b","text":"Regular OB","isCorrect":false},{"id":"c","text":"Propulsion OB","isCorrect":false},{"id":"d","text":"Void OB","isCorrect":false}]', 'El KOB es el OB que causó un BOS y es considerado el más significativo.', 15, 3);
-- Quiz 5: Fair Value Gaps
INSERT INTO education.quiz_questions (id, quiz_id, question_text, question_type, options, explanation, points, display_order) VALUES
('60000005-0501-0000-0000-000000000001', '50000001-0005-0000-0000-000000000005', '¿Qué es un Fair Value Gap?', 'multiple_choice', '[{"id":"a","text":"Un desequilibrio de precio entre mechas de velas","isCorrect":true},{"id":"b","text":"Un gap de apertura","isCorrect":false},{"id":"c","text":"Una zona de consolidación","isCorrect":false},{"id":"d","text":"Un nivel de Fibonacci","isCorrect":false}]', 'Un FVG es un área donde hay un "hueco" entre la mecha de una vela y otra, indicando un desequilibrio.', 15, 1),
('60000005-0502-0000-0000-000000000002', '50000001-0005-0000-0000-000000000005', '¿Qué significa NWOG?', 'multiple_choice', '[{"id":"a","text":"New Week Opening Gap","isCorrect":true},{"id":"b","text":"New Wave Order Gap","isCorrect":false},{"id":"c","text":"Next Week Open Gap","isCorrect":false},{"id":"d","text":"Neutral Week Order Gap","isCorrect":false}]', 'NWOG es el gap entre el cierre del viernes y la apertura del domingo.', 10, 2),
('60000005-0503-0000-0000-000000000003', '50000001-0005-0000-0000-000000000005', '¿Qué es un BPR?', 'multiple_choice', '[{"id":"a","text":"Balanced Price Range","isCorrect":true},{"id":"b","text":"Bullish Price Range","isCorrect":false},{"id":"c","text":"Bearish Price Reversal","isCorrect":false},{"id":"d","text":"Buy Price Region","isCorrect":false}]', 'BPR ocurre cuando un FVG alcista y bajista se superponen, creando una zona de equilibrio.', 15, 3);
-- =====================================================
-- VERIFICACIÓN
-- =====================================================
SELECT 'Categories:' as info, COUNT(*) as count FROM education.categories;
SELECT 'Courses:' as info, COUNT(*) as count FROM education.courses;
SELECT 'Modules:' as info, COUNT(*) as count FROM education.modules;
SELECT 'Lessons:' as info, COUNT(*) as count FROM education.lessons;
SELECT 'Quizzes:' as info, COUNT(*) as count FROM education.quizzes;
SELECT 'Questions:' as info, COUNT(*) as count FROM education.quiz_questions;