Repository navigation
Conversation
Le journal alimentaire ne suivait que les calories, saisies à la main. Il suit maintenant les protéines, glucides et lipides, alimentés par le scan du code-barres des produits. - `Meal` porte les trois macros, le code-barres et la quantité pesée ; migration Room 1 → 2 non destructive, les repas existants gardent leurs calories avec des macros à zéro. - `OpenFoodFacts` lit l'API v2 en lecture seule (User-Agent identifiant l'app, comme sa politique l'exige) ; les produits sont mis en cache dans Room, ce qui respecte la limite de 15 requêtes/min et permet de retrouver un produit déjà scanné hors ligne. - Écran de scan en CameraX + ML Kit groupé : pas de dépendance à Play Services, permission caméra demandée à l'usage, repli explicite vers la saisie manuelle quand le produit est inconnu, sans valeurs nutritionnelles, ou en cas de coupure réseau. - Objectifs de macros dans le profil, avancement affiché sur l'accueil et en tête du journal. - La saisie libre accepte des macros optionnelles : mieux vaut une ligne avec seulement des calories qu'un repas non enregistré. Le README annonçait « aucune donnée ne quitte le téléphone, pas de réseau » : ce n'est plus vrai, un code-barres scanné est envoyé à Open Food Facts. La promesse est corrigée et la portée exacte du réseau est documentée, licence ODbL des données incluse. Tests : calculs de portion, parsing des réponses de l'API et cas dégradés en unitaire ; parcours complet (recherche réseau, cache, enregistrement, agrégation des macros) en instrumenté sur appareil.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Le journal alimentaire ne suivait que les calories, saisies à la main. Il suit maintenant les protéines, glucides et lipides, alimentés par le scan du code-barres des produits.
Ce que ça change
Données —
Mealporte les trois macros, le code-barres et la quantité pesée. Migration Room 1 → 2 non destructive : les repas existants gardent leurs calories et se retrouvent avec des macros à zéro.Open Food Facts — lecture de l'API v2, sans authentification mais avec le User-Agent identifiant l'app que leur politique d'usage exige. Les produits sont mis en cache dans Room : ça respecte la limite de 15 requêtes/min/IP et permet de retrouver un produit déjà scanné hors ligne. Un seul appel HTTP, donc
HttpURLConnection— pas de client HTTP tiers embarqué.Scan — CameraX + ML Kit groupé, donc aucune dépendance à Play Services. Permission caméra demandée à l'usage, et repli explicite vers la saisie manuelle dans les trois cas d'échec : produit inconnu, produit sans valeurs nutritionnelles, coupure réseau.
Interface — quantité en grammes avec apport recalculé en direct, objectifs de macros dans le profil, avancement affiché sur l'accueil et en tête du journal. La saisie libre accepte des macros optionnelles : mieux vaut une ligne avec seulement des calories qu'un repas non enregistré.
La promesse du README a changé
Le README annonçait « aucune donnée ne quitte le téléphone, pas de réseau ». Ce n'est plus vrai : un code-barres scanné est envoyé à Open Food Facts avec l'adresse IP. La promesse est corrigée et la portée exacte du réseau documentée — rien d'autre ne sort, ni séances, ni repas, ni poids. La licence ODbL des données est mentionnée.
Tests
serving_size, parsing des réponses de l'API (complètes, partielles, absentes), repli kJ → kcalVérifié sur émulateur : la migration a été réellement exercée sur une base v1 existante, et l'API a réellement répondu (
Found(Nutella, 539 kcal, P 6.3, G 57.5, L 30.9, fromCache=false), puisfromCache=trueau second appel).Avant de fusionner
Un bug corrigé en route
Le premier
bindToLifecyclese trouvait dans leupdated'AndroidView, donc rejoué à chaque recomposition : la caméra s'ouvrait et se refermait en boucle et l'aperçu restait noir. Le binding est désormais fait une fois pour la vie de l'écran, avec libération explicite à la sortie.🤖 Generated with Claude Code