#!/bin/bash # ═══════════════════════════════════════════════════════════════════════════════ # SCRIPT: load-dev-seeds.sh # PROYECTO: ERP Construcción # DESCRIPCIÓN: Carga todos los seeds de desarrollo en orden # ═══════════════════════════════════════════════════════════════════════════════ set -e # Salir si hay error # Configuración DB_HOST="${DB_HOST:-localhost}" DB_PORT="${DB_PORT:-5432}" DB_NAME="${DB_NAME:-erp_construccion_db}" DB_USER="${DB_USER:-erp_admin}" DB_PASSWORD="${DB_PASSWORD:-erp_dev_2026}" # Colores para output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Directorio de seeds SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" echo -e "${BLUE}══════════════════════════════════════════════════════════════${NC}" echo -e "${BLUE} CARGA DE SEEDS DE DESARROLLO - ERP CONSTRUCCIÓN${NC}" echo -e "${BLUE}══════════════════════════════════════════════════════════════${NC}" echo "" echo -e "${YELLOW}Base de datos: ${NC}${DB_NAME}" echo -e "${YELLOW}Host: ${NC}${DB_HOST}:${DB_PORT}" echo -e "${YELLOW}Usuario: ${NC}${DB_USER}" echo "" # Función para ejecutar un seed run_seed() { local seed_file=$1 local seed_name=$(basename "$seed_file") if [ -f "$seed_file" ]; then echo -e "${YELLOW}→ Cargando: ${NC}${seed_name}..." PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -f "$seed_file" -q if [ $? -eq 0 ]; then echo -e "${GREEN} ✓ ${seed_name} cargado correctamente${NC}" else echo -e "${RED} ✗ Error al cargar ${seed_name}${NC}" exit 1 fi else echo -e "${RED} ✗ Archivo no encontrado: ${seed_name}${NC}" exit 1 fi } # Verificar conexión echo -e "${YELLOW}Verificando conexión a la base de datos...${NC}" PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -c "SELECT 1" > /dev/null 2>&1 if [ $? -ne 0 ]; then echo -e "${RED}✗ No se pudo conectar a la base de datos${NC}" echo -e "${RED} Verifica las credenciales y que el servidor esté ejecutándose${NC}" exit 1 fi echo -e "${GREEN}✓ Conexión exitosa${NC}" echo "" # Array de seeds en orden de ejecución # IMPORTANTE: El orden respeta dependencias FK # - 02b requiere: 02 (usuarios), 04 (fraccionamientos) # - 08 requiere: 02b (employees, puestos para EPP) # - 11 requiere: 04 (lotes para asignación) SEEDS=( "01-core-catalogs.sql" "02-users-profiles.sql" "03-empresa-tenant.sql" "04-proyectos-obras.sql" "02b-hr-employees.sql" "05-presupuestos.sql" "06-estimaciones.sql" "07-avances-calidad.sql" "08-hse.sql" "09-finanzas.sql" "10-activos-documentos.sql" "11-infonavit.sql" ) # Ejecutar seeds echo -e "${BLUE}Iniciando carga de seeds...${NC}" echo "" TOTAL=${#SEEDS[@]} CURRENT=0 for seed in "${SEEDS[@]}"; do CURRENT=$((CURRENT + 1)) echo -e "${BLUE}[${CURRENT}/${TOTAL}]${NC}" run_seed "${SCRIPT_DIR}/${seed}" echo "" done echo -e "${BLUE}══════════════════════════════════════════════════════════════${NC}" echo -e "${GREEN} ✓ TODOS LOS SEEDS CARGADOS EXITOSAMENTE${NC}" echo -e "${BLUE}══════════════════════════════════════════════════════════════${NC}" echo "" echo -e "${YELLOW}Usuarios demo disponibles:${NC}" echo " - admin@demo.com / Demo2026! (Super Admin)" echo " - director@demo.com / Demo2026! (Director)" echo " - gerente1@demo.com / Demo2026! (Gerente Obra)" echo " - residente1@demo.com / Demo2026! (Residente)" echo "" echo -e "${YELLOW}Proyectos demo:${NC}" echo " - Residencial Las Palmas (horizontal)" echo " - Torre Diamante (vertical)" echo " - Plaza Central (comercial)" echo "" echo -e "${YELLOW}Datos adicionales:${NC}" echo " - 15 empleados HR con asignación a obras" echo " - 7 derechohabientes INFONAVIT" echo " - EPP asignado y matriz puesto-EPP" echo ""