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>
314 lines
9.7 KiB
SQL
314 lines
9.7 KiB
SQL
-- =====================================================
|
|
-- Seed: social_features.schools (PROD)
|
|
-- Description: Escuelas demo para testing y demostraciones
|
|
-- Environment: PRODUCTION
|
|
-- Dependencies: auth_management.tenants
|
|
-- Order: 01
|
|
-- Created: 2025-01-11
|
|
-- Version: 2.0 (Actualizado para alineación con DDL)
|
|
-- =====================================================
|
|
--
|
|
-- ESCUELAS DEMO INCLUIDAS:
|
|
-- - Escuela Primaria Marie Curie (CDMX)
|
|
-- - Instituto de Educación Integral (Guadalajara)
|
|
--
|
|
-- TOTAL: 2 escuelas demo
|
|
--
|
|
-- IMPORTANTE: Estas escuelas son para testing y demos.
|
|
--
|
|
-- CAMBIOS v2.0:
|
|
-- - Agregado tenant_id (requerido)
|
|
-- - Removido type (columna legacy)
|
|
-- - Cambiado state → region (nuevo nombre de columna)
|
|
-- - Removido principal_name, contact_name, contact_email (legacy)
|
|
-- - Removido status (columna legacy)
|
|
-- - Agregado short_name, description
|
|
-- - Actualizados queries de verificación
|
|
-- =====================================================
|
|
|
|
SET search_path TO social_features, auth_management, public;
|
|
|
|
-- =====================================================
|
|
-- Obtener tenant_id para las escuelas
|
|
-- =====================================================
|
|
|
|
DO $$
|
|
DECLARE
|
|
v_tenant_id UUID;
|
|
BEGIN
|
|
-- Obtener el tenant principal de GAMILIT Platform
|
|
SELECT id INTO v_tenant_id
|
|
FROM auth_management.tenants
|
|
WHERE name = 'GAMILIT Platform'
|
|
LIMIT 1;
|
|
|
|
IF v_tenant_id IS NULL THEN
|
|
RAISE EXCEPTION 'Tenant "GAMILIT Platform" no encontrado. Ejecutar primero seed de tenants.';
|
|
END IF;
|
|
|
|
RAISE NOTICE 'Usando tenant_id: %', v_tenant_id;
|
|
|
|
-- =====================================================
|
|
-- INSERT: Escuelas Demo
|
|
-- =====================================================
|
|
|
|
INSERT INTO social_features.schools (
|
|
id,
|
|
tenant_id,
|
|
name,
|
|
code,
|
|
short_name,
|
|
description,
|
|
address,
|
|
city,
|
|
region,
|
|
country,
|
|
postal_code,
|
|
phone,
|
|
email,
|
|
website,
|
|
current_students_count,
|
|
current_teachers_count,
|
|
is_active,
|
|
settings,
|
|
metadata,
|
|
created_at,
|
|
updated_at
|
|
) VALUES
|
|
|
|
-- =====================================================
|
|
-- Escuela 1: Escuela Primaria Marie Curie (CDMX)
|
|
-- =====================================================
|
|
(
|
|
'50000000-0000-0000-0000-000000000001'::uuid,
|
|
v_tenant_id,
|
|
'Escuela Primaria Marie Curie',
|
|
'EP-MC-CDMX',
|
|
'EP Marie Curie',
|
|
'Escuela primaria pública enfocada en ciencias y educación integral, inspirada en la vida de Marie Curie.',
|
|
'Av. Insurgentes Sur 1234',
|
|
'Ciudad de México',
|
|
'CDMX',
|
|
'México',
|
|
'03100',
|
|
'55-1234-5678',
|
|
'contacto@mariecurie.edu.mx',
|
|
'https://mariecurie.edu.mx',
|
|
450,
|
|
32,
|
|
true,
|
|
jsonb_build_object(
|
|
'allow_public_registration', true,
|
|
'require_email_verification', true,
|
|
'max_students_per_classroom', 35,
|
|
'enable_parent_portal', true,
|
|
'academic_calendar', jsonb_build_object(
|
|
'start_date', '2025-08-15',
|
|
'end_date', '2026-07-15',
|
|
'vacation_periods', jsonb_build_array(
|
|
jsonb_build_object('name', 'Navidad', 'start', '2025-12-20', 'end', '2026-01-06'),
|
|
jsonb_build_object('name', 'Semana Santa', 'start', '2026-04-02', 'end', '2026-04-12')
|
|
)
|
|
),
|
|
'features', jsonb_build_object(
|
|
'gamification', true,
|
|
'assessments', true,
|
|
'parent_portal', true,
|
|
'analytics', true
|
|
)
|
|
),
|
|
jsonb_build_object(
|
|
'year_founded', 2010,
|
|
'type', 'public',
|
|
'cct', '09DPR0123K',
|
|
'shift', 'matutino',
|
|
'grades', jsonb_build_array('1', '2', '3', '4', '5', '6'),
|
|
'recognition', 'Escuela de Calidad 2024',
|
|
'principal_name', 'Lic. Ana María Rodríguez',
|
|
'contact_name', 'Prof. Carlos Méndez',
|
|
'contact_email', 'admin@mariecurie.edu.mx',
|
|
'infrastructure', jsonb_build_object(
|
|
'library', true,
|
|
'computer_lab', true,
|
|
'science_lab', true,
|
|
'sports_facilities', true,
|
|
'cafeteria', true
|
|
),
|
|
'programs', jsonb_build_array(
|
|
'Programa de Lectura Marie Curie',
|
|
'Club de Ciencias',
|
|
'Deportes vespertinos'
|
|
),
|
|
'demo_school', true
|
|
),
|
|
gamilit.now_mexico(),
|
|
gamilit.now_mexico()
|
|
),
|
|
|
|
-- =====================================================
|
|
-- Escuela 2: Instituto de Educación Integral (Guadalajara)
|
|
-- =====================================================
|
|
(
|
|
'50000000-0000-0000-0000-000000000002'::uuid,
|
|
v_tenant_id,
|
|
'Instituto de Educación Integral',
|
|
'IEI-GDL',
|
|
'IEI Guadalajara',
|
|
'Instituto privado de educación integral con enfoque STEAM y programas bilingües.',
|
|
'Av. Chapultepec 890',
|
|
'Guadalajara',
|
|
'Jalisco',
|
|
'México',
|
|
'44100',
|
|
'33-3456-7890',
|
|
'contacto@iei.edu.mx',
|
|
'https://iei.edu.mx',
|
|
280,
|
|
24,
|
|
true,
|
|
jsonb_build_object(
|
|
'allow_public_registration', false,
|
|
'require_email_verification', true,
|
|
'max_students_per_classroom', 25,
|
|
'enable_parent_portal', true,
|
|
'tuition_required', true,
|
|
'admission_process', jsonb_build_object(
|
|
'requires_interview', true,
|
|
'requires_exam', true,
|
|
'requires_documents', jsonb_build_array(
|
|
'birth_certificate',
|
|
'previous_grades',
|
|
'recommendation_letters'
|
|
)
|
|
),
|
|
'academic_calendar', jsonb_build_object(
|
|
'start_date', '2025-08-15',
|
|
'end_date', '2026-06-30',
|
|
'vacation_periods', jsonb_build_array(
|
|
jsonb_build_object('name', 'Navidad', 'start', '2025-12-18', 'end', '2026-01-08'),
|
|
jsonb_build_object('name', 'Semana Santa', 'start', '2026-04-01', 'end', '2026-04-13')
|
|
)
|
|
),
|
|
'features', jsonb_build_object(
|
|
'gamification', true,
|
|
'assessments', true,
|
|
'parent_portal', true,
|
|
'analytics', true,
|
|
'bilingual_program', true
|
|
)
|
|
),
|
|
jsonb_build_object(
|
|
'year_founded', 1995,
|
|
'type', 'private',
|
|
'accreditation', 'SEP',
|
|
'bilingual', true,
|
|
'steam_focused', true,
|
|
'international_programs', jsonb_build_array('Cambridge Primary'),
|
|
'partnerships', jsonb_build_array('Universidad de Guadalajara'),
|
|
'principal_name', 'Dra. Patricia Hernández',
|
|
'contact_name', 'Lic. Miguel Ángel Torres',
|
|
'contact_email', 'admisiones@iei.edu.mx',
|
|
'infrastructure', jsonb_build_object(
|
|
'library', true,
|
|
'computer_lab', true,
|
|
'science_lab', true,
|
|
'robotics_lab', true,
|
|
'innovation_hub', true,
|
|
'sports_complex', true,
|
|
'auditorium', true,
|
|
'art_studio', true
|
|
),
|
|
'extracurricular', jsonb_build_array(
|
|
'Robótica',
|
|
'Ajedrez',
|
|
'Música',
|
|
'Artes Plásticas',
|
|
'Deportes'
|
|
),
|
|
'certifications', jsonb_build_array('SEP', 'Cambridge'),
|
|
'demo_school', true
|
|
),
|
|
gamilit.now_mexico(),
|
|
gamilit.now_mexico()
|
|
)
|
|
|
|
ON CONFLICT (code) DO UPDATE SET
|
|
name = EXCLUDED.name,
|
|
short_name = EXCLUDED.short_name,
|
|
description = EXCLUDED.description,
|
|
email = EXCLUDED.email,
|
|
current_students_count = EXCLUDED.current_students_count,
|
|
current_teachers_count = EXCLUDED.current_teachers_count,
|
|
is_active = EXCLUDED.is_active,
|
|
settings = EXCLUDED.settings,
|
|
metadata = EXCLUDED.metadata,
|
|
updated_at = gamilit.now_mexico();
|
|
|
|
END $$;
|
|
|
|
-- =====================================================
|
|
-- Verification Query
|
|
-- =====================================================
|
|
|
|
DO $$
|
|
DECLARE
|
|
school_count INTEGER;
|
|
public_schools INTEGER;
|
|
private_schools INTEGER;
|
|
BEGIN
|
|
SELECT COUNT(*) INTO school_count
|
|
FROM social_features.schools
|
|
WHERE metadata->>'demo_school' = 'true';
|
|
|
|
SELECT COUNT(*) INTO public_schools
|
|
FROM social_features.schools
|
|
WHERE metadata->>'type' = 'public' AND metadata->>'demo_school' = 'true';
|
|
|
|
SELECT COUNT(*) INTO private_schools
|
|
FROM social_features.schools
|
|
WHERE metadata->>'type' = 'private' AND metadata->>'demo_school' = 'true';
|
|
|
|
RAISE NOTICE '========================================';
|
|
RAISE NOTICE 'ESCUELAS DEMO CREADAS EXITOSAMENTE';
|
|
RAISE NOTICE '========================================';
|
|
RAISE NOTICE 'Total escuelas: %', school_count;
|
|
RAISE NOTICE ' - Públicas: %', public_schools;
|
|
RAISE NOTICE ' - Privadas: %', private_schools;
|
|
RAISE NOTICE '========================================';
|
|
|
|
IF school_count = 2 THEN
|
|
RAISE NOTICE '✓ Todas las escuelas demo fueron creadas correctamente';
|
|
ELSE
|
|
RAISE WARNING '⚠ Se esperaban 2 escuelas, se crearon %', school_count;
|
|
END IF;
|
|
END $$;
|
|
|
|
-- =====================================================
|
|
-- Listado de escuelas
|
|
-- =====================================================
|
|
|
|
DO $$
|
|
DECLARE
|
|
school_record RECORD;
|
|
BEGIN
|
|
RAISE NOTICE '';
|
|
RAISE NOTICE 'Listado de escuelas demo:';
|
|
RAISE NOTICE '========================================';
|
|
|
|
FOR school_record IN
|
|
SELECT name, code, city, region, current_students_count
|
|
FROM social_features.schools
|
|
WHERE metadata->>'demo_school' = 'true'
|
|
ORDER BY name
|
|
LOOP
|
|
RAISE NOTICE ' - % (%) - %, %',
|
|
school_record.name,
|
|
school_record.code,
|
|
school_record.city,
|
|
school_record.region;
|
|
RAISE NOTICE ' Estudiantes: %', school_record.current_students_count;
|
|
END LOOP;
|
|
|
|
RAISE NOTICE '========================================';
|
|
END $$;
|