- Configure workspace Git repository with comprehensive .gitignore - Add Odoo as submodule for ERP reference code - Include documentation: SETUP.md, GIT-STRUCTURE.md - Add gitignore templates for projects (backend, frontend, database) - Structure supports independent repos per project/subproject level Workspace includes: - core/ - Reusable patterns, modules, orchestration system - projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.) - knowledge-base/ - Reference code and patterns (includes Odoo submodule) - devtools/ - Development tools and templates - customers/ - Client implementations template 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
173 lines
5.9 KiB
Bash
Executable File
173 lines
5.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# ============================================================================
|
|
# Script: load-users-and-profiles.sh
|
|
# Descripción: Carga usuarios y perfiles correctamente
|
|
# Versión: 2.0 (con correcciones para tablas faltantes)
|
|
# Fecha: 2025-11-09
|
|
# Autor: Claude Code (AI Assistant)
|
|
# ============================================================================
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
DB_DIR="$(dirname "$SCRIPT_DIR")"
|
|
|
|
cd "$DB_DIR"
|
|
|
|
# Cargar credenciales
|
|
if [ ! -f "database-credentials-dev.txt" ]; then
|
|
echo "❌ Error: database-credentials-dev.txt no encontrado"
|
|
exit 1
|
|
fi
|
|
|
|
DB_PASSWORD=$(grep "^Password:" database-credentials-dev.txt | awk '{print $2}')
|
|
export PGPASSWORD="$DB_PASSWORD"
|
|
|
|
PSQL="psql -h localhost -p 5432 -U gamilit_user -d gamilit_platform"
|
|
|
|
echo "════════════════════════════════════════════════════════════════"
|
|
echo " CARGANDO USUARIOS Y PERFILES - GAMILIT PLATFORM"
|
|
echo "════════════════════════════════════════════════════════════════"
|
|
echo ""
|
|
|
|
# PASO 1: Verificar tablas de gamificación
|
|
echo "📋 PASO 1: Verificando tablas de gamificación..."
|
|
TABLES_COUNT=$($PSQL -t -c "
|
|
SELECT COUNT(*)
|
|
FROM information_schema.tables
|
|
WHERE table_schema = 'gamification_system'
|
|
AND table_name IN ('user_stats', 'user_ranks');
|
|
" | tr -d ' ')
|
|
|
|
if [ "$TABLES_COUNT" -lt 2 ]; then
|
|
echo "⚠️ Tablas de gamificación faltantes ($TABLES_COUNT/2). Creando..."
|
|
bash "$SCRIPT_DIR/fix-missing-gamification-tables.sh"
|
|
else
|
|
echo "✅ Tablas de gamificación presentes (2/2)"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# PASO 2: Cargar usuarios en auth.users
|
|
echo "👥 PASO 2: Cargando usuarios en auth.users..."
|
|
|
|
if [ -f "seeds/dev/auth/01-demo-users.sql" ]; then
|
|
$PSQL -f seeds/dev/auth/01-demo-users.sql > /dev/null 2>&1
|
|
echo " ✅ Demo users cargados"
|
|
else
|
|
echo " ⚠️ seeds/dev/auth/01-demo-users.sql no encontrado"
|
|
fi
|
|
|
|
if [ -f "seeds/dev/auth/02-test-users.sql" ]; then
|
|
$PSQL -f seeds/dev/auth/02-test-users.sql > /dev/null 2>&1
|
|
echo " ✅ Test users cargados"
|
|
else
|
|
echo " ⚠️ seeds/dev/auth/02-test-users.sql no encontrado"
|
|
fi
|
|
|
|
USERS_COUNT=$($PSQL -t -c "
|
|
SELECT COUNT(*) FROM auth.users
|
|
WHERE email LIKE '%@glit.edu.mx'
|
|
OR email LIKE '%@demo.glit.edu.mx'
|
|
OR email LIKE '%@gamilit.com';
|
|
" | tr -d ' ')
|
|
echo " 📊 Total usuarios: $USERS_COUNT"
|
|
|
|
echo ""
|
|
|
|
# PASO 3: Cargar profiles en auth_management.profiles
|
|
echo "📝 PASO 3: Cargando profiles..."
|
|
|
|
if [ -f "seeds/dev/auth_management/03-profiles.sql" ]; then
|
|
# Ejecutar y capturar errores
|
|
if $PSQL -f seeds/dev/auth_management/03-profiles.sql 2>&1 | grep -q "ERROR"; then
|
|
echo " ⚠️ Error al cargar profiles. Intentando método alternativo..."
|
|
|
|
# Deshabilitar trigger temporalmente
|
|
$PSQL -c "ALTER TABLE auth_management.profiles DISABLE TRIGGER trg_initialize_user_stats;" > /dev/null 2>&1
|
|
|
|
# Re-intentar carga
|
|
$PSQL -f seeds/dev/auth_management/03-profiles.sql > /dev/null 2>&1
|
|
|
|
# Re-habilitar trigger
|
|
$PSQL -c "ALTER TABLE auth_management.profiles ENABLE TRIGGER trg_initialize_user_stats;" > /dev/null 2>&1
|
|
|
|
echo " ✅ Profiles cargados (método alternativo)"
|
|
else
|
|
echo " ✅ Profiles cargados"
|
|
fi
|
|
else
|
|
echo " ⚠️ seeds/dev/auth_management/03-profiles.sql no encontrado"
|
|
fi
|
|
|
|
PROFILES_COUNT=$($PSQL -t -c "
|
|
SELECT COUNT(*) FROM auth_management.profiles
|
|
WHERE email LIKE '%@glit.edu.mx'
|
|
OR email LIKE '%@demo.glit.edu.mx'
|
|
OR email LIKE '%@gamilit.com';
|
|
" | tr -d ' ')
|
|
echo " 📊 Total profiles: $PROFILES_COUNT"
|
|
|
|
echo ""
|
|
|
|
# PASO 4: Verificación final
|
|
echo "✅ PASO 4: Verificación final..."
|
|
echo ""
|
|
|
|
$PSQL -c "
|
|
SELECT
|
|
'auth.users' as tabla,
|
|
COUNT(*) as total,
|
|
COUNT(*) FILTER (WHERE role = 'super_admin') as admins,
|
|
COUNT(*) FILTER (WHERE role = 'admin_teacher') as teachers,
|
|
COUNT(*) FILTER (WHERE role = 'student') as students
|
|
FROM auth.users
|
|
WHERE email LIKE '%@glit.edu.mx'
|
|
OR email LIKE '%@demo.glit.edu.mx'
|
|
OR email LIKE '%@gamilit.com'
|
|
UNION ALL
|
|
SELECT
|
|
'auth_management.profiles' as tabla,
|
|
COUNT(*) as total,
|
|
COUNT(*) FILTER (WHERE role = 'super_admin') as admins,
|
|
COUNT(*) FILTER (WHERE role = 'admin_teacher') as teachers,
|
|
COUNT(*) FILTER (WHERE role = 'student') as students
|
|
FROM auth_management.profiles
|
|
WHERE email LIKE '%@glit.edu.mx'
|
|
OR email LIKE '%@demo.glit.edu.mx'
|
|
OR email LIKE '%@gamilit.com';
|
|
"
|
|
|
|
echo ""
|
|
|
|
# Verificar vinculación
|
|
UNLINKED=$($PSQL -t -c "
|
|
SELECT COUNT(*)
|
|
FROM auth.users u
|
|
LEFT JOIN auth_management.profiles p ON u.id = p.user_id
|
|
WHERE p.user_id IS NULL
|
|
AND (u.email LIKE '%@glit.edu.mx'
|
|
OR u.email LIKE '%@demo.glit.edu.mx'
|
|
OR u.email LIKE '%@gamilit.com');
|
|
" | tr -d ' ')
|
|
|
|
if [ "$UNLINKED" -gt 0 ]; then
|
|
echo "⚠️ Advertencia: $UNLINKED usuarios sin perfil"
|
|
else
|
|
echo "✅ Todos los usuarios tienen perfil vinculado"
|
|
fi
|
|
|
|
echo ""
|
|
echo "════════════════════════════════════════════════════════════════"
|
|
echo " ✅ CARGA COMPLETADA"
|
|
echo "════════════════════════════════════════════════════════════════"
|
|
echo ""
|
|
echo "📊 Resumen:"
|
|
echo " Usuarios cargados: $USERS_COUNT"
|
|
echo " Profiles cargados: $PROFILES_COUNT"
|
|
echo " Sin vincular: $UNLINKED"
|
|
echo ""
|
|
echo "📝 Para ver detalles, ejecutar:"
|
|
echo " bash scripts/verify-users.sh"
|
|
echo ""
|