v1.7.0 : sauvegarde automatique quotidienne (opt-in) + unités des axes
AUTO-BACKUP JOURNALIER (en plus de l'export manuel, inchangé) :
- AppSettings : enabled / treeUri (SAF persisté) / keep (1..30, défaut 7) /
lastRun ; BackupManager.writeAutoBackup : tree URI → createDocument d'un
fichier horodaté (ExportFileNames.autoBackupFileName — signature
LocalDateTime, règle anti-#48) → écriture via writeBackup TEL QUEL
(leçon #45) → purge par AutoBackupRetention (PURE, testée : ne touche
JAMAIS exports manuels/logs/étrangers, keep clampé ≥ 1).
- AutoBackupWorker + AutoBackupScheduler (pattern AlertWorker) : périodique
24 h (KEEP au démarrage, no-op si désactivé), runNow à l'activation
(premier backup immédiat), statut dernier run persisté + AppLog ;
proguard : -keep explicite du worker (réflexion WorkManager, leçon #64).
- Paramètres : carte « Sauvegarde automatique quotidienne » — switch (ON
sans dossier → picker SAF), dossier persisté (takePersistableUriPermission),
nom lisible (folderDisplayName), copies conservées, statut OK/ÉCHEC.
- Validé émulateur §16.ter (APK release + données réelles seedées) : dossier
Download/HormoneTrack choisi via le picker SAF, premier backup v2 écrit
immédiatement (3 traitements/52 doses/26 labs, importable), rétention
keep=2 vérifiée (3 vieux autos supprimés, export manuel intact), statut
« OK (date) », 0 crash.
UNITÉS DES AXES (remontée « jamais ajoutées depuis v1.0 ») : pg/mL (E2,
gauche) / ng/mL (T, droite) au sommet des colonnes de labels (padTop
12→26 dp) — validé émulateur (screencap). Portées web (v1.7.0 web sync).
9 nouveaux tests (200 verts / 177 sans données locales) + lint vert.
versionCode 33 / versionName 1.7.0.