workspace-v1/projects/gamilit/database/seeds/dev/social_features/02-classrooms.sql
Adrian Flores Cortes 967ab360bb Initial commit: Workspace v1 with 3-layer architecture
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>
2025-12-23 00:35:19 -06:00

350 lines
11 KiB
SQL

-- =====================================================================
-- Archivo: 02-classrooms.sql
-- Schema: social_features
-- Descripción: Seeds de aulas/grupos para las escuelas
-- Dependencias: 01-schools.sql, auth.users
-- Autor: SA-SEEDS-SOCIAL
-- Fecha: 2025-11-02
-- =====================================================================
SET search_path TO social_features, auth, public;
-- =====================================================================
-- CLASSROOMS: Aulas/grupos distribuidos por escuelas
-- =====================================================================
DO $$
DECLARE
school_sf15 UUID;
school_st42 UUID;
school_einstein UUID;
teacher_id UUID;
BEGIN
-- =====================================================================
-- Obtener school IDs dinámicamente
-- =====================================================================
SELECT school_id INTO school_sf15
FROM social_features.schools
WHERE school_code = 'SF-015-CDMX';
SELECT school_id INTO school_st42
FROM social_features.schools
WHERE school_code = 'ST-042-NL';
SELECT school_id INTO school_einstein
FROM social_features.schools
WHERE school_code = 'CP-AE-JAL';
-- =====================================================================
-- Obtener instructor demo
-- =====================================================================
SELECT user_id INTO teacher_id
FROM auth.users
WHERE email = 'instructor@demo.glit.edu.mx';
-- Validar que exista el instructor
IF teacher_id IS NULL THEN
RAISE EXCEPTION 'No se encontró el instructor demo. Ejecutar seeds de auth primero.';
END IF;
-- =====================================================================
-- AULAS PARA SECUNDARIA FEDERAL 15 (CDMX)
-- =====================================================================
-- Aula 1: 2° A - Comprensión Lectora
INSERT INTO social_features.classrooms (
school_id, teacher_id,
name, code, grade_level, section,
subject, description,
capacity, current_students_count,
start_date, end_date,
schedule, is_active, is_active,
settings, created_at, updated_at
) VALUES
(
school_sf15,
teacher_id,
'2° A - Comprensión Lectora',
'2A-LECT-2025',
'2',
'A',
'Comprensión Lectora',
'Grupo de segundo año, sección A. Enfoque en desarrollo de competencias lectoras con metodología GLIT. Estrategias de lectura crítica y análisis textual.',
35,
0,
'2025-08-15',
'2026-07-15',
'{
"days": ["Lunes", "Miércoles", "Viernes"],
"time": "08:00-09:00",
"room": "Aula 201",
"weekly_hours": 3
}'::jsonb,
'active',
true,
'{
"allow_student_self_enrollment": false,
"enable_gamification": true,
"require_parental_consent": true,
"grading_system": "numerical",
"attendance_required": true,
"homework_policy": {
"frequency": "weekly",
"submission_platform": "glit"
}
}'::jsonb,
NOW(),
NOW()
),
-- Aula 2: 3° B - Lectura Digital
(
school_sf15,
teacher_id,
'3° B - Lectura Digital',
'3B-DIGI-2025',
'3',
'B',
'Lectura Digital',
'Grupo de tercer año, sección B. Especialización en alfabetización digital, fact-checking y análisis crítico de medios digitales.',
35,
0,
'2025-08-15',
'2026-07-15',
'{
"days": ["Martes", "Jueves"],
"time": "10:00-11:30",
"room": "Laboratorio de Cómputo",
"weekly_hours": 3
}'::jsonb,
'active',
true,
'{
"allow_student_self_enrollment": false,
"enable_gamification": true,
"require_parental_consent": true,
"grading_system": "numerical",
"attendance_required": true,
"digital_literacy_focus": true,
"tools_used": ["GLIT", "Google Classroom", "Canva"]
}'::jsonb,
NOW(),
NOW()
),
-- Aula 3: 1° C - Lectura Básica
(
school_sf15,
teacher_id,
'1° C - Lectura Básica',
'1C-BASIC-2025',
'1',
'C',
'Lectura Básica',
'Primer año, sección C. Fundamentos de comprensión lectora y desarrollo de habilidades básicas.',
35,
0,
'2025-08-15',
'2026-07-15',
'{
"days": ["Lunes", "Miércoles", "Viernes"],
"time": "11:00-12:00",
"room": "Aula 105",
"weekly_hours": 3
}'::jsonb,
'active',
true,
'{
"allow_student_self_enrollment": false,
"enable_gamification": true,
"require_parental_consent": true,
"grading_system": "numerical",
"attendance_required": true,
"foundational_skills": true
}'::jsonb,
NOW(),
NOW()
),
-- =====================================================================
-- AULAS PARA SECUNDARIA TÉCNICA 42 (MONTERREY)
-- =====================================================================
-- Aula 4: 1° A - Introducción a la Lectura
(
school_st42,
teacher_id,
'1° A - Introducción a la Lectura',
'1A-INTRO-2025',
'1',
'A',
'Introducción a la Lectura',
'Primer año. Desarrollo de habilidades básicas de comprensión lectora con enfoque técnico y práctico.',
30,
0,
'2025-08-15',
'2026-07-15',
'{
"days": ["Lunes", "Miércoles", "Viernes"],
"time": "14:00-15:00",
"room": "Aula 105",
"weekly_hours": 3,
"shift": "vespertino"
}'::jsonb,
'active',
true,
'{
"allow_student_self_enrollment": false,
"enable_gamification": true,
"require_parental_consent": true,
"grading_system": "numerical",
"technical_reading_focus": true
}'::jsonb,
NOW(),
NOW()
),
-- Aula 5: 2° B - Lectura Técnica
(
school_st42,
teacher_id,
'2° B - Lectura Técnica',
'2B-TECH-2025',
'2',
'B',
'Lectura Técnica',
'Segundo año. Comprensión de textos técnicos, manuales y documentación especializada.',
30,
0,
'2025-08-15',
'2026-07-15',
'{
"days": ["Martes", "Jueves"],
"time": "15:00-16:30",
"room": "Taller de Computación",
"weekly_hours": 3,
"shift": "vespertino"
}'::jsonb,
'active',
true,
'{
"allow_student_self_enrollment": false,
"enable_gamification": true,
"technical_manuals": true,
"industry_standards": ["ISO", "IEEE"]
}'::jsonb,
NOW(),
NOW()
),
-- =====================================================================
-- AULAS PARA COLEGIO EINSTEIN (GUADALAJARA)
-- =====================================================================
-- Aula 6: 2° STEAM - Literatura Científica
(
school_einstein,
teacher_id,
'2° STEAM - Literatura Científica',
'2ST-LITC-2025',
'2',
'STEAM',
'Literatura Científica',
'Grupo STEAM. Integración de literatura y ciencias mediante biografías de científicos, ensayos y divulgación científica.',
25,
0,
'2025-08-15',
'2026-06-30',
'{
"days": ["Lunes", "Miércoles", "Viernes"],
"time": "09:00-10:30",
"room": "Aula STEAM 3",
"language": "Español/Inglés",
"weekly_hours": 4
}'::jsonb,
'active',
true,
'{
"allow_student_self_enrollment": false,
"enable_gamification": true,
"require_parental_consent": false,
"bilingual": true,
"grading_system": "cambridge",
"steam_integration": true,
"project_based_learning": true
}'::jsonb,
NOW(),
NOW()
),
-- Aula 7: 3° Advanced - Critical Reading (Bilingüe)
(
school_einstein,
teacher_id,
'3° Advanced - Critical Reading',
'3ADV-CRIT-2025',
'3',
'Advanced',
'Critical Reading',
'Tercer año avanzado. Lectura crítica en inglés y español con análisis de textos complejos y retórica.',
25,
0,
'2025-08-15',
'2026-06-30',
'{
"days": ["Martes", "Jueves"],
"time": "11:00-12:30",
"room": "Innovation Hub",
"language": "English/Spanish",
"weekly_hours": 3
}'::jsonb,
'active',
true,
'{
"allow_student_self_enrollment": false,
"enable_gamification": true,
"bilingual": true,
"grading_system": "cambridge",
"advanced_placement": true,
"college_prep": true,
"debate_integration": true
}'::jsonb,
NOW(),
NOW()
)
ON CONFLICT (school_id, code) DO UPDATE SET
name = EXCLUDED.name,
current_students_count = EXCLUDED.current_students_count,
schedule = EXCLUDED.schedule,
settings = EXCLUDED.settings,
updated_at = NOW();
-- =====================================================================
-- SYNC teacher_classrooms (many-to-many)
-- =====================================================================
-- Asegurar que todos los classrooms tienen su entrada en teacher_classrooms
-- Esto es necesario porque algunos servicios usan classrooms.teacher_id
-- y otros usan la tabla teacher_classrooms
-- =====================================================================
INSERT INTO social_features.teacher_classrooms (id, teacher_id, classroom_id, tenant_id, role, assigned_at, created_at)
SELECT
gen_random_uuid(),
c.teacher_id,
c.id,
c.tenant_id,
'owner',
c.created_at,
NOW()
FROM social_features.classrooms c
WHERE c.teacher_id IS NOT NULL
ON CONFLICT DO NOTHING;
-- =====================================================================
-- Verificación de inserción
-- =====================================================================
RAISE NOTICE 'Aulas creadas exitosamente para 3 escuelas';
RAISE NOTICE 'SF-015-CDMX: 3 aulas | ST-042-NL: 2 aulas | CP-AE-JAL: 2 aulas';
RAISE NOTICE 'Sincronización teacher_classrooms ejecutada';
END $$;