workspace-v1/projects/gamilit/database/seeds/dev/social_features/04-teams.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

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 $$;