Added export/import features
This commit is contained in:
41
README.md
41
README.md
@@ -17,6 +17,47 @@ npm run check # svelte-check
|
||||
npm run build # production build into dist/
|
||||
```
|
||||
|
||||
## Exporter et importer les données
|
||||
|
||||
Dans **Réglages → Données**, **Exporter les données** télécharge un fichier
|
||||
`timelog-AAAA-MM-JJ.json`. Il contient toutes les journées conservées, leurs postes
|
||||
et les réglages enregistrés. L'export fonctionne hors ligne et ne modifie pas les
|
||||
données de l'appareil. Les identifiants internes des postes sont recréés à l'import.
|
||||
|
||||
Pour restaurer une sauvegarde, choisissez **Importer un fichier…** puis vérifiez
|
||||
le nom du fichier, les compteurs et les éventuels ajustements signalés. Deux modes
|
||||
sont disponibles :
|
||||
|
||||
- **Fusionner** ajoute seulement les dates absentes. Une date déjà présente est
|
||||
conservée intégralement, même si le fichier contient une autre version de ses
|
||||
postes. Les réglages locaux sont conservés. Importer deux fois le même fichier
|
||||
ne crée pas de doublons.
|
||||
- **Remplacer tout** demande une confirmation, puis remplace toutes les journées,
|
||||
tous les postes et les réglages, y compris une journée locale en cours. Si le
|
||||
fichier ne contient pas de réglages, les valeurs par défaut sont rétablies.
|
||||
|
||||
Les journées importées sont enregistrées comme terminées. Pour une journée
|
||||
exportée en cours, le dernier poste est arrêté à l'heure de l'export : le temps
|
||||
écoulé est conservé. Les intervalles sans travail déjà présents sont conservés.
|
||||
Une sauvegarde vide est valide et peut servir à restaurer un appareil vide.
|
||||
|
||||
Le format JSON est identifié par `format: "timelog-export"` et `version: 1`.
|
||||
Les fichiers étrangers, versions non prises en charge, dates en double et réglages
|
||||
invalides sont refusés. Les postes inutilisables et les corrections de plages
|
||||
horaires sont signalés avant confirmation. La limite de taille est de 20 Mo.
|
||||
L'écriture est transactionnelle : un échec annule le remplacement ou la fusion
|
||||
dans son intégralité. Le récapitulatif, le thème et les suggestions sont ensuite
|
||||
actualisés sans recharger la page.
|
||||
|
||||
L'import ne déclenche pas immédiatement de purge. La durée de conservation
|
||||
s'applique de nouveau à la prochaine ouverture ou au changement de jour ; le
|
||||
bouton **Purger maintenant** reste disponible.
|
||||
|
||||
Les tests d'import/export couvrent le format, les réglages, la fidélité des durées,
|
||||
les fichiers invalides, la fusion, le remplacement et l'annulation transactionnelle
|
||||
sur une IndexedDB simulée. `src/lib/fixtures/backup.json` est le jeu d'essai fourni ;
|
||||
il n'est pas publié avec l'application.
|
||||
|
||||
In dev the console exposes `timelog.seed()` to generate 20 days of realistic history
|
||||
(useful for exercising the suggestion engine) and `timelog.wipe()` to clear it.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user