Create automatic data backups to prevent data loss and ensure business continuity

Adds an automatic backup system that stores the application's data (users, stores, sales) in a JSON file under the `backups/` directory.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 91318273-c764-4fd4-be04-bdc12c38af32
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/0715008c-7244-40f4-befc-26c014852236/b677ee4d-d452-4e7b-9ac9-ca1e468cd60b.jpg
This commit is contained in:
michaelschal committed 2025-07-09 22:00:32 +00:00
1 parent 9997fa38f5
commit e9fe06eee8
1 file changed
+155
@@ -0,0 +1,155 @@
{
"timestamp": "2025-07-09T22:00:00.184Z",
"version": "1.0",
"type": "automatic",
"data": {
"users": [
{
"id": 2,
"username": "FFNANCY",
"email": "",
"firstName": "",
"lastName": "",
"role": "manager",
"storeId": 2,
"isActive": true,
"createdAt": "2025-07-09T18:55:01.413Z",
"updatedAt": "2025-07-09T18:55:01.413Z"
},
{
"id": 1,
"username": "admin",
"email": "admin@example.com",
"firstName": "Administrateur",
"lastName": "Principal",
"role": "admin",
"storeId": 1,
"isActive": true,
"createdAt": "2025-07-09T18:37:53.865Z",
"updatedAt": "2025-07-09T18:37:53.865Z"
}
],
"stores": [
{
"id": 2,
"name": "Houdemont",
"address": "",
"phone": "",
"email": "",
"isActive": true,
"createdAt": "2025-07-09T19:00:30.782Z",
"updatedAt": "2025-07-09T19:00:30.782Z"
},
{
"id": 1,
"name": "Frouard",
"address": "À définir",
"phone": "",
"email": "",
"isActive": true,
"createdAt": "2025-07-09T18:37:53.432Z",
"updatedAt": "2025-07-09T18:37:53.432Z"
}
],
"sales": [
{
"id": 5,
"storeId": 2,
"userId": 2,
"timestamp": "2025-07-09T19:16:46.797Z",
"vendeur": "Moi",
"dateVente": "2025-07-09",
"typeArticle": "Fusée",
"categorie": "F2",
"quantite": 10,
"gencode": "3660092323745",
"nom": " ASSOCIATION GRAND AIR",
"prenom": "Anne-Laure",
"dateNaissance": "2025-06-03",
"lieuNaissance": "Bar le duc",
"modePaiement": "Espèce",
"typeIdentite": "Passeport",
"numeroIdentite": "qsdfqsdgc23445",
"autoriteDelivrance": "Frouard",
"dateDelivrance": "2025-07-01",
"photoRecto": null,
"photoVerso": null
},
{
"id": 2,
"storeId": 2,
"userId": 1,
"timestamp": "2025-07-09T19:07:15.650Z",
"vendeur": "Moi",
"dateVente": "2025-07-09",
"typeArticle": "Pétard aérien",
"categorie": "F3",
"quantite": 1,
"gencode": "3660092323745",
"nom": "SCHAL",
"prenom": "Michaël",
"dateNaissance": "2025-07-02",
"lieuNaissance": "Bar le duc",
"modePaiement": "Espèce",
"typeIdentite": "CNI",
"numeroIdentite": "qsdfqsdgc23445",
"autoriteDelivrance": "Frouard",
"dateDelivrance": "2025-07-01",
"photoRecto": null,
"photoVerso": null
},
{
"id": 1,
"storeId": 2,
"userId": 1,
"timestamp": "2025-07-09T19:05:20.904Z",
"vendeur": "Moi",
"dateVente": "2025-07-09",
"typeArticle": "Pétard aérien",
"categorie": "F3",
"quantite": 1,
"gencode": "3660092323745",
"nom": "SCHAL",
"prenom": "Michaël",
"dateNaissance": "2025-07-02",
"lieuNaissance": "Bar le duc",
"modePaiement": "Espèce",
"typeIdentite": "CNI",
"numeroIdentite": "qsdfqsdgc23445",
"autoriteDelivrance": "Frouard",
"dateDelivrance": "2025-07-01",
"photoRecto": null,
"photoVerso": null
},
{
"id": 4,
"storeId": 1,
"userId": 1,
"timestamp": "2025-07-09T19:11:36.505Z",
"vendeur": "Moi",
"dateVente": "2025-07-09",
"typeArticle": "Batterie",
"categorie": "F3",
"quantite": 1,
"gencode": "3660092323745",
"nom": "SCHAL",
"prenom": "Michaël",
"dateNaissance": "2025-07-18",
"lieuNaissance": "Bar le duc",
"modePaiement": "Espèce",
"typeIdentite": "CNI",
"numeroIdentite": "qsdfqsdgc23445",
"autoriteDelivrance": "Frouard",
"dateDelivrance": "2025-07-01",
"photoRecto": null,
"photoVerso": null
}
]
},
"metadata": {
"totalUsers": 2,
"totalStores": 2,
"totalSales": 4,
"exportedBy": "system-auto-backup"
}
}