-- ===================================================== -- 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', '

Derivados

El mercado de derivados es donde se negocian instrumentos financieros cuyo valor depende (o deriva) del precio de otro activo.

Ejemplos de derivados:

OTC (Over The Counter)

OTC significa "fuera de mercado". Son operaciones que no pasan por una bolsa formal.

', 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', '

1. Gráfico de Líneas

Muestra solo el precio de cierre de cada periodo.

2. Gráfico de Barras

Muestra OHLC (Open, High, Low, Close).

3. Gráfico de Velas Japonesas

El más usado en trading profesional.

', 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', '

Anatomía de una Vela

', 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', '

Timeframes

', 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', '

ECN

Te conecta directamente con la red de participantes.

STP

Pasa órdenes a proveedores de liquidez.

Market Maker

Crea mercado interno.

', 1, true, 10), ('40000001-0202-0000-0000-000000000002', '30000001-0002-0000-0000-000000000002', 'Regulaciones Globales', 'FCA, ASIC, CySEC, CFTC y su importancia', 'article', '

Principales Reguladores

', 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', '

MetaTrader

La plataforma más popular para trading de forex y CFDs.

', 3, false, 15), ('40000001-0204-0000-0000-000000000004', '30000001-0002-0000-0000-000000000002', 'TradingView', 'Plataforma de análisis técnico avanzado', 'article', '

TradingView

La mejor plataforma para análisis técnico con comunidad activa.

', 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', '

IPDA

IPDA significa Interbank Price Delivery Algorithmic. Es el concepto de que el precio se mueve de manera algorítmica para entregar liquidez institucional.

', 1, true, 15), ('40000001-0302-0000-0000-000000000002', '30000001-0003-0000-0000-000000000003', 'Estructura del Mercado ICT', 'BOS, CHoCH, Market Structure Shift', 'article', '

Conceptos Clave

', 2, false, 20), ('40000001-0303-0000-0000-000000000003', '30000001-0003-0000-0000-000000000003', 'Narrativa del Precio', 'Cómo interpretar la historia del precio', 'article', '

La Narrativa

El precio cuenta una historia. Cada vela es un capítulo.

', 3, false, 15), ('40000001-0304-0000-0000-000000000004', '30000001-0003-0000-0000-000000000003', 'Liquidez Institucional', 'Buy-side y Sell-side liquidity', 'article', '

Liquidez

', 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', '

Estructura de Tendencia

', 1, true, 15), ('40000001-0402-0000-0000-000000000002', '30000001-0004-0000-0000-000000000004', 'Key Levels', 'Soporte, resistencia y niveles clave', 'article', '

Key Levels

Niveles donde el precio ha reaccionado históricamente.

', 2, false, 15), ('40000001-0403-0000-0000-000000000003', '30000001-0004-0000-0000-000000000004', 'Power of Three (AMD)', 'Accumulation, Manipulation, Distribution', 'article', '

Power of Three

', 3, false, 25), ('40000001-0404-0000-0000-000000000004', '30000001-0004-0000-0000-000000000004', 'Matrices IPDA', 'Premium y Discount zones', 'article', '

Matrices

', 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', '

Sesiones

', 1, true, 15), ('40000001-0502-0000-0000-000000000002', '30000001-0005-0000-0000-000000000005', 'Kill Zones', 'Horarios de alta probabilidad', 'article', '

Kill Zones

Momentos del día donde hay mayor probabilidad de movimientos direccionales.

', 2, false, 20), ('40000001-0503-0000-0000-000000000003', '30000001-0005-0000-0000-000000000005', 'ICT Killzone Times', 'London Open, NY Open, etc.', 'article', '

Horarios Clave

', 3, false, 15), ('40000001-0504-0000-0000-000000000004', '30000001-0005-0000-0000-000000000005', 'Momentum y Volatilidad', 'Medición y aprovechamiento', 'article', '

Momentum

La fuerza del movimiento del precio.

', 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', '

Order Block

La última vela opuesta antes de un movimiento impulsivo. Representa donde las instituciones colocaron órdenes.

', 1, true, 20), ('40000001-0602-0000-0000-000000000002', '30000001-0006-0000-0000-000000000006', 'Tipos de Order Blocks', 'OB, OBQ, KOB, GOB, POB', 'article', '

Tipos

', 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', '

Validación

', 3, false, 20), ('40000001-0604-0000-0000-000000000004', '30000001-0006-0000-0000-000000000006', 'Trading con Order Blocks', 'Entradas y gestión de trades', 'article', '

Estrategia

  1. Identificar OB en zona premium/discount
  2. Esperar retroceso al OB
  3. Confirmar con estructura menor
  4. Entrada con SL detrás del OB
', 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', '

FVG

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.

', 1, true, 20), ('40000001-0702-0000-0000-000000000002', '30000001-0007-0000-0000-000000000007', 'Tipos de FVG', 'iFVG, BISI, SIBI', 'article', '

Tipos

', 2, false, 20), ('40000001-0703-0000-0000-000000000003', '30000001-0007-0000-0000-000000000007', 'BPR y VFVG', 'Balanced Price Range y Void FVG', 'article', '

Conceptos Avanzados

', 3, false, 20), ('40000001-0704-0000-0000-000000000004', '30000001-0007-0000-0000-000000000007', 'NWOG y NDOG', 'New Week/Day Opening Gap', 'article', '

Opening Gaps

', 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;