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>
449 lines
15 KiB
SQL
449 lines
15 KiB
SQL
-- =====================================================================
|
|
-- Archivo: 04-teams.sql
|
|
-- Schema: social_features
|
|
-- Descripción: Seeds de equipos colaborativos y sus membresías
|
|
-- Dependencias: 02-classrooms.sql, 03-classroom-members.sql
|
|
-- Autor: SA-SEEDS-SOCIAL
|
|
-- Fecha: 2025-11-02
|
|
-- =====================================================================
|
|
|
|
SET search_path TO social_features, auth, public;
|
|
|
|
-- =====================================================================
|
|
-- TEAMS: Equipos colaborativos dentro de aulas
|
|
-- =====================================================================
|
|
|
|
DO $$
|
|
DECLARE
|
|
classroom_2a UUID;
|
|
classroom_3b UUID;
|
|
classroom_1a UUID;
|
|
classroom_2st UUID;
|
|
student1_id UUID;
|
|
student2_id UUID;
|
|
student3_id UUID;
|
|
team_cientificos UUID;
|
|
team_exploradores UUID;
|
|
team_pioneros UUID;
|
|
team_innovadores UUID;
|
|
team_count INTEGER;
|
|
member_count INTEGER;
|
|
BEGIN
|
|
-- =====================================================================
|
|
-- Obtener classroom IDs
|
|
-- =====================================================================
|
|
SELECT classroom_id INTO classroom_2a
|
|
FROM social_features.classrooms
|
|
WHERE classroom_code = '2A-LECT-2025';
|
|
|
|
SELECT classroom_id INTO classroom_3b
|
|
FROM social_features.classrooms
|
|
WHERE classroom_code = '3B-DIGI-2025';
|
|
|
|
SELECT classroom_id INTO classroom_1a
|
|
FROM social_features.classrooms
|
|
WHERE classroom_code = '1A-INTRO-2025';
|
|
|
|
SELECT classroom_id INTO classroom_2st
|
|
FROM social_features.classrooms
|
|
WHERE classroom_code = '2ST-LITC-2025';
|
|
|
|
-- =====================================================================
|
|
-- Obtener student IDs
|
|
-- =====================================================================
|
|
SELECT user_id INTO student1_id
|
|
FROM auth.users
|
|
WHERE email = 'estudiante1@demo.glit.edu.mx';
|
|
|
|
SELECT user_id INTO student2_id
|
|
FROM auth.users
|
|
WHERE email = 'estudiante2@demo.glit.edu.mx';
|
|
|
|
SELECT user_id INTO student3_id
|
|
FROM auth.users
|
|
WHERE email = 'estudiante3@demo.glit.edu.mx';
|
|
|
|
-- Validar que existan los recursos necesarios
|
|
IF classroom_2a IS NULL THEN
|
|
RAISE EXCEPTION 'No se encontró el aula 2A-LECT-2025. Ejecutar seeds de classrooms primero.';
|
|
END IF;
|
|
|
|
IF student1_id IS NULL THEN
|
|
RAISE EXCEPTION 'No se encontraron estudiantes demo. Ejecutar seeds de auth primero.';
|
|
END IF;
|
|
|
|
-- =====================================================================
|
|
-- EQUIPO 1: Los Científicos (Aula 2° A - Secundaria Federal 15)
|
|
-- Enfoque: Biografías de científicos
|
|
-- =====================================================================
|
|
INSERT INTO social_features.teams (
|
|
classroom_id, name, code, description,
|
|
capacity, current_members_count,
|
|
is_active, is_active,
|
|
settings, metadata,
|
|
created_at, updated_at
|
|
) VALUES
|
|
(
|
|
classroom_2a,
|
|
'Los Científicos',
|
|
'TEAM-CIENT-2A',
|
|
'Equipo enfocado en explorar biografías de científicos famosos y sus contribuciones a la humanidad. Proyecto: "Mujeres en la Ciencia".',
|
|
5,
|
|
0,
|
|
'active',
|
|
true,
|
|
'{
|
|
"allow_public_join": false,
|
|
"require_approval": true,
|
|
"enable_team_chat": true,
|
|
"collaboration_tools": ["shared_documents", "video_calls", "task_board"],
|
|
"meeting_schedule": {
|
|
"frequency": "weekly",
|
|
"day": "Viernes",
|
|
"time": "15:00-16:00"
|
|
}
|
|
}'::jsonb,
|
|
'{
|
|
"color": "#3498db",
|
|
"icon": "flask",
|
|
"motto": "Explorando la ciencia juntos",
|
|
"current_project": "Biografías de Mujeres Científicas",
|
|
"achievements": [],
|
|
"team_goals": [
|
|
"Completar 5 biografías científicas",
|
|
"Presentar en Feria de Ciencias",
|
|
"Crear podcast educativo"
|
|
]
|
|
}'::jsonb,
|
|
NOW(),
|
|
NOW()
|
|
)
|
|
RETURNING team_id INTO team_cientificos;
|
|
|
|
-- =====================================================================
|
|
-- EQUIPO 2: Exploradores Digitales (Aula 3° B - Secundaria Federal 15)
|
|
-- Enfoque: Lectura digital y fact-checking
|
|
-- =====================================================================
|
|
INSERT INTO social_features.teams (
|
|
classroom_id, name, code, description,
|
|
capacity, current_members_count,
|
|
is_active, is_active,
|
|
settings, metadata,
|
|
created_at, updated_at
|
|
) VALUES
|
|
(
|
|
classroom_3b,
|
|
'Exploradores Digitales',
|
|
'TEAM-EXPLO-3B',
|
|
'Equipo dedicado a dominar la lectura digital, fact-checking y análisis crítico de medios. Proyecto: "Cazadores de Fake News".',
|
|
5,
|
|
0,
|
|
'active',
|
|
true,
|
|
'{
|
|
"allow_public_join": false,
|
|
"require_approval": true,
|
|
"enable_team_chat": true,
|
|
"collaboration_tools": ["shared_documents", "video_calls", "annotation_tools"],
|
|
"meeting_schedule": {
|
|
"frequency": "biweekly",
|
|
"day": "Jueves",
|
|
"time": "16:00-17:00"
|
|
}
|
|
}'::jsonb,
|
|
'{
|
|
"color": "#2ecc71",
|
|
"icon": "compass",
|
|
"motto": "Navegando el mundo digital con criterio",
|
|
"current_project": "Cazadores de Fake News",
|
|
"achievements": ["Primera verificación exitosa"],
|
|
"team_goals": [
|
|
"Verificar 10 noticias virales",
|
|
"Crear guía de fact-checking",
|
|
"Workshop para la comunidad"
|
|
],
|
|
"tools_mastered": ["Google Fact Check", "TinEye", "Wayback Machine"]
|
|
}'::jsonb,
|
|
NOW(),
|
|
NOW()
|
|
)
|
|
RETURNING team_id INTO team_exploradores;
|
|
|
|
-- =====================================================================
|
|
-- EQUIPO 3: Pioneros Técnicos (Aula 1° A - Secundaria Técnica 42)
|
|
-- Enfoque: Lectura de manuales técnicos
|
|
-- =====================================================================
|
|
INSERT INTO social_features.teams (
|
|
classroom_id, name, code, description,
|
|
capacity, current_members_count,
|
|
is_active, is_active,
|
|
settings, metadata,
|
|
created_at, updated_at
|
|
) VALUES
|
|
(
|
|
classroom_1a,
|
|
'Pioneros Técnicos',
|
|
'TEAM-PION-1A',
|
|
'Equipo enfocado en comprensión de manuales técnicos, documentación de software y estándares industriales.',
|
|
6,
|
|
0,
|
|
'active',
|
|
true,
|
|
'{
|
|
"allow_public_join": false,
|
|
"require_approval": true,
|
|
"enable_team_chat": true,
|
|
"collaboration_tools": ["shared_documents", "code_repository"],
|
|
"meeting_schedule": {
|
|
"frequency": "weekly",
|
|
"day": "Miércoles",
|
|
"time": "17:00-18:00"
|
|
}
|
|
}'::jsonb,
|
|
'{
|
|
"color": "#e74c3c",
|
|
"icon": "wrench",
|
|
"motto": "Leyendo el futuro técnico",
|
|
"current_project": "Manual de Arduino para Principiantes",
|
|
"achievements": [],
|
|
"team_goals": [
|
|
"Completar manual Arduino",
|
|
"Construir proyecto electrónico",
|
|
"Documentar proceso técnico"
|
|
]
|
|
}'::jsonb,
|
|
NOW(),
|
|
NOW()
|
|
)
|
|
RETURNING team_id INTO team_pioneros;
|
|
|
|
-- =====================================================================
|
|
-- EQUIPO 4: Innovadores STEAM (Aula 2° STEAM - Colegio Einstein)
|
|
-- Enfoque: Literatura científica bilingüe
|
|
-- =====================================================================
|
|
INSERT INTO social_features.teams (
|
|
classroom_id, name, code, description,
|
|
capacity, current_members_count,
|
|
is_active, is_active,
|
|
settings, metadata,
|
|
created_at, updated_at
|
|
) VALUES
|
|
(
|
|
classroom_2st,
|
|
'Innovadores STEAM',
|
|
'TEAM-INNOV-2ST',
|
|
'Equipo bilingüe enfocado en integrar literatura científica con proyectos STEAM. Proyecto: "Scientists Who Changed the World".',
|
|
4,
|
|
0,
|
|
'active',
|
|
true,
|
|
'{
|
|
"allow_public_join": false,
|
|
"require_approval": true,
|
|
"enable_team_chat": true,
|
|
"bilingual_communication": true,
|
|
"collaboration_tools": ["shared_documents", "video_calls", "design_tools"],
|
|
"meeting_schedule": {
|
|
"frequency": "weekly",
|
|
"day": "Viernes",
|
|
"time": "14:00-15:30"
|
|
}
|
|
}'::jsonb,
|
|
'{
|
|
"color": "#9b59b6",
|
|
"icon": "lightbulb",
|
|
"motto": "Innovation through knowledge / Innovación a través del conocimiento",
|
|
"current_project": "Scientists Who Changed the World",
|
|
"bilingual": true,
|
|
"achievements": ["STEAM Fair Participation"],
|
|
"team_goals": [
|
|
"Complete 3 bilingual biographies",
|
|
"Create interactive exhibition",
|
|
"Present at International STEAM Fair"
|
|
],
|
|
"partnership": "MIT Pre-Collegiate Program"
|
|
}'::jsonb,
|
|
NOW(),
|
|
NOW()
|
|
)
|
|
RETURNING team_id INTO team_innovadores;
|
|
|
|
-- =====================================================================
|
|
-- MEMBRESÍAS DE EQUIPOS
|
|
-- =====================================================================
|
|
|
|
-- Equipo 1: Los Científicos
|
|
INSERT INTO social_features.team_members (
|
|
team_id, user_id, role,
|
|
joined_date, is_active, is_active,
|
|
metadata, created_at, updated_at
|
|
) VALUES
|
|
(
|
|
team_cientificos,
|
|
student1_id,
|
|
'leader',
|
|
NOW(),
|
|
'active',
|
|
true,
|
|
'{
|
|
"responsibilities": ["Coordinar reuniones", "Asignar tareas", "Revisar entregas"],
|
|
"expertise": ["Investigación", "Organización"],
|
|
"contribution_score": 95
|
|
}'::jsonb,
|
|
NOW(),
|
|
NOW()
|
|
),
|
|
(
|
|
team_cientificos,
|
|
student3_id,
|
|
'member',
|
|
NOW(),
|
|
'active',
|
|
true,
|
|
'{
|
|
"responsibilities": ["Investigar biografías", "Editar contenido"],
|
|
"expertise": ["Escritura creativa", "Investigación"],
|
|
"contribution_score": 88
|
|
}'::jsonb,
|
|
NOW(),
|
|
NOW()
|
|
),
|
|
|
|
-- Equipo 2: Exploradores Digitales
|
|
(
|
|
team_exploradores,
|
|
student2_id,
|
|
'leader',
|
|
NOW(),
|
|
'active',
|
|
true,
|
|
'{
|
|
"responsibilities": ["Coordinar verificaciones", "Gestionar herramientas", "Moderar discusiones"],
|
|
"expertise": ["Fact-checking", "Alfabetización digital"],
|
|
"contribution_score": 92,
|
|
"certifications": ["Digital Literacy Basic"]
|
|
}'::jsonb,
|
|
NOW(),
|
|
NOW()
|
|
),
|
|
(
|
|
team_exploradores,
|
|
student1_id,
|
|
'member',
|
|
NOW(),
|
|
'active',
|
|
true,
|
|
'{
|
|
"responsibilities": ["Verificar noticias", "Documentar hallazgos"],
|
|
"expertise": ["Análisis crítico", "Búsqueda avanzada"],
|
|
"contribution_score": 90
|
|
}'::jsonb,
|
|
NOW(),
|
|
NOW()
|
|
),
|
|
|
|
-- Equipo 3: Pioneros Técnicos
|
|
(
|
|
team_pioneros,
|
|
student3_id,
|
|
'leader',
|
|
NOW(),
|
|
'active',
|
|
true,
|
|
'{
|
|
"responsibilities": ["Coordinar proyectos técnicos", "Revisar documentación"],
|
|
"expertise": ["Electrónica básica", "Lectura técnica"],
|
|
"contribution_score": 85
|
|
}'::jsonb,
|
|
NOW(),
|
|
NOW()
|
|
),
|
|
|
|
-- Equipo 4: Innovadores STEAM
|
|
(
|
|
team_innovadores,
|
|
student1_id,
|
|
'co-leader',
|
|
NOW(),
|
|
'active',
|
|
true,
|
|
'{
|
|
"responsibilities": ["Traducción bilingüe", "Diseño de presentaciones"],
|
|
"expertise": ["Bilingüismo", "Diseño gráfico"],
|
|
"contribution_score": 94,
|
|
"languages": ["Español", "English"]
|
|
}'::jsonb,
|
|
NOW(),
|
|
NOW()
|
|
),
|
|
(
|
|
team_innovadores,
|
|
student2_id,
|
|
'member',
|
|
NOW(),
|
|
'active',
|
|
true,
|
|
'{
|
|
"responsibilities": ["Investigación científica", "Redacción técnica"],
|
|
"expertise": ["Investigación", "STEAM projects"],
|
|
"contribution_score": 89,
|
|
"languages": ["Español", "English"]
|
|
}'::jsonb,
|
|
NOW(),
|
|
NOW()
|
|
)
|
|
ON CONFLICT (team_id, user_id) DO UPDATE SET
|
|
status = EXCLUDED.is_active,
|
|
role = EXCLUDED.role,
|
|
metadata = EXCLUDED.metadata,
|
|
updated_at = NOW();
|
|
|
|
-- =====================================================================
|
|
-- Actualizar member counts en teams
|
|
-- =====================================================================
|
|
UPDATE social_features.teams
|
|
SET current_members_count = (
|
|
SELECT COUNT(*)
|
|
FROM social_features.team_members
|
|
WHERE team_members.team_id = teams.team_id
|
|
AND status = 'active'
|
|
)
|
|
WHERE team_id IN (
|
|
team_cientificos, team_exploradores,
|
|
team_pioneros, team_innovadores
|
|
);
|
|
|
|
-- =====================================================================
|
|
-- Verificación de inserción
|
|
-- =====================================================================
|
|
SELECT COUNT(*) INTO team_count
|
|
FROM social_features.teams
|
|
WHERE status = 'active';
|
|
|
|
SELECT COUNT(*) INTO member_count
|
|
FROM social_features.team_members
|
|
WHERE status = 'active';
|
|
|
|
RAISE NOTICE '================================================';
|
|
RAISE NOTICE 'TEAMS SEEDS - RESUMEN DE INSERCIÓN';
|
|
RAISE NOTICE '================================================';
|
|
RAISE NOTICE 'Total de equipos creados: %', team_count;
|
|
RAISE NOTICE 'Total de membresías activas: %', member_count;
|
|
RAISE NOTICE '';
|
|
RAISE NOTICE 'Equipos por aula:';
|
|
RAISE NOTICE '- Los Científicos (2A): % miembros', (
|
|
SELECT current_members_count FROM social_features.teams WHERE team_id = team_cientificos
|
|
);
|
|
RAISE NOTICE '- Exploradores Digitales (3B): % miembros', (
|
|
SELECT current_members_count FROM social_features.teams WHERE team_id = team_exploradores
|
|
);
|
|
RAISE NOTICE '- Pioneros Técnicos (1A): % miembros', (
|
|
SELECT current_members_count FROM social_features.teams WHERE team_id = team_pioneros
|
|
);
|
|
RAISE NOTICE '- Innovadores STEAM (2ST): % miembros', (
|
|
SELECT current_members_count FROM social_features.teams WHERE team_id = team_innovadores
|
|
);
|
|
RAISE NOTICE '================================================';
|
|
|
|
END $$;
|