---
description: Estratégica de Respaldo y Snapshot Integral (Git + Base de Datos Mirror)
---
# Estrategia de Respaldo y Snapshot Integral

Este procedimiento debe ejecutarse al final de cada sesión de desarrollo o antes de realizar cambios estructurales de alto riesgo. Garantiza un punto de retorno (rollback) completo de la aplicación y sus datos.

## Paso 1: Escaneo Exhaustivo de Tablas

Antes de generar el snapshot de datos, se debe asegurar que el comando de espejo cubra todas las tablas actuales.

- Revisar `app/Models/` para detectar nuevos modelos.
- Revisar `database/migrations/` para detectar nuevas tablas de sistema o de paquetes externos.
- Si hay tablas nuevas, agregarlas al array `$tables` en: [MirrorDatabase.php](file:///c:/laragon/www/sgmi/app/Console/Commands/MirrorDatabase.php)

## Paso 2: Snapshot de la Aplicación (Git)

Consolidar los archivos del sistema para asegurar la integridad de la lógica.

- Ejecutar `git status` para ver cambios locales.
- Stagear cambios: `git add .`
- Commitear con mensaje descriptivo: `git commit -m "feat/fix: descripción de cambios del día"`

## Paso 3: Generación del Snapshot de Datos (Seeder)

Crear el espejo físico de la base de datos en formato PHP.

- Ejecutar el comando de espejo: `php artisan db:mirror`
- Verificar que el archivo [DatabaseMirrorSeeder.php](file:///c:/laragon/www/sgmi/database/seeders/DatabaseMirrorSeeder.php) se haya actualizado correctamente.

## Resumen de Tablas Maestras (Para verificación)

El sistema debe respaldar al menos:

- **Core**: users, roles, permissions, model_has_..., role_has_...
- **Negocio**: formations, access_blocks.
- **Correo**: email_templates, email_logs.
- **Procesamiento**: import_logs, mass_update_logs, import_batch_details.

> [!TIP]
> En caso de emergencia total, se puede restaurar la base de datos ejecutando:
> `php artisan db:seed --class=DatabaseMirrorSeeder`
