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>
267 lines
8.3 KiB
SQL
267 lines
8.3 KiB
SQL
-- =====================================================
|
|
-- Seed: social_features.classroom_members (PROD)
|
|
-- Description: Asociaciones estudiantes-aulas para testing y demos
|
|
-- Environment: PRODUCTION
|
|
-- Dependencies: social_features.classrooms, auth_management.profiles
|
|
-- Order: 03
|
|
-- Created: 2025-01-11
|
|
-- Version: 1.0
|
|
-- =====================================================
|
|
--
|
|
-- ASOCIACIONES INCLUIDAS:
|
|
-- - 5to A: estudiante1, estudiante2
|
|
-- - 5to B: estudiante3, estudiante4
|
|
-- - 6to A: estudiante5
|
|
--
|
|
-- TOTAL: 5 asociaciones estudiante-aula
|
|
--
|
|
-- IMPORTANTE: Estas asociaciones conectan estudiantes demo con aulas demo.
|
|
-- =====================================================
|
|
|
|
SET search_path TO social_features, auth_management, public;
|
|
|
|
-- =====================================================
|
|
-- INSERT: Asociaciones Estudiante-Aula
|
|
-- =====================================================
|
|
|
|
INSERT INTO social_features.classroom_members (
|
|
id,
|
|
classroom_id,
|
|
student_id,
|
|
enrollment_date,
|
|
enrollment_method,
|
|
status,
|
|
attendance_percentage,
|
|
metadata,
|
|
created_at,
|
|
updated_at
|
|
) VALUES
|
|
|
|
-- =====================================================
|
|
-- 5to A - Estudiante 1 (Azul Valentina)
|
|
-- =====================================================
|
|
(
|
|
'70000000-0000-0000-0000-000000000001'::uuid,
|
|
'60000000-0000-0000-0000-000000000001'::uuid, -- 5to A
|
|
'2f5a9846-3393-40b2-9e87-0f29238c383f'::uuid, -- Azul Valentina (real profile ID)
|
|
gamilit.now_mexico(),
|
|
'admin_add',
|
|
'active',
|
|
0.00, -- Sin attendance aún
|
|
jsonb_build_object(
|
|
'enrollment_type', 'demo',
|
|
'demo_member', true,
|
|
'enrolled_by', 'seed_script'
|
|
),
|
|
gamilit.now_mexico(),
|
|
gamilit.now_mexico()
|
|
),
|
|
|
|
-- =====================================================
|
|
-- 5to A - Estudiante 2 (Benjamin Hernandez)
|
|
-- =====================================================
|
|
(
|
|
'70000000-0000-0000-0000-000000000002'::uuid,
|
|
'60000000-0000-0000-0000-000000000001'::uuid, -- 5to A
|
|
'7a6a973e-83f7-4374-a9fc-54258138115f'::uuid, -- Benjamin Hernandez (real profile ID)
|
|
gamilit.now_mexico(),
|
|
'admin_add',
|
|
'active',
|
|
0.00,
|
|
jsonb_build_object(
|
|
'enrollment_type', 'demo',
|
|
'demo_member', true,
|
|
'enrolled_by', 'seed_script'
|
|
),
|
|
gamilit.now_mexico(),
|
|
gamilit.now_mexico()
|
|
),
|
|
|
|
-- =====================================================
|
|
-- 5to B - Estudiante 3 (Diego Colores)
|
|
-- =====================================================
|
|
(
|
|
'70000000-0000-0000-0000-000000000003'::uuid,
|
|
'60000000-0000-0000-0000-000000000002'::uuid, -- 5to B
|
|
'33306a65-a3b1-41d5-a49d-47989957b822'::uuid, -- Diego Colores (real profile ID)
|
|
gamilit.now_mexico(),
|
|
'admin_add',
|
|
'active',
|
|
0.00,
|
|
jsonb_build_object(
|
|
'enrollment_type', 'demo',
|
|
'demo_member', true,
|
|
'enrolled_by', 'seed_script'
|
|
),
|
|
gamilit.now_mexico(),
|
|
gamilit.now_mexico()
|
|
),
|
|
|
|
-- =====================================================
|
|
-- 5to B - Estudiante 4 (Fernando Barragan)
|
|
-- =====================================================
|
|
(
|
|
'70000000-0000-0000-0000-000000000004'::uuid,
|
|
'60000000-0000-0000-0000-000000000002'::uuid, -- 5to B
|
|
'9951ad75-e9cb-47b3-b478-6bb860ee2530'::uuid, -- Fernando Barragan (real profile ID)
|
|
gamilit.now_mexico(),
|
|
'admin_add',
|
|
'active',
|
|
0.00,
|
|
jsonb_build_object(
|
|
'enrollment_type', 'demo',
|
|
'demo_member', true,
|
|
'enrolled_by', 'seed_script'
|
|
),
|
|
gamilit.now_mexico(),
|
|
gamilit.now_mexico()
|
|
),
|
|
|
|
-- =====================================================
|
|
-- 6to A - Estudiante 5 (Hugo Aragón)
|
|
-- =====================================================
|
|
(
|
|
'70000000-0000-0000-0000-000000000005'::uuid,
|
|
'60000000-0000-0000-0000-000000000003'::uuid, -- 6to A
|
|
'bf0d3e34-e077-43d1-9626-292f7fae2bd6'::uuid, -- Hugo Aragón (real profile ID)
|
|
gamilit.now_mexico(),
|
|
'admin_add',
|
|
'active',
|
|
0.00,
|
|
jsonb_build_object(
|
|
'enrollment_type', 'demo',
|
|
'demo_member', true,
|
|
'enrolled_by', 'seed_script'
|
|
),
|
|
gamilit.now_mexico(),
|
|
gamilit.now_mexico()
|
|
)
|
|
|
|
ON CONFLICT (classroom_id, student_id) DO UPDATE SET
|
|
status = EXCLUDED.status,
|
|
metadata = EXCLUDED.metadata,
|
|
updated_at = gamilit.now_mexico();
|
|
|
|
-- =====================================================
|
|
-- Verification Query
|
|
-- =====================================================
|
|
|
|
DO $$
|
|
DECLARE
|
|
member_count INTEGER;
|
|
classroom_5a_count INTEGER;
|
|
classroom_5b_count INTEGER;
|
|
classroom_6a_count INTEGER;
|
|
BEGIN
|
|
SELECT COUNT(*) INTO member_count
|
|
FROM social_features.classroom_members
|
|
WHERE metadata->>'demo_member' = 'true';
|
|
|
|
SELECT COUNT(*) INTO classroom_5a_count
|
|
FROM social_features.classroom_members
|
|
WHERE classroom_id = '60000000-0000-0000-0000-000000000001'::uuid;
|
|
|
|
SELECT COUNT(*) INTO classroom_5b_count
|
|
FROM social_features.classroom_members
|
|
WHERE classroom_id = '60000000-0000-0000-0000-000000000002'::uuid;
|
|
|
|
SELECT COUNT(*) INTO classroom_6a_count
|
|
FROM social_features.classroom_members
|
|
WHERE classroom_id = '60000000-0000-0000-0000-000000000003'::uuid;
|
|
|
|
RAISE NOTICE '========================================';
|
|
RAISE NOTICE 'ASOCIACIONES AULA-ESTUDIANTE CREADAS';
|
|
RAISE NOTICE '========================================';
|
|
RAISE NOTICE 'Total asociaciones: %', member_count;
|
|
RAISE NOTICE ' - 5to A: % estudiantes', classroom_5a_count;
|
|
RAISE NOTICE ' - 5to B: % estudiantes', classroom_5b_count;
|
|
RAISE NOTICE ' - 6to A: % estudiantes', classroom_6a_count;
|
|
RAISE NOTICE '========================================';
|
|
|
|
IF member_count = 5 THEN
|
|
RAISE NOTICE '✓ Todas las asociaciones fueron creadas correctamente';
|
|
ELSE
|
|
RAISE WARNING '⚠ Se esperaban 5 asociaciones, se crearon %', member_count;
|
|
END IF;
|
|
END $$;
|
|
|
|
-- =====================================================
|
|
-- Listado de asociaciones
|
|
-- =====================================================
|
|
|
|
DO $$
|
|
DECLARE
|
|
member_record RECORD;
|
|
BEGIN
|
|
RAISE NOTICE '';
|
|
RAISE NOTICE 'Listado de estudiantes por aula:';
|
|
RAISE NOTICE '========================================';
|
|
|
|
FOR member_record IN
|
|
SELECT
|
|
c.name as classroom_name,
|
|
c.code as classroom_code,
|
|
p.display_name as student_name,
|
|
p.email as student_email,
|
|
cm.status
|
|
FROM social_features.classroom_members cm
|
|
JOIN social_features.classrooms c ON c.id = cm.classroom_id
|
|
JOIN auth_management.profiles p ON p.id = cm.student_id
|
|
WHERE cm.metadata->>'demo_member' = 'true'
|
|
ORDER BY c.name, p.display_name
|
|
LOOP
|
|
RAISE NOTICE ' [%] % (%)',
|
|
member_record.classroom_code,
|
|
member_record.classroom_name,
|
|
member_record.status;
|
|
RAISE NOTICE ' └─ % <%>',
|
|
member_record.student_name,
|
|
member_record.student_email;
|
|
END LOOP;
|
|
|
|
RAISE NOTICE '========================================';
|
|
END $$;
|
|
|
|
-- =====================================================
|
|
-- Actualizar counts en classrooms
|
|
-- =====================================================
|
|
|
|
UPDATE social_features.classrooms
|
|
SET current_students_count = (
|
|
SELECT COUNT(*)
|
|
FROM social_features.classroom_members
|
|
WHERE classroom_id = classrooms.id
|
|
AND status = 'active'
|
|
)
|
|
WHERE id IN (
|
|
'60000000-0000-0000-0000-000000000001'::uuid, -- 5to A
|
|
'60000000-0000-0000-0000-000000000002'::uuid, -- 5to B
|
|
'60000000-0000-0000-0000-000000000003'::uuid -- 6to A
|
|
);
|
|
|
|
-- Verificar counts actualizados
|
|
DO $$
|
|
DECLARE
|
|
classroom_record RECORD;
|
|
BEGIN
|
|
RAISE NOTICE '';
|
|
RAISE NOTICE 'Verificación de counts actualizados:';
|
|
RAISE NOTICE '========================================';
|
|
|
|
FOR classroom_record IN
|
|
SELECT name, code, current_students_count
|
|
FROM social_features.classrooms
|
|
WHERE metadata->>'demo_classroom' = 'true'
|
|
AND current_students_count > 0
|
|
ORDER BY name
|
|
LOOP
|
|
RAISE NOTICE ' % (%): % estudiantes',
|
|
classroom_record.name,
|
|
classroom_record.code,
|
|
classroom_record.current_students_count;
|
|
END LOOP;
|
|
|
|
RAISE NOTICE '========================================';
|
|
RAISE NOTICE '✓ Counts actualizados correctamente';
|
|
END $$;
|