# Sauvegardes & restauration

## Base de données
- **Sauvegarde quotidienne automatisée** : commande `php artisan db:backup` (service `DatabaseBackupService`) — `mysqldump` vers `storage/app/backups/` puis purge selon la rétention.
- **Déclenchement** :
  - planificateur Laravel : `Schedule::command('db:backup')->dailyAt('03:00')` (cf. `routes/console.php`) ;
  - sur **mutualisé sans cron CLI** : le déclencheur HTTP `/api/v1/tasks/import?token=…` (appelé toutes les heures) effectue **une** sauvegarde par jour automatiquement ;
  - manuel : bouton « Sauvegarder » dans le back-office (Super Admin → Base de données).
- **Rétention GFS** (`DatabaseBackupService::prune()`) : la plus récente de chacun des 7 derniers jours + 4 dernières semaines + 12 derniers mois.
- **Copie hors serveur** : à brancher (OVH Backup, S3, ou serveur distant) — `storage/app/backups/` n'est pas versionné.
- Avant chaque migration BDD : sauvegarde automatique (module Base de données).

## Fichiers
- Sauvegarder `storage/app/` (uploads) selon la même politique.

## Restauration
1. `mysql yggdrasil_bo < backup.sql`
2. Restaurer `storage/app/`.
3. `php artisan config:clear && php artisan migrate --force`.
- Test de restauration à valider au moins une fois par trimestre.

> Évolution possible : package `spatie/laravel-backup` pour ajouter l'archivage des fichiers + l'envoi distant chiffré en une étape.
