feat: add BackupCard component and corresponding Backup model to enhance settings functionality and data management
This commit is contained in:
88
docs/BACKUP_SYSTEM.md
Normal file
88
docs/BACKUP_SYSTEM.md
Normal file
@@ -0,0 +1,88 @@
|
||||
# Système de Sauvegarde Automatique
|
||||
|
||||
## Vue d'ensemble
|
||||
|
||||
Le système de sauvegarde automatique permet de sauvegarder périodiquement votre base de données SQLite avec une rotation automatique limitée à 10 sauvegardes.
|
||||
|
||||
## Fonctionnalités
|
||||
|
||||
- ✅ Sauvegardes périodiques automatiques (quotidienne, hebdomadaire, mensuelle)
|
||||
- ✅ Rotation automatique (maximum 10 sauvegardes)
|
||||
- ✅ Sauvegardes manuelles à la demande
|
||||
- ✅ Restauration de sauvegardes
|
||||
- ✅ Configuration via l'interface des paramètres
|
||||
- ✅ Métadonnées stockées dans la base de données
|
||||
|
||||
## Configuration
|
||||
|
||||
### Via l'interface
|
||||
|
||||
1. Allez dans **Paramètres** → **Sauvegardes automatiques**
|
||||
2. Activez les sauvegardes automatiques
|
||||
3. Choisissez la fréquence (quotidienne, hebdomadaire, mensuelle)
|
||||
4. Les sauvegardes seront créées automatiquement selon la fréquence choisie
|
||||
|
||||
### Sauvegarde manuelle
|
||||
|
||||
Cliquez sur le bouton **"Créer une sauvegarde"** dans la section des sauvegardes.
|
||||
|
||||
## Planification automatique
|
||||
|
||||
### Sur Vercel
|
||||
|
||||
Si vous déployez sur Vercel, le fichier `vercel.json` configure automatiquement un cron job qui vérifie et crée les sauvegardes quotidiennement à 2h du matin.
|
||||
|
||||
### En local ou autre hébergement
|
||||
|
||||
Pour exécuter les sauvegardes automatiques, vous pouvez :
|
||||
|
||||
1. **Utiliser un cron job système** :
|
||||
```bash
|
||||
# Exécuter tous les jours à 2h du matin
|
||||
0 2 * * * cd /chemin/vers/projet && tsx scripts/run-backup.ts
|
||||
```
|
||||
|
||||
2. **Appeler l'endpoint API directement** :
|
||||
```bash
|
||||
curl -X POST http://localhost:3000/api/backups/auto
|
||||
```
|
||||
|
||||
3. **Utiliser un service de planification externe** (comme GitHub Actions, etc.) qui appelle périodiquement `/api/backups/auto`
|
||||
|
||||
## Structure des fichiers
|
||||
|
||||
- **Sauvegardes** : `prisma/backups/backup-YYYY-MM-DDTHH-mm-ss.db`
|
||||
- **Paramètres** : `prisma/backup-settings.json`
|
||||
- **Métadonnées** : Table `Backup` dans la base de données
|
||||
|
||||
## API Endpoints
|
||||
|
||||
- `GET /api/backups` - Liste toutes les sauvegardes
|
||||
- `POST /api/backups` - Créer une sauvegarde manuelle
|
||||
- `DELETE /api/backups/[id]` - Supprimer une sauvegarde
|
||||
- `POST /api/backups/[id]/restore` - Restaurer une sauvegarde
|
||||
- `GET /api/backups/settings` - Obtenir les paramètres
|
||||
- `PUT /api/backups/settings` - Mettre à jour les paramètres
|
||||
- `POST /api/backups/auto` - Endpoint pour les sauvegardes automatiques (appelé par le cron)
|
||||
|
||||
## Rotation des sauvegardes
|
||||
|
||||
Le système garde automatiquement les 10 sauvegardes les plus récentes. Les sauvegardes plus anciennes sont supprimées automatiquement lors de la création d'une nouvelle sauvegarde.
|
||||
|
||||
## Restauration
|
||||
|
||||
⚠️ **Attention** : La restauration d'une sauvegarde remplace complètement votre base de données actuelle. Une sauvegarde de sécurité est créée automatiquement avant la restauration.
|
||||
|
||||
Pour restaurer une sauvegarde :
|
||||
1. Allez dans **Paramètres** → **Sauvegardes automatiques**
|
||||
2. Cliquez sur l'icône de restauration (flèche circulaire) à côté de la sauvegarde souhaitée
|
||||
3. Confirmez la restauration
|
||||
4. La page sera rechargée automatiquement après la restauration
|
||||
|
||||
## Notes techniques
|
||||
|
||||
- Les sauvegardes sont des copies complètes du fichier SQLite
|
||||
- La taille des sauvegardes dépend de la taille de votre base de données
|
||||
- Les sauvegardes sont stockées localement dans le dossier `prisma/backups/`
|
||||
- Les métadonnées (nom, taille, date) sont stockées dans la table `Backup` de la base de données
|
||||
|
||||
Reference in New Issue
Block a user