Interprétation prudente
Données manquantes et stock inconnu : ce qu’un comparateur peut réellement conclure
Une méthode fail-closed pour distinguer absence d’observation, prix expiré, produit non comparable et stock non qualifié.
L’absence de donnée est une information sur le système
Quand aucun prix ne s’affiche, le système sait seulement qu’il n’a pas d’observation admissible pour le produit, le point de vente, le canal et la fenêtre retenus. Il ne connaît pas forcément l’état du rayon.
Une interface honnête explique la cause technique connue sans inventer la cause métier. « Aucune observation courante » est différent de « indisponible en magasin ».
États à distinguer
| État | Sens | Affichage |
|---|---|---|
| Aucune observation | Rien d’admissible dans le périmètre | Pas de classement |
| Observation expirée | Ancien fait conservé | Historique, pas courant |
| Produit ambigu | Identité insuffisante | À qualifier |
| Non comparable | Différence déterminante | Groupe séparé |
| Stock inconnu | Aucune source de disponibilité | Ne pas conclure |
| Erreur de source | Import invalide ou indisponible | Fail-closed |
Pourquoi zéro est dangereux
Remplacer une valeur absente par zéro crée un faux prix ou une fausse quantité. Dans un panier, cela avantage artificiellement le magasin qui possède le moins de données.
Utilisez une valeur absente typée et excluez-la du calcul concerné. Affichez le nombre de lignes comparables et manquantes à côté du résultat.
Comparer un panier incomplet
Deux totaux ne sont comparables que sur le même ensemble de lignes. Vous pouvez afficher un sous-total commun, puis les manques par magasin. Ne comparez pas le sous-total de huit produits au total de dix.
Le lecteur peut décider de chercher les lignes manquantes, choisir un substitut explicitement ou conserver plusieurs magasins. Le moteur ne choisit pas silencieusement.
Construire un panier comparableCas concret — prix ancien et stock inconnu
Un produit possède une observation de 2,40 € vieille de plusieurs semaines. La donnée peut rester dans l’historique avec sa date. Elle ne doit pas être classée comme prix courant et ne dit rien du stock aujourd’hui.
Le bon message est « observation ancienne, prix et disponibilité à vérifier ». Il évite à la fois la suppression de l’historique et une promesse trompeuse.
Comportement fail-closed
- Valider produit, unité, lieu et date.
- Refuser une valeur hors schéma.
- Écarter l’expiré du classement courant.
- Ne jamais imputer zéro.
- Afficher les lignes manquantes.
- Conserver la provenance de l’erreur.
- Proposer la source officielle ou l’application comme repli.
Formulations recommandées
- Aucune observation courante pour ce produit
- Stock inconnu
- Résultat limité aux magasins couverts
- Sous-total calculé sur les lignes communes
- Produit non classé faute d’identité suffisante
- Source temporairement indisponible
Absence, erreur, expiration et hors périmètre
Une case vide peut avoir plusieurs causes : la source ne couvre pas ce magasin, aucun relevé n’a été reçu, l’observation a expiré, le produit n’a pas été identifié, l’unité est invalide ou l’import a échoué. Regrouper ces causes sous « indisponible » fait croire à une information sur le rayon alors qu’il s’agit souvent d’une limite du jeu de données.
Le système conserve un statut typé et un message humain. Une ligne hors périmètre n’est pas un incident ; une erreur de schéma nécessite une correction ; une valeur expirée peut rester historique ; une source en panne appelle un repli. Aucun de ces états ne devient un prix zéro.
| Cause connue | Action du système | Message au lecteur |
|---|---|---|
| Hors couverture | Ne pas interroger/classer | Magasin non couvert |
| Aucun relevé | Laisser absent | Aucune observation courante |
| Expiré | Sortir du classement | Historique seulement |
| Identité ambiguë | Mettre en quarantaine | Produit à qualifier |
| Source en erreur | Conserver le dernier état sûr | Source indisponible |
| Stock non fourni | Ne pas déduire | Stock inconnu |
Pourquoi une preuve de prix ne prouve pas le stock
Une étiquette ou un ticket établit qu’un prix a été affiché ou payé dans un contexte passé. Le modèle Open Prices décrit des observations de prix et leurs preuves ; il ne constitue pas un inventaire temps réel. Un produit peut encore être présent, être en rupture, avoir changé de rayon ou ne plus être référencé sans que l’observation permette de choisir.
La disponibilité ne devient publiable que si une source dédiée fournit un état, un horodatage et un périmètre compréhensibles. Même alors, le délai entre publication et visite doit rester visible. Sans ce contrat, le seul terme correct est « stock inconnu ».
Calculer la couverture n/N
Pour un panier de N lignes, le comparateur compte combien de lignes possèdent une observation comparable dans chaque magasin. Une couverture 7/8 indique une ligne manquante ; elle ne peut pas devenir 87,5 % de certitude sur le total. Le sous-total de comparaison porte uniquement sur l’intersection commune aux magasins.
Exemple fictif : A couvre 7 produits sur 8 et B en couvre 5. Le sous-panier commun contient 5 lignes. Le résultat affiche le total de ces cinq lignes, puis trois exclusions nommées. Il ne proclame pas que le magasin au sous-total le plus bas propose le panier complet le moins cher.
- Compter les lignes demandées.
- Valider identité, unité et fraîcheur par magasin.
- Marquer chaque ligne présente, absente ou non comparable.
- Former l’intersection commune.
- Calculer seulement ce sous-panier.
- Afficher n/N et les exclusions à côté du montant.
Replis utiles sans inventer de résultat
Lorsqu’un produit exact manque, le site peut proposer trois actions distinctes : consulter la source officielle, élargir volontairement la fenêtre temporelle en affichant l’âge, ou choisir un substitut avec des critères explicites. Il ne remplace jamais automatiquement le produit par l’article le moins cher d’une catégorie.
Un résultat ancien peut aider à repérer un ordre de grandeur, à condition d’être séparé du courant. Un substitut peut aider à terminer un panier, à condition que la différence soit visible. Si aucune option n’est sûre, masquer le classement est un comportement fonctionnel, pas un échec d’interface.
Checklist d’un écran honnête
- Périmètre géographique et temporel visible
- Date propre à chaque observation
- Couverture n/N affichée
- Lignes manquantes nommées
- Valeur absente jamais remplacée par zéro
- Stock inconnu distinct du prix absent
- Substitutions toujours consenties et identifiables
- Source ou repli proposés sans faux résultat
Limites et date
Cette méthode ne prédit pas les prix ni les stocks. Une donnée manquante peut devenir disponible après un nouveau relevé ; elle ne justifie aucune conclusion sur une enseigne.
Dernière révision humaine : 16 septembre 2026.
Sources
- Documentation de l’API Open Prices · Open Food Facts · vérifié le 9 septembre 2026
- Open Prices — modèle de données principal · Open Food Facts · vérifié le 16 septembre 2026
- L’information sur les prix · DGCCRF · vérifié le 9 septembre 2026
- Code officiel géographique 2026 · Insee · vérifié le 9 septembre 2026
- Minimiser les données collectées · CNIL · vérifié le 16 septembre 2026