# Scripts de Configuración

Esta carpeta contiene scripts para configurar e inicializar el sistema SLM Framework.

## 📋 Setup Inicial del Sistema

```bash
php setup-slm-super.php
```

**Propósito:** Configuración inicial del sistema SLM Framework

**Crea:**
- ✅ Perfil **SLM Super** (acceso completo a configuración)
- ✅ Módulos de configuración:
  - `config.users` - Gestión de usuarios
  - `config.profile` - Gestión de perfiles
  - `config.modules` - Registro de módulos
- ✅ Grupos de menú y estructura del sidebar
- ✅ Usuario administrador con perfil SLM Super

**Credenciales:**
- Email: `admin@example.com`
- Password: `admin123`

**Cuándo usar:**
- Primera instalación del sistema
- Después de resetear Elasticsearch
- Para crear el primer usuario administrador

---

## 📝 Descripción Detallada

### `setup-slm-super.php`

**Función principal:** `createSLMSuperProfile()`

**Proceso:**
1. Verifica conexión a Elasticsearch
2. Crea perfil SLM Super con ACL completo
3. Registra módulos de configuración (config.users, config.profile, config.modules)
4. Crea estructura de menú (simple_menu, dropdown_menu, group_menu)
5. Crea usuario administrador con perfil SLM Super

**Estructura de ACL creada:**
```json
{
  "GROUP_1": {
    "home.main": ["read", "create", "update", "delete"]
  },
  "GROUP_CONFIG": {
    "config.users": ["read", "create", "update", "delete"],
    "config.profile": ["read", "create", "update", "delete"],
    "config.modules": ["read", "create", "update", "delete"]
  }
}
```

**Salida:**
```
✓ Perfil SLM Super creado: [PROFILE_ID]
✓ Módulo config.users registrado: [MODULE_ID]
✓ Módulo config.profile registrado: [MODULE_ID]
✓ Módulo config.modules registrado: [MODULE_ID]
✓ Menú de configuración creado
✓ Usuario admin creado: [USER_ID]
```


## 🔧 Troubleshooting

### Error: "Connection refused" al ejecutar scripts

**Solución:**
```bash
# Verificar que Elasticsearch esté corriendo
curl http://localhost:9200

# Verificar configuración en config.slm
# ES_SERVER debe apuntar a tu instancia de ES
```

### Error: "Profile SLM Super already exists"

**Solución:**
Este error es normal si ya ejecutaste el script antes. Opciones:
1. Continuar (el script saltará la creación del perfil)
2. Eliminar el perfil existente y volver a ejecutar
3. Verificar que el usuario admin ya existe

---

## 🚀 Scripts Adicionales (Opcional)

### Crear Script Personalizado

Plantilla para crear tus propios scripts de setup:

```php
<?php

// Cargar configuración de SLM Framework
require_once __DIR__ . '/../appweb/slm.framework/system/config.slm';
require_once __DIR__ . '/../appweb/slm.framework/system/helpers.slm';
require_once __DIR__ . '/../appweb/slm.framework/system/slm_es_control.slm';

function myCustomSetup() {
    echo "🔧 Iniciando setup personalizado...\n";

    try {
        // Tu lógica aquí
        $data = [
            'name' => 'Mi Objeto',
            'status' => 'active',
            'slm' => [
                'type' => 'custom_type',
                'timestamp' => getTimestamp()
            ]
        ];

        $result = setNewObject($data);

        if (isset($result['_id'])) {
            echo "✓ Objeto creado: {$result['_id']}\n";
        } else {
            throw new Exception("Error al crear objeto");
        }

    } catch (Exception $e) {
        echo "✗ Error: " . $e->getMessage() . "\n";
        exit(1);
    }
}

// Ejecutar
myCustomSetup();
echo "\n✓ Setup completado\n";
```

---

## 📚 Referencias

- [Perfil SLM Super](../docs/es_MX/03-profile-user-module-menu.md)
- [Sistema de Permisos](../docs/es_MX/06-user-specific-permissions.md)
- [Guía Completa de Módulos](../docs/es_MX/05-modules-complete-guide.md)
- [Arquitectura del Sistema](../ARCHITECTURE.md)

---

## 🆘 Soporte

Para reportar problemas con los scripts:
1. Verificar logs de Elasticsearch
2. Verificar configuración en `config.slm`
3. Revisar la sección de Troubleshooting
4. Crear issue con detalles del error

---

**Última actualización:** 2026-01-22
