Décrire de manière reproductible les transformations appliquées au catalogue Open Food Facts, conformément à la voie prévue à la section 4.6(b) de l’ODbL 1.0, sans publier les comptes ni les contributions communautaires Notons.
Le dépôt public général de la méthode OFF permet de consulter le code et la documentation disponibles. Cette adresse de projet ne constitue pas, à elle seule, la preuve d’une génération active.
Entrée et périmètre
La source complète est l’export alimentaire officiel Open Food Facts au format TSV compressé. Le snapshot couvre tous les pays et toutes les catégories, sans limite métier Notons. Cette version de la méthode reconstruit une génération complète ; une éventuelle méthode différentielle devra être publiée et manifestée avant d’être utilisée pour une génération publique.
Une ligne dépourvue de code-barres valide ou de nom exploitable est rejetée et comptabilisée.
Étapes de reconstruction
Identifier la source
Télécharger l’archive officielle, relever son URL, sa date, sa taille et son empreinte SHA-256.
Fixer le code
Utiliser une URL HTTPS contenant la révision hexadécimale immuable du code de transformation et vérifier l’empreinte de chaque fichier normatif.
Créer la base dédiée
Initialiser une base PostgreSQL vide réservée à la projection Open Food Facts et appliquer ses migrations dans l’ordre.
Projeter par lots
Après une lecture séquentielle de contrôle du SHA-256, projeter l’archive en une passe, confirmer chaque offset source avec son lot de staging, puis activer par transactions de 100 000 produits au maximum.
Vérifier avant publication
Comparer compteurs, rejets et empreinte, construire les index nécessaires, analyser les statistiques puis activer atomiquement la génération.
Normalisations principales
- le code est lu depuis les champs code-barres connus, normalisé comme GTIN et stocké en texte pour conserver les zéros initiaux ;
- les chaînes sont nettoyées aux extrémités ; une chaîne vide devient une valeur absente, jamais un zéro ou une note implicite ;
- les listes sont nettoyées, dédupliquées sans tenir compte de la casse et bornées ;
- les nombres acceptent le point ou la virgule décimale et sont rejetés lorsqu’ils sont non finis ou hors plage ;
- les dates valides sont converties en UTC ISO-8601 ;
- à GTIN identique, la dernière occurrence valide de l’archive gagne ; rejouer la même source est idempotent.
Projection publiée à l’exécution
| Groupe | Informations conservées | Règle résumée |
|---|---|---|
| Identification | GTIN, nom, nom générique, marque, quantité, emballage | Premier champ OFF utilisable selon un ordre documenté. |
| Classement | Catégories, pays, magasins et lieux d’achat signalés | Nettoyage et listes bornées ; aucune promesse de disponibilité en temps réel. |
| Nutrition | Nutri-Score, énergie, lipides, glucides, sucres, fibres, protéines, sel et autres nutriments | Valeurs structurées par 100 g et, si présentes, par portion. |
| Environnement | Note et score environnementaux OFF | Valeurs reconnues uniquement ; absence conservée comme telle. |
| Source et images | URL de la fiche OFF et URL HTTPS de l’image de face | Hôtes Open Food Facts autorisés seulement ; aucun octet d’image dans la base. |
| Fraîcheur | Dates de modification et de mise à jour OFF | Conversion en UTC ; à GTIN identique, la dernière occurrence valide dans l’ordre physique de l’archive est normative. |
Séparation et activation
La projection est stockée dans la base dédiée notons_off_catalog. L’importeur refuse tout autre nom de base et ne lit jamais le secret générique de Notons Core. Les comptes, profils, avis, notes, favoris, scans, signalements, propositions et photos privées restent dans la base Notons Core. Il n’existe ni clé étrangère ni copie automatique entre les deux domaines.
Le chargement se fait dans une génération non publiée. Chaque lot confirme atomiquement son offset dans l’archive. Lors d’une reprise, le flux gzip est reparcouru jusqu’à cet offset, mais les lignes confirmées ne sont ni remappées ni réécrites. La vue utilisée par l’application ne bascule qu’après la vérification finale et la construction des index nécessaires aux scans, aux recherches textuelles et aux catégories.
Preuves associées à chaque génération
- Dépôt public de la méthode
- Consulter le dépôt général
- Manifeste de reconstruction
- https://notons.eu/public-metadata/reconstruction-manifest.json
- Code source immuable
- https://github.com/ElPape77/notons-off-reconstruction/tree/c817e3d2fce960d6e6067662833013b20036119a
Le manifeste doit identifier l’archive source par URL, date, taille et SHA-256, la révision immuable utilisée, les empreintes des fichiers de transformation ainsi que les compteurs traités et rejetés. Le lien général ci-dessus ne remplace aucune de ces deux preuves, qui devront être renseignées avant d’affirmer publiquement qu’une génération précise est reproductible.
Ce que cette méthode ne publie pas
Elle ne fournit ni dump, ni endpoint de listing massif, ni sauvegarde privée. Elle ne contient aucune donnée communautaire Notons. Les sauvegardes du catalogue et de Notons Core restent privées et physiquement séparées.
Références : notice Open Food Facts, ODbL 1.0, DbCL 1.0.