Structure: - control-plane/: Registries, SIMCO directives, CI/CD templates - projects/: Gamilit, ERP-Suite, Trading-Platform, Betting-Analytics - shared/: Libs catalog, knowledge-base Key features: - Centralized port, domain, database, and service registries - 23 SIMCO directives + 6 fundamental principles - NEXUS agent profiles with delegation rules - Validation scripts for workspace integrity - Dockerfiles for all services - Path aliases for quick reference 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
361 lines
12 KiB
SQL
361 lines
12 KiB
SQL
-- =====================================================================================
|
|
-- SEED: Demo Progress Data for Progress Tracking Schema
|
|
-- =====================================================================================
|
|
-- Description: Module progress and learning sessions for demo students
|
|
-- Dependencies: auth.users, educational_content.modules, educational_content.exercises
|
|
-- Idempotency: Uses ON CONFLICT to handle re-runs safely
|
|
-- =====================================================================================
|
|
|
|
SET search_path TO progress_tracking, educational_content, auth, public;
|
|
|
|
-- =====================================================================================
|
|
-- MODULE PROGRESS & LEARNING SESSIONS
|
|
-- =====================================================================================
|
|
|
|
DO $$
|
|
DECLARE
|
|
student1_id UUID;
|
|
student2_id UUID;
|
|
student3_id UUID;
|
|
module1_id UUID;
|
|
module2_id UUID;
|
|
module3_id UUID;
|
|
BEGIN
|
|
-- ==================================================================================
|
|
-- GET USER IDS (Demo Students)
|
|
-- ==================================================================================
|
|
|
|
SELECT id INTO student1_id
|
|
FROM auth.users
|
|
WHERE email = 'estudiante1@demo.glit.edu.mx';
|
|
|
|
SELECT id INTO student2_id
|
|
FROM auth.users
|
|
WHERE email = 'estudiante2@demo.glit.edu.mx';
|
|
|
|
SELECT id INTO student3_id
|
|
FROM auth.users
|
|
WHERE email = 'estudiante3@demo.glit.edu.mx';
|
|
|
|
-- ==================================================================================
|
|
-- GET MODULE IDS (Marie Curie Modules)
|
|
-- ==================================================================================
|
|
|
|
SELECT id INTO module1_id
|
|
FROM educational_content.modules
|
|
WHERE module_code = 'MOD-01-LITERAL';
|
|
|
|
SELECT id INTO module2_id
|
|
FROM educational_content.modules
|
|
WHERE module_code = 'MOD-02-INFERENCIAL';
|
|
|
|
SELECT id INTO module3_id
|
|
FROM educational_content.modules
|
|
WHERE module_code = 'MOD-03-CRITICA';
|
|
|
|
-- ==================================================================================
|
|
-- MODULE PROGRESS: Student Progress Tracking
|
|
-- ==================================================================================
|
|
|
|
RAISE NOTICE 'Inserting module progress data...';
|
|
|
|
INSERT INTO progress_tracking.module_progress (
|
|
user_id, module_id,
|
|
status, progress_percentage,
|
|
completed_exercises, total_exercises,
|
|
total_score, max_possible_score,
|
|
time_spent, attempts_count,
|
|
started_at, last_accessed_at, completed_at,
|
|
metadata, created_at, updated_at
|
|
) VALUES
|
|
-- ================================================================================
|
|
-- ESTUDIANTE 1: Advanced Student (2 modules active)
|
|
-- ================================================================================
|
|
|
|
-- Module 1: COMPLETED (Perfect Performance)
|
|
(
|
|
student1_id, module1_id,
|
|
'completed', 100,
|
|
5, 5,
|
|
480, 500,
|
|
45, 8,
|
|
NOW() - INTERVAL '10 days',
|
|
NOW() - INTERVAL '3 days',
|
|
NOW() - INTERVAL '3 days',
|
|
'{
|
|
"average_score_percentage": 96,
|
|
"completion_time_days": 7,
|
|
"streak_days": 5,
|
|
"comodines_used": ["pistas", "vision_lectora"],
|
|
"performance_trend": "improving",
|
|
"mastery_level": "advanced"
|
|
}'::jsonb,
|
|
NOW() - INTERVAL '10 days',
|
|
NOW() - INTERVAL '3 days'
|
|
),
|
|
|
|
-- Module 2: IN PROGRESS (Good Progress)
|
|
(
|
|
student1_id, module2_id,
|
|
'in_progress', 60,
|
|
3, 5,
|
|
285, 500,
|
|
30, 5,
|
|
NOW() - INTERVAL '2 days',
|
|
NOW() - INTERVAL '1 hour',
|
|
NULL,
|
|
'{
|
|
"average_score_percentage": 95,
|
|
"current_exercise": 4,
|
|
"comodines_used": ["pistas"],
|
|
"estimated_completion_days": 2,
|
|
"difficulty_level": "intermediate"
|
|
}'::jsonb,
|
|
NOW() - INTERVAL '2 days',
|
|
NOW() - INTERVAL '1 hour'
|
|
),
|
|
|
|
-- ================================================================================
|
|
-- ESTUDIANTE 2: Intermediate Student (Completed Module 1, Advanced Module 3)
|
|
-- ================================================================================
|
|
|
|
-- Module 1: COMPLETED (Good Performance)
|
|
(
|
|
student2_id, module1_id,
|
|
'completed', 100,
|
|
5, 5,
|
|
425, 500,
|
|
60, 12,
|
|
NOW() - INTERVAL '15 days',
|
|
NOW() - INTERVAL '5 days',
|
|
NOW() - INTERVAL '5 days',
|
|
'{
|
|
"average_score_percentage": 85,
|
|
"completion_time_days": 10,
|
|
"streak_days": 3,
|
|
"comodines_used": ["pistas", "segunda_oportunidad"],
|
|
"performance_trend": "stable",
|
|
"retry_rate": 40
|
|
}'::jsonb,
|
|
NOW() - INTERVAL '15 days',
|
|
NOW() - INTERVAL '5 days'
|
|
),
|
|
|
|
-- Module 3: IN PROGRESS (Challenge Level - Advanced)
|
|
(
|
|
student2_id, module3_id,
|
|
'in_progress', 40,
|
|
2, 5,
|
|
160, 500,
|
|
25, 4,
|
|
NOW() - INTERVAL '1 day',
|
|
NOW() - INTERVAL '2 hours',
|
|
NULL,
|
|
'{
|
|
"average_score_percentage": 80,
|
|
"current_exercise": 3,
|
|
"difficulty": "advanced",
|
|
"skipped_module_2": false,
|
|
"teacher_recommendation": "review inferential reading first"
|
|
}'::jsonb,
|
|
NOW() - INTERVAL '1 day',
|
|
NOW() - INTERVAL '2 hours'
|
|
),
|
|
|
|
-- ================================================================================
|
|
-- ESTUDIANTE 3: Foundational Student (Needs Support)
|
|
-- ================================================================================
|
|
|
|
-- Module 1: IN PROGRESS (Slower Pace, More Support Needed)
|
|
(
|
|
student3_id, module1_id,
|
|
'in_progress', 40,
|
|
2, 5,
|
|
150, 500,
|
|
35, 6,
|
|
NOW() - INTERVAL '5 days',
|
|
NOW() - INTERVAL '3 hours',
|
|
NULL,
|
|
'{
|
|
"average_score_percentage": 75,
|
|
"current_exercise": 3,
|
|
"comodines_used": ["pistas", "pistas", "vision_lectora"],
|
|
"support_level": "foundational",
|
|
"hints_per_exercise_avg": 2.5,
|
|
"teacher_intervention_suggested": true
|
|
}'::jsonb,
|
|
NOW() - INTERVAL '5 days',
|
|
NOW() - INTERVAL '3 hours'
|
|
)
|
|
ON CONFLICT (user_id, module_id) DO UPDATE SET
|
|
status = EXCLUDED.status,
|
|
progress_percentage = EXCLUDED.progress_percentage,
|
|
completed_exercises = EXCLUDED.completed_exercises,
|
|
total_score = EXCLUDED.total_score,
|
|
time_spent = EXCLUDED.time_spent,
|
|
attempts_count = EXCLUDED.attempts_count,
|
|
last_accessed_at = EXCLUDED.last_accessed_at,
|
|
completed_at = EXCLUDED.completed_at,
|
|
metadata = EXCLUDED.metadata,
|
|
updated_at = NOW();
|
|
|
|
RAISE NOTICE 'Module progress data inserted successfully';
|
|
|
|
-- ==================================================================================
|
|
-- LEARNING SESSIONS: Study Session Tracking
|
|
-- ==================================================================================
|
|
|
|
RAISE NOTICE 'Inserting learning sessions data...';
|
|
|
|
INSERT INTO progress_tracking.learning_sessions (
|
|
user_id, module_id,
|
|
started_at, ended_at, duration,
|
|
exercises_attempted, exercises_completed,
|
|
metadata, created_at
|
|
) VALUES
|
|
-- ================================================================================
|
|
-- ESTUDIANTE 1: Recent Active Sessions
|
|
-- ================================================================================
|
|
|
|
-- Session 1: Recent Module 2 Study (Focused & Productive)
|
|
(
|
|
student1_id, module2_id,
|
|
NOW() - INTERVAL '1 hour',
|
|
NOW() - INTERVAL '30 minutes',
|
|
30,
|
|
1, 1,
|
|
95, ARRAY[]::text[],
|
|
ARRAY['pistas']::text[],
|
|
'study',
|
|
'{
|
|
"device": "laptop",
|
|
"location": "home",
|
|
"focus_score": 85,
|
|
"interruptions": 0,
|
|
"browser": "chrome",
|
|
"screen_time_active_percentage": 95
|
|
}'::jsonb,
|
|
NOW() - INTERVAL '30 minutes'
|
|
),
|
|
|
|
-- Session 2: Yesterday Module 2 Study
|
|
(
|
|
student1_id, module2_id,
|
|
NOW() - INTERVAL '25 hours',
|
|
NOW() - INTERVAL '24 hours',
|
|
45,
|
|
2, 2,
|
|
190, ARRAY['quick_learner']::text[],
|
|
ARRAY['vision_lectora']::text[],
|
|
'study',
|
|
'{
|
|
"device": "laptop",
|
|
"location": "library",
|
|
"focus_score": 92,
|
|
"interruptions": 0,
|
|
"achievement_earned": "quick_learner"
|
|
}'::jsonb,
|
|
NOW() - INTERVAL '24 hours'
|
|
),
|
|
|
|
-- ================================================================================
|
|
-- ESTUDIANTE 2: Module 3 Sessions (Challenging Content)
|
|
-- ================================================================================
|
|
|
|
-- Session 1: Module 3 Study (Moderate Focus)
|
|
(
|
|
student2_id, module3_id,
|
|
NOW() - INTERVAL '3 hours',
|
|
NOW() - INTERVAL '2 hours',
|
|
60,
|
|
2, 1,
|
|
80, ARRAY[]::text[],
|
|
ARRAY['segunda_oportunidad']::text[],
|
|
'study',
|
|
'{
|
|
"device": "tablet",
|
|
"location": "school",
|
|
"focus_score": 75,
|
|
"interruptions": 2,
|
|
"retry_used": true,
|
|
"difficulty_feedback": "challenging but manageable"
|
|
}'::jsonb,
|
|
NOW() - INTERVAL '2 hours'
|
|
),
|
|
|
|
-- Session 2: Module 3 Review Session
|
|
(
|
|
student2_id, module3_id,
|
|
NOW() - INTERVAL '27 hours',
|
|
NOW() - INTERVAL '26 hours',
|
|
40,
|
|
1, 0,
|
|
0, ARRAY[]::text[],
|
|
ARRAY['pistas', 'pistas']::text[],
|
|
'review',
|
|
'{
|
|
"device": "tablet",
|
|
"location": "home",
|
|
"focus_score": 70,
|
|
"interruptions": 1,
|
|
"review_mode": true,
|
|
"notes": "struggling with critical analysis concepts"
|
|
}'::jsonb,
|
|
NOW() - INTERVAL '26 hours'
|
|
),
|
|
|
|
-- ================================================================================
|
|
-- ESTUDIANTE 3: Module 1 Sessions (Needs Support)
|
|
-- ================================================================================
|
|
|
|
-- Session 1: Recent Study with Interruptions
|
|
(
|
|
student3_id, module1_id,
|
|
NOW() - INTERVAL '4 hours',
|
|
NOW() - INTERVAL '3 hours',
|
|
45,
|
|
2, 1,
|
|
70, ARRAY[]::text[],
|
|
ARRAY['pistas', 'vision_lectora']::text[],
|
|
'study',
|
|
'{
|
|
"device": "mobile",
|
|
"location": "home",
|
|
"focus_score": 60,
|
|
"interruptions": 3,
|
|
"hints_requested": 2,
|
|
"vocabulary_support_needed": true
|
|
}'::jsonb,
|
|
NOW() - INTERVAL '3 hours'
|
|
),
|
|
|
|
-- Session 2: Previous Study Session (Low Completion)
|
|
(
|
|
student3_id, module1_id,
|
|
NOW() - INTERVAL '2 days',
|
|
NOW() - INTERVAL '2 days' + INTERVAL '25 minutes',
|
|
25,
|
|
1, 0,
|
|
0, ARRAY[]::text[],
|
|
ARRAY['pistas', 'pistas']::text[],
|
|
'study',
|
|
'{
|
|
"device": "mobile",
|
|
"location": "bus",
|
|
"focus_score": 45,
|
|
"interruptions": 5,
|
|
"session_abandoned": true,
|
|
"reason": "connectivity issues"
|
|
}'::jsonb,
|
|
NOW() - INTERVAL '2 days' + INTERVAL '25 minutes'
|
|
)
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
RAISE NOTICE 'Learning sessions data inserted successfully';
|
|
|
|
RAISE NOTICE '✓ Progress tracking seeds completed';
|
|
RAISE NOTICE ' - Module progress entries: 5';
|
|
RAISE NOTICE ' - Learning sessions: 6';
|
|
|
|
END $$;
|