trading-platform-database-v2/ddl/schemas/education/seeds-example.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

239 lines
7.4 KiB
PL/PgSQL

-- =====================================================
-- SEED DATA - Schema Education (EJEMPLO)
-- =====================================================
-- Proyecto: OrbiQuant IA (Trading Platform)
-- Módulo: OQI-002 - Education
-- Especificación: ET-EDU-001-database.md
-- =====================================================
-- NOTA: Este es un archivo de ejemplo.
-- Los datos reales deben ir en /apps/database/seeds/
-- =====================================================
BEGIN;
-- =====================================================
-- 1. CATEGORIES
-- =====================================================
INSERT INTO education.categories (id, name, slug, description, color, display_order, is_active) VALUES
('11111111-1111-1111-1111-111111111111', 'Trading Básico', 'trading-basico', 'Fundamentos del trading y mercados financieros', '#3B82F6', 1, true),
('22222222-2222-2222-2222-222222222222', 'Análisis Técnico', 'analisis-tecnico', 'Herramientas y técnicas de análisis técnico', '#10B981', 2, true),
('33333333-3333-3333-3333-333333333333', 'Análisis Fundamental', 'analisis-fundamental', 'Evaluación fundamental de activos', '#F59E0B', 3, true),
('44444444-4444-4444-4444-444444444444', 'Gestión de Riesgo', 'gestion-riesgo', 'Estrategias de gestión de riesgo y capital', '#EF4444', 4, true),
('55555555-5555-5555-5555-555555555555', 'Trading Algorítmico', 'trading-algoritmico', 'Automatización y estrategias algorítmicas', '#8B5CF6', 5, true),
('66666666-6666-6666-6666-666666666666', 'Psicología del Trading', 'psicologia-trading', 'Aspectos psicológicos y emocionales del trading', '#EC4899', 6, true);
-- =====================================================
-- 2. COURSES
-- =====================================================
-- NOTA: instructor_id debe existir en auth.users
-- Para este ejemplo, usar un UUID válido de tu sistema
INSERT INTO education.courses (
id,
title,
slug,
short_description,
full_description,
category_id,
difficulty_level,
instructor_id,
instructor_name,
is_free,
xp_reward,
status,
published_at,
total_modules,
total_lessons
) VALUES
(
'c1111111-1111-1111-1111-111111111111',
'Introducción al Trading',
'introduccion-trading',
'Aprende los conceptos básicos del trading desde cero',
'Este curso te enseñará los fundamentos del trading, incluyendo tipos de mercados, instrumentos financieros, y cómo realizar tus primeras operaciones de forma segura.',
'11111111-1111-1111-1111-111111111111',
'beginner',
'00000000-0000-0000-0000-000000000001', -- Reemplazar con ID real
'Instructor Demo',
true,
500,
'published',
NOW(),
3,
12
);
-- =====================================================
-- 3. MODULES
-- =====================================================
INSERT INTO education.modules (id, course_id, title, description, display_order, duration_minutes) VALUES
('m1111111-1111-1111-1111-111111111111', 'c1111111-1111-1111-1111-111111111111', 'Módulo 1: Fundamentos', 'Conceptos básicos del trading', 1, 120),
('m2222222-2222-2222-2222-222222222222', 'c1111111-1111-1111-1111-111111111111', 'Módulo 2: Mercados Financieros', 'Tipos de mercados y activos', 2, 180),
('m3333333-3333-3333-3333-333333333333', 'c1111111-1111-1111-1111-111111111111', 'Módulo 3: Primeros Pasos', 'Cómo empezar a operar', 3, 150);
-- =====================================================
-- 4. LESSONS
-- =====================================================
INSERT INTO education.lessons (
id,
module_id,
title,
description,
content_type,
video_url,
video_duration_seconds,
display_order,
is_preview,
xp_reward
) VALUES
(
'l1111111-1111-1111-1111-111111111111',
'm1111111-1111-1111-1111-111111111111',
'¿Qué es el Trading?',
'Introducción a los conceptos básicos del trading',
'video',
'https://example.com/videos/lesson-1.mp4',
900,
1,
true,
10
),
(
'l2222222-2222-2222-2222-222222222222',
'm1111111-1111-1111-1111-111111111111',
'Tipos de Traders',
'Conoce los diferentes estilos de trading',
'video',
'https://example.com/videos/lesson-2.mp4',
1200,
2,
false,
10
),
(
'l3333333-3333-3333-3333-333333333333',
'm1111111-1111-1111-1111-111111111111',
'Terminología Básica',
'Vocabulario esencial del trading',
'article',
NULL,
NULL,
3,
false,
15
);
-- =====================================================
-- 5. QUIZZES
-- =====================================================
INSERT INTO education.quizzes (
id,
module_id,
title,
description,
passing_score_percentage,
max_attempts,
xp_reward,
xp_perfect_score_bonus
) VALUES
(
'q1111111-1111-1111-1111-111111111111',
'm1111111-1111-1111-1111-111111111111',
'Quiz: Fundamentos del Trading',
'Evalúa tus conocimientos sobre los conceptos básicos',
70,
3,
50,
20
);
-- =====================================================
-- 6. QUIZ QUESTIONS
-- =====================================================
INSERT INTO education.quiz_questions (
id,
quiz_id,
question_text,
question_type,
options,
explanation,
points,
display_order
) VALUES
(
'qq111111-1111-1111-1111-111111111111',
'q1111111-1111-1111-1111-111111111111',
'¿Qué es el trading?',
'multiple_choice',
'[
{"id": "a", "text": "Comprar y vender activos financieros", "isCorrect": true},
{"id": "b", "text": "Solo comprar acciones", "isCorrect": false},
{"id": "c", "text": "Invertir a largo plazo únicamente", "isCorrect": false},
{"id": "d", "text": "Ahorrar dinero en un banco", "isCorrect": false}
]'::jsonb,
'El trading implica la compra y venta de activos financieros con el objetivo de obtener ganancias a corto o mediano plazo.',
1,
1
),
(
'qq222222-2222-2222-2222-222222222222',
'q1111111-1111-1111-1111-111111111111',
'¿El trading es una actividad de riesgo?',
'true_false',
'[
{"id": "true", "text": "Verdadero", "isCorrect": true},
{"id": "false", "text": "Falso", "isCorrect": false}
]'::jsonb,
'Sí, el trading es una actividad que conlleva riesgos y es posible perder dinero. Por eso es importante la gestión de riesgo.',
1,
2
);
-- =====================================================
-- EJEMPLO DE USO - ENROLLMENTS
-- =====================================================
-- NOTA: Estos son ejemplos comentados. NO ejecutar sin IDs reales.
/*
-- Enrollar un usuario a un curso
INSERT INTO education.enrollments (user_id, course_id, total_lessons)
VALUES (
'00000000-0000-0000-0000-000000000001', -- ID del usuario
'c1111111-1111-1111-1111-111111111111', -- ID del curso
12 -- Total de lecciones del curso
);
-- Registrar progreso en una lección
INSERT INTO education.progress (
user_id,
lesson_id,
enrollment_id,
is_completed,
watch_percentage
) VALUES (
'00000000-0000-0000-0000-000000000001',
'l1111111-1111-1111-1111-111111111111',
'<enrollment-id>',
true,
100.00
);
*/
COMMIT;
-- =====================================================
-- Verificación
-- =====================================================
SELECT 'Categories created:' as info, COUNT(*) as count FROM education.categories;
SELECT 'Courses created:' as info, COUNT(*) as count FROM education.courses;
SELECT 'Modules created:' as info, COUNT(*) as count FROM education.modules;
SELECT 'Lessons created:' as info, COUNT(*) as count FROM education.lessons;
SELECT 'Quizzes created:' as info, COUNT(*) as count FROM education.quizzes;
SELECT 'Questions created:' as info, COUNT(*) as count FROM education.quiz_questions;