feat(data): bootstrap premier lancement — téléchargement des données depuis le registry #13
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
CyrilLeblanc/gresit#13
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Bilan de réalisation
Terminé, mergé sur main (
defa938+83aaa16) et validé sur device (install fraîche : uninstall → installDebug → bootstrap → téléchargement réel depuis le registry → map avec données du 23 août, zéro crash).Livré
data/api/StaticDataRegistryClient.kt— client OkHttp streaming (8 KB chunks, throttle 50 ms) : manifest + download avec progression octets, erreurs typées (Offline/Server/CorruptData), réutilise l'OkHttpClient partagé.domain/BootstrapStaticData.kt— use case pur : check DB → manifest → download → sha256 → parse → import atomique existant (transaction + sentinel en dernier, inchangé). ÉtatsBootstrapStateexhaustifs.ui/bootstrap/—BootstrapViewModel(viewModelScope, survit à la rotation, retry idempotent) +BootstrapScreen(2 étapes, barre déterminée/indéterminée, erreurs typées + Réessayer, keepScreenOn).MIGRATION_4_5ajoutegeneratedAt TEXT(nullable) àdata_version— les installs existantes migrent sans re-import, sentinelvaluelue depuis le JSON (v2).ui/TransitApp.kt:MainTransitApp(et tous les polling) ne se composent qu'aprèsReady.StaticDataLoader; renommageBundledData→PublishedData; workflow CI dépouillé de l'étape de commit (registry = source de vérité unique).Écart au critère « APK ≥ 2 Mo plus léger »
Mesuré : −494 Ko en release (92,8 → 92,8 Mo en debug à padding ZIP près). Le critère supposait le JSON non compressé dans l'APK ; en réalité il déflate à ~80 %. Le contenu non compressé baisse bien de 2 478 510 o (vérifié par entrée ZIP). Critère reformulé en pratique : asset absent de l'APK ✓.
Non vérifié sur device (faute de manip dédiée)
Mode avion, kill pendant download/import, rotation pendant téléchargement — couverts par construction (ViewModel scope, transaction atomique, sha256 avant parse) et par la relecture de code, mais pas exécutés manuellement.