# Configuración de Datos Iniciales - SIF Guatemala V1.0

## Descripción

Este documento describe el proceso de población de la base de datos con datos iniciales para el Sistema de Inventario Forestal de Guatemala V1.0.

## Archivos Creados

### 1. `database/populate_initial_data.php`
Script principal para poblar la base de datos con:
- **Especies forestales**: 75+ especies comunes de Guatemala organizadas por categorías
- **Configuraciones del sistema**: 30+ configuraciones iniciales
- **Datos de prueba**: Usuarios, proyectos y rodales para desarrollo
- **Validación de integridad**: Verificaciones automáticas de datos

### 2. `database/migrations.php`
Sistema de migración para actualizaciones futuras:
- **Versionado**: Control de versiones de base de datos
- **Migraciones**: Scripts para actualizar esquema
- **Rollback**: Capacidad de revertir cambios
- **Estado**: Seguimiento de migraciones aplicadas

### 3. `database/especies_guatemala.sql`
Catálogo completo de especies forestales de Guatemala:
- **Coníferas**: Pinos, cipreses, pinabete (10 especies)
- **Latifoliadas de bosque húmedo**: Cedro, caoba, laurel (10 especies)
- **Latifoliadas de bosque seco**: Cocobolo, hormigo, matilisguate (10 especies)
- **Especies de bosque nuboso**: Encino, aliso, liquidámbar (10 especies)
- **Plantaciones comerciales**: Eucalipto, teca, melina (10 especies)
- **Especies frutales**: Chicozapote, ceiba, amate (10 especies)
- **Manglares**: Mangle rojo, negro, blanco (4 especies)
- **Bambúes y palmas**: Guadua, pacaya, corozo (5 especies)
- **Medicinales**: Pimienta gorda, canela, orégano (5 especies)

### 4. `test_initial_data.php`
Script de validación completa:
- **Estructura de base de datos**: Verificación de tablas, columnas, índices
- **Datos de especies**: Validación de catálogo completo
- **Configuraciones**: Verificación de parámetros del sistema
- **Integridad referencial**: Validación de relaciones entre tablas
- **Restricciones**: Prueba de constraints y validaciones
- **Vistas y triggers**: Verificación de objetos de base de datos

## Instrucciones de Uso

### Paso 1: Preparar el Entorno
```bash
# Asegurar que MySQL esté ejecutándose
sudo service mysql start

# Verificar conexión
mysql -u root -p -e "SELECT 1"
```

### Paso 2: Ejecutar Población de Datos
```bash
# Ejecutar script principal
php database/populate_initial_data.php

# Verificar con script de pruebas
php test_initial_data.php
```

### Paso 3: Cargar Especies Adicionales (Opcional)
```bash
# Si se necesita recargar solo las especies
mysql -u root -p sif_guatemala < database/especies_guatemala.sql
```

### Paso 4: Verificar Migraciones
```bash
# Ver estado de migraciones
php database/migrations.php status

# Ejecutar migraciones pendientes
php database/migrations.php migrate
```

## Datos Insertados

### Especies Forestales (75+ especies)
- **Coníferas**: Especies nativas de pino, ciprés y pinabete
- **Latifoliadas comerciales**: Especies de alto valor comercial
- **Especies nativas**: Flora autóctona de Guatemala
- **Plantaciones**: Especies para reforestación comercial
- **Ecosistemas especiales**: Manglares, bosque nuboso

### Configuraciones del Sistema (30+ configuraciones)
```
sistema_version: 1.0.0
max_file_size: 5242880 (5MB)
session_timeout: 86400 (24 horas)
gps_precision: 6 decimales
dap_max_alert: 200 cm
altura_max_alert: 50 m
sync_batch_size: 100 registros
offline_storage_days: 30 días
```

### Usuarios de Prueba
- **Administrador**: admin@test.com / admin123
- **Regente**: regente@test.com / regente123
- **Técnico**: tecnico@test.com / tecnico123

### Proyectos de Prueba
- **Inventario Forestal Petén Norte**: Finca El Bosque
- **Plan de Manejo Quetzaltenango**: Finca Los Pinos

## Validaciones Implementadas

### 1. Integridad de Datos
- ✅ Verificación de especies mínimas (20+)
- ✅ Configuraciones requeridas (25+)
- ✅ Relaciones entre tablas
- ✅ Constraints de base de datos

### 2. Estructura de Base de Datos
- ✅ Existencia de todas las tablas
- ✅ Columnas requeridas
- ✅ Índices de rendimiento
- ✅ Vistas de reportes
- ✅ Triggers de auditoría

### 3. Datos de Especies
- ✅ Especies requeridas por INAB
- ✅ Nombres científicos únicos
- ✅ Nombres comunes completos
- ✅ Estado activo/inactivo

### 4. Configuraciones del Sistema
- ✅ Parámetros críticos
- ✅ Valores por defecto válidos
- ✅ Descripciones completas
- ✅ Formato de versión

## Migración y Actualizaciones Futuras

### Sistema de Versionado
El sistema utiliza versionado semántico (MAJOR.MINOR.PATCH):
- **MAJOR**: Cambios incompatibles
- **MINOR**: Nuevas funcionalidades compatibles
- **PATCH**: Correcciones de errores

### Migraciones Disponibles
- **v1.0.1**: Campos de auditoría
- **v1.0.2**: Tabla de logs
- **v1.0.3**: Índices adicionales
- **v1.1.0**: Coordenadas de rodales
- **v1.2.0**: Mediciones múltiples

### Comandos de Migración
```bash
# Ver estado actual
php database/migrations.php status

# Migrar a versión específica
php database/migrations.php migrate 1.1.0

# Revertir migración
php database/migrations.php rollback 1.0.2
```

## Resolución de Problemas

### Error de Conexión a Base de Datos
```bash
# Verificar servicio MySQL
sudo service mysql status
sudo service mysql start

# Verificar credenciales en config.php
# Verificar que la base de datos existe
mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS sif_guatemala"
```

### Error de Permisos
```bash
# Dar permisos al usuario
mysql -u root -p -e "GRANT ALL PRIVILEGES ON sif_guatemala.* TO 'root'@'localhost'"
mysql -u root -p -e "FLUSH PRIVILEGES"
```

### Especies No Insertadas
```bash
# Verificar tabla especies
mysql -u root -p sif_guatemala -e "SELECT COUNT(*) FROM especies"

# Recargar especies
mysql -u root -p sif_guatemala < database/especies_guatemala.sql
```

### Configuraciones Faltantes
```bash
# Verificar configuraciones
mysql -u root -p sif_guatemala -e "SELECT COUNT(*) FROM configuracion"

# Re-ejecutar población
php database/populate_initial_data.php
```

## Estadísticas Esperadas

Después de ejecutar correctamente la población de datos:

```
Tablas:
- usuarios: 3+ registros (usuarios de prueba)
- especies: 75+ registros (especies forestales)
- configuracion: 30+ registros (configuraciones)
- proyectos: 2+ registros (proyectos de prueba)
- rodales: 6+ registros (3 por proyecto)

Validaciones:
- Todas las pruebas deben pasar (100%)
- Sin errores de integridad referencial
- Todas las constraints funcionando
- Índices creados correctamente
```

## Mantenimiento

### Backup Antes de Cambios
```bash
# Crear backup
mysqldump -u root -p sif_guatemala > backup_$(date +%Y%m%d_%H%M%S).sql
```

### Limpieza de Datos de Prueba
```bash
# Eliminar usuarios de prueba
mysql -u root -p sif_guatemala -e "DELETE FROM usuarios WHERE email LIKE '%@test.com'"
```

### Actualización de Especies
```bash
# Agregar nueva especie
mysql -u root -p sif_guatemala -e "INSERT INTO especies (nombre_cientifico, nombre_comun) VALUES ('Nueva especie', 'Nombre común')"
```

## Contacto y Soporte

Para problemas con la población de datos iniciales:
1. Verificar logs de error en `/logs/`
2. Ejecutar script de validación: `php test_initial_data.php`
3. Revisar configuración de base de datos en `api/config/config.php`
4. Consultar documentación de instalación en `SETUP_INSTRUCTIONS.md`