From 904801101b417773cd8d4fa574648741fb16f746 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Gigandet?= Date: Thu, 28 Nov 2024 16:55:20 +0100 Subject: [PATCH] feat: NOVA 4 attribute and knowledge panel improvements (#11035) Changes that were recommended by scientists for the U-TRANS study that will use the OFF app: - Added the number of ultra-processing markers for NOVA 4 directly in the NOVA 4 attribute description, to make it easier to differentiate foods that are slightly ultra-processed (e.g. just one flavour) and very ultra-processed with many markers - Added a recommendation to limit the consumption of NOVA 4 foods. Currently a bit hidden inside the NOVA knowledge panel, but we could decide to display it higher (without needing to open the NOVA panel) like we do for alcohol. ![image](https://github.com/user-attachments/assets/41d199c6-e822-4f63-8f14-4392d67b3912) ![image](https://github.com/user-attachments/assets/46497d8b-a228-4641-9c10-9783707638d8) --------- Co-authored-by: Pierre Slamich Co-authored-by: Open Food Facts Bot --- lib/ProductOpener/Attributes.pm | 24 +- lib/ProductOpener/KnowledgePanels.pm | 11 + po/common/common.pot | 21 + po/common/en.po | 25 +- po/common/fr.po | 22 +- .../health/ingredients/nova.tt.json | 18 + .../world/ultra_processed_foods.tt.json | 28 + tests/integration/api_v2_product_read.t | 2 +- tests/integration/api_v3_product_read.t | 2 +- .../get-attribute-groups-fr.json | 55 +- .../get-attribute-groups.json | 55 +- .../get-existing-product.json | 281 +++--- .../get-fields-all-knowledge-panels.json | 442 ++++++--- .../api_v2_product_read/get-fields-all.json | 281 +++--- ...attribute-groups-all-knowledge-panels.json | 552 +++++++---- ...edge-panels_excluded-environment_card.json | 129 ++- ...included-health_card-environment_card.json | 161 ++- .../api_v2_product_read/get-fields-raw.json | 281 +++--- .../get-knowledge-panels-fr.json | 166 +++- .../get-knowledge-panels.json | 161 ++- .../get-attribute-groups-fr.json | 65 +- .../get-attribute-groups.json | 65 +- .../get-existing-product-gs1-ai-data-str.json | 407 ++++---- .../get-existing-product-gs1-caret.json | 407 ++++---- .../get-existing-product-gs1-data-uri.json | 407 ++++---- .../get-existing-product-gs1-fnc1.json | 407 ++++---- .../get-existing-product-gs1-gs.json | 407 ++++---- ...et-existing-product-with-leading-zero.json | 407 ++++---- .../get-existing-product.json | 407 ++++---- .../get-fields-all-knowledge-panels.json | 789 ++++++--------- .../api_v3_product_read/get-fields-all.json | 407 ++++---- ...attribute-groups-all-knowledge-panels.json | 919 ++++++++---------- ...edge-panels_excluded-environment_card.json | 350 +++---- ...included-health_card-environment_card.json | 382 +++----- .../api_v3_product_read/get-fields-raw.json | 407 ++++---- .../get-knowledge-panels-fr.json | 387 +++----- .../get-knowledge-panels.json | 382 +++----- ...ted-attribute-groups-knowledge-panels.json | 2 +- .../data-quality.json | 2 +- .../no-data-quality.json | 2 +- .../crawler-access-category-facet-page.html | 4 +- .../crawler-access-product-page.html | 4 +- ...r-does-not-get-facet-knowledge-panels.html | 4 +- ...ormal-user-access-category-facet-page.html | 4 +- .../normal-user-access-nested-facet-page.html | 4 +- .../normal-user-access-product-page.html | 4 +- ...ormal-user-get-facet-knowledge-panels.html | 4 +- .../product_read/get-existing-product.html | 4 +- .../unknown_tags/country-france-exists.html | 4 +- .../unknown_tags/ingredient-apple-exists.html | 4 +- ...gredient-does-not-exist-but-not-empty.html | 4 +- .../web_html/fr-categories.html | 12 +- .../web_html/fr-index.html | 28 +- .../web_html/fr-product-2.html | 2 +- .../web_html/fr-product.html | 2 +- .../web_html/fr-search-results-cached.html | 8 +- .../web_html/fr-search-results-no-cache.html | 8 +- .../web_html/fr-search-results.html | 8 +- .../web_html/world-categories.html | 24 +- .../web_html/world-index-signedin.html | 52 +- .../web_html/world-index.html | 52 +- .../web_html/world-label-organic.html | 20 +- .../web_html/world-product.html | 4 +- .../web_html/world-search-results.html | 20 +- .../attributes/en-attributes.json | 5 +- .../attributes/en-maybe-vegan.json | 4 +- .../attributes/en-nova-groups-markers.json | 5 +- .../attributes/en-nutriscore.json | 4 +- 68 files changed, 4839 insertions(+), 5188 deletions(-) create mode 100644 templates/api/knowledge-panels/recommendations/health/world/ultra_processed_foods.tt.json diff --git a/lib/ProductOpener/Attributes.pm b/lib/ProductOpener/Attributes.pm index d9232c1c92fb1..cf8a9d39356ad 100644 --- a/lib/ProductOpener/Attributes.pm +++ b/lib/ProductOpener/Attributes.pm @@ -887,11 +887,27 @@ sub compute_attribute_nova ($product_ref, $target_lc) { $attribute_ref->{match} = $nova_groups_scores{$nova_group + 0}; # Make sure the key is a number if ($target_lc ne "data") { - $attribute_ref->{title} = sprintf(lang_in_other_lc($target_lc, "attribute_nova_group_title"), $nova_group); - $attribute_ref->{description} - = lang_in_other_lc($target_lc, "attribute_nova_" . $nova_group . "_description"); - $attribute_ref->{description_short} + # Instead of putting NOVA 4 in the title, we indicate what it is: "Ultra-processed foods" + # and we use the description to put the number of markers + # $attribute_ref->{title} = sprintf(lang_in_other_lc($target_lc, "attribute_nova_group_title"), $nova_group); + # NOVA 4 can still be seen in the logo. + $attribute_ref->{title} = lang_in_other_lc($target_lc, "attribute_nova_" . $nova_group . "_description_short"); + + # For NOVA 4, indicate the number of markers + if ($nova_group == 4) { + my $markers = deep_get($product_ref, qw/nova_groups_markers 4/); + if (defined $markers) { + my $markers_n = scalar @{$markers}; + if ($markers_n <= 1) { + $attribute_ref->{description_short} = lang_in_other_lc($target_lc, "attribute_nova_4_1_marker"); + } + else { + $attribute_ref->{description_short} + = f_lang_in_lc($target_lc, "f_attribute_nova_4_markers", {number => $markers_n}); + } + } + } } $attribute_ref->{icon_url} = "$static_subdomain/images/attributes/dist/nova-group-$nova_group.svg"; diff --git a/lib/ProductOpener/KnowledgePanels.pm b/lib/ProductOpener/KnowledgePanels.pm index 0ff6811561322..98f21e99ff9bf 100644 --- a/lib/ProductOpener/KnowledgePanels.pm +++ b/lib/ProductOpener/KnowledgePanels.pm @@ -1808,6 +1808,17 @@ sub create_recommendation_panels ($product_ref, $target_lc, $target_cc, $options {}, $product_ref, $target_lc, $target_cc, $options_ref); } } + + # NOVA 4 ultra-processed foods + if ((defined $product_ref->{nova_groups}) and ($product_ref->{nova_groups} eq "4")) { + + create_panel_from_json_template( + "recommendation_ultra_processed_foods", + "api/knowledge-panels/recommendations/health/world/ultra_processed_foods.tt.json", + {}, $product_ref, $target_lc, $target_cc, $options_ref + ); + } + return; } diff --git a/po/common/common.pot b/po/common/common.pot index 1964e5965b147..14bee72287cf5 100644 --- a/po/common/common.pot +++ b/po/common/common.pot @@ -4662,6 +4662,15 @@ msgctxt "attribute_nova_4_description_short" msgid "Ultra processed foods" msgstr "Ultra processed foods" +msgctxt "attribute_nova_4_1_marker" +msgid "1 ultra-processing marker" +msgstr "1 ultra-processing marker" + +# variable names between { } must not be translated +msgctxt "f_attribute_nova_4_markers" +msgid "{number} ultra-processing markers" +msgstr "{number} ultra-processing markers" + msgctxt "export_product_page" msgid "Export product to public database" msgstr "Export product to public database" @@ -7291,3 +7300,15 @@ msgstr "Beauty" msgctxt "product_type_product" msgid "Product" msgstr "Product" + +msgctxt "recommendation_limit_ultra_processed_foods_title" +msgid "Limit ultra-processed foods" +msgstr "Limit ultra-processed foods" + +msgctxt "recommendation_limit_ultra_processed_foods_subtitle" +msgid "Ultra-processed foods increase noncommunicable chronic disease risk" +msgstr "Ultra-processed foods increase noncommunicable chronic disease risk" + +msgctxt "recommendation_limit_ultra_processed_foods_text" +msgid "Several studies have found that a high consumption of ultra-processed foods is associated with an increased risk of noncommunicable chronic diseases, such as obesity, hypertension and diabetes." +msgstr "Several studies have found that a high consumption of ultra-processed foods is associated with an increased risk of noncommunicable chronic diseases, such as obesity, hypertension and diabetes." diff --git a/po/common/en.po b/po/common/en.po index 867e113817cf2..52db877696ab2 100644 --- a/po/common/en.po +++ b/po/common/en.po @@ -4678,8 +4678,17 @@ msgid "Processed foods" msgstr "Processed foods" msgctxt "attribute_nova_4_description_short" -msgid "Ultra processed foods" -msgstr "Ultra processed foods" +msgid "Ultra-processed foods" +msgstr "Ultra-processed foods" + +msgctxt "attribute_nova_4_1_marker" +msgid "1 ultra-processing marker" +msgstr "1 ultra-processing marker" + +# variable names between { } must not be translated +msgctxt "f_attribute_nova_4_markers" +msgid "{number} ultra-processing markers" +msgstr "{number} ultra-processing markers" msgctxt "export_product_page" msgid "Export product to public database" @@ -7280,3 +7289,15 @@ msgstr "Beauty" msgctxt "product_type_product" msgid "Product" msgstr "Product" + +msgctxt "recommendation_limit_ultra_processed_foods_title" +msgid "Limit ultra-processed foods" +msgstr "Limit ultra-processed foods" + +msgctxt "recommendation_limit_ultra_processed_foods_subtitle" +msgid "Ultra-processed foods increase noncommunicable chronic disease risk" +msgstr "Ultra-processed foods increase noncommunicable chronic disease risk" + +msgctxt "recommendation_limit_ultra_processed_foods_text" +msgid "Several studies have found that a high consumption of ultra-processed foods is associated with an increased risk of noncommunicable chronic diseases, such as obesity, hypertension and diabetes." +msgstr "Several studies have found that a high consumption of ultra-processed foods is associated with an increased risk of noncommunicable chronic diseases, such as obesity, hypertension and diabetes." diff --git a/po/common/fr.po b/po/common/fr.po index fee3069d03f05..bb5ea8457348d 100644 --- a/po/common/fr.po +++ b/po/common/fr.po @@ -4677,9 +4677,18 @@ msgid "Processed foods" msgstr "Aliments transformés" msgctxt "attribute_nova_4_description_short" -msgid "Ultra processed foods" +msgid "Ultra-processed foods" msgstr "Aliments ultra-transformés" +msgctxt "attribute_nova_4_1_marker" +msgid "1 ultra-processing marker" +msgstr "1 marqueur d'ultra-transformation" + +# variable names between { } must not be translated +msgctxt "f_attribute_nova_4_markers" +msgid "{number} ultra-processing markers" +msgstr "{number} marqueurs d'ultra-transformation" + msgctxt "export_product_page" msgid "Export product to public database" msgstr "Exporter le produit vers la base de données publique" @@ -7240,3 +7249,14 @@ msgctxt "attribute_repairability_index_france_bad_description_short" msgid "Bad repairability" msgstr "Mauvaise réparabilité" +msgctxt "recommendation_limit_ultra_processed_foods_title" +msgid "Limit ultra-processed foods" +msgstr "Limiter les aliments ultra-transformés" + +msgctxt "recommendation_limit_ultra_processed_foods_subtitle" +msgid "Ultra-processed foods increase chronic disease risk" +msgstr "Les aliments ultra-transformés augmentent le risque de maladies chroniques" + +msgctxt "recommendation_limit_ultra_processed_foods_text" +msgid "Several studies have found that a high consumption of ultra-processed foods is associated with an increased risk of noncommunicable chronic diseases, such as obesity, hypertension and diabetes." +msgstr "Plusieurs études ont montré qu'une consommation élevée d'aliments ultra-transformés est associée à un risque accru de maladies chroniques non transmissibles, telles que l'obésité, l'hypertension et le diabète." diff --git a/templates/api/knowledge-panels/health/ingredients/nova.tt.json b/templates/api/knowledge-panels/health/ingredients/nova.tt.json index 709bcd429447f..36b737c82d78a 100644 --- a/templates/api/knowledge-panels/health/ingredients/nova.tt.json +++ b/templates/api/knowledge-panels/health/ingredients/nova.tt.json @@ -8,12 +8,30 @@ [% SET nova_group = product.nova_group %] "icon_url": "[% static_subdomain %]/images/attributes/dist/nova-group-[% product.nova_group %].svg", "title": "[% edq(lang('attribute_nova_' _ nova_group _ '_description_short')) %]", + // Number of NOVA 4 markers in subtitle + [% IF nova_group == 4 AND product.nova_groups_markers.$nova_group %] + // 1 marker + [% IF product.nova_groups_markers.$nova_group.size == 1 %] + "subtitle": "[% edq(lang('attribute_nova_4_1_marker')) %]", + // n markers + [% ELSE %] + "subtitle": "[% edq(f_lang('f_attribute_nova_4_markers', { 'number' => product.nova_groups_markers.$nova_group.size} )) %]", + [% END %] + [% END %] [% ELSE %] "icon_url": "[% static_subdomain %]/images/attributes/dist/nova-group-unknown.svg", "title": "[% edq(lang('attribute_nova_unknown_description_short')) %]", [%# why are there parenthesis around the name ? %] [% END %] }, "elements": [ + [% IF panels.recommendation_ultra_processed_foods.defined %] + { + "element_type": "panel", + "panel_element": { + "panel_id": "recommendation_ultra_processed_foods", + } + }, + [% END %] { "element_type": "text", "text_element": { diff --git a/templates/api/knowledge-panels/recommendations/health/world/ultra_processed_foods.tt.json b/templates/api/knowledge-panels/recommendations/health/world/ultra_processed_foods.tt.json new file mode 100644 index 0000000000000..1630c43d96c02 --- /dev/null +++ b/templates/api/knowledge-panels/recommendations/health/world/ultra_processed_foods.tt.json @@ -0,0 +1,28 @@ +{ + "level" :"recommendation", + "topics": [ + "health" + ], + "evaluation": "bad", + "title_element": { + "title": "[% edq(lang('recommendation_limit_ultra_processed_foods_title')) %]", + "subtitle": "[% edq(lang('recommendation_limit_ultra_processed_foods_subtitle')) %]", + "icon_url": "[% static_subdomain %]/images/icons/dist/arrow-bottom-right-thick.svg", + "icon_color_from_evaluation": true, + "evaluation": "bad", + }, + "elements": [ + { + "element_type": "text", + "text_element": { + "type": "quote", + "html": ` + [% lang('recommendation_limit_ultra_processed_foods_text') %] + `, + "source_text": "Ultra-processed foods increase noncommunicable chronic disease risk", + "source_url": "https://pubmed.ncbi.nlm.nih.gov/34798466/", + "source_language": "en", + } + }, + ], +} diff --git a/tests/integration/api_v2_product_read.t b/tests/integration/api_v2_product_read.t index 1dacb8fe7718a..d90a5e39eba4d 100644 --- a/tests/integration/api_v2_product_read.t +++ b/tests/integration/api_v2_product_read.t @@ -33,7 +33,7 @@ my @products = ( code => '200000000034', product_name => "Some product", generic_name => "Tester", - ingredients_text => "apple, milk, eggs, palm oil", + ingredients_text => "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", categories => "cookies", labels => "organic", origin => "france", diff --git a/tests/integration/api_v3_product_read.t b/tests/integration/api_v3_product_read.t index 1140f1ef12ec1..491c1e5126cbf 100644 --- a/tests/integration/api_v3_product_read.t +++ b/tests/integration/api_v3_product_read.t @@ -31,7 +31,7 @@ my @products = ( code => '4260392550101', product_name => "Some product", generic_name => "Tester", - ingredients_text => "apple, milk, eggs, palm oil", + ingredients_text => "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", categories => "cookies", labels => "organic", origin => "france", diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-attribute-groups-fr.json b/tests/integration/expected_test_results/api_v2_product_read/get-attribute-groups-fr.json index 69d1b5fba264f..7b521b53a6e28 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-attribute-groups-fr.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-attribute-groups-fr.json @@ -10,7 +10,7 @@ "grade" : "c", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-c-new-fr.svg", "id" : "nutriscore", - "match" : 51.5555555555556, + "match" : 49.4444444444444, "name" : "Nutri-Score", "panel_id" : "nutriscore_2023", "status" : "known", @@ -63,7 +63,7 @@ { "attributes" : [ { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-gluten.svg", "id" : "allergens_no_gluten", @@ -93,7 +93,7 @@ "title" : "Contient : Œufs" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg", "id" : "allergens_no_nuts", @@ -103,7 +103,7 @@ "title" : "Ne contient pas : Fruits à coque" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg", "id" : "allergens_no_peanuts", @@ -113,7 +113,7 @@ "title" : "Ne contient pas : Arachides" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg", "id" : "allergens_no_sesame_seeds", @@ -123,17 +123,17 @@ "title" : "Ne contient pas : Graines de sésame" }, { - "debug" : "4 ingredients (0 unknown)", - "grade" : "a", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg", + "debug" : "en:soybeans in allergens", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/contains-soybeans.svg", "id" : "allergens_no_soybeans", - "match" : 100, + "match" : 0, "name" : "Soja", "status" : "known", - "title" : "Ne contient pas : Soja" + "title" : "Contient : Soja" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg", "id" : "allergens_no_celery", @@ -143,7 +143,7 @@ "title" : "Ne contient pas : Céleri" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg", "id" : "allergens_no_mustard", @@ -153,7 +153,7 @@ "title" : "Ne contient pas : Moutarde" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg", "id" : "allergens_no_lupin", @@ -163,7 +163,7 @@ "title" : "Ne contient pas : Lupin" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg", "id" : "allergens_no_fish", @@ -173,7 +173,7 @@ "title" : "Ne contient pas : Poisson" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg", "id" : "allergens_no_crustaceans", @@ -183,7 +183,7 @@ "title" : "Ne contient pas : Crustacés" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg", "id" : "allergens_no_molluscs", @@ -193,7 +193,7 @@ "title" : "Ne contient pas : Mollusques" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg", "id" : "allergens_no_sulphur_dioxide_and_sulphites", @@ -246,26 +246,25 @@ { "attributes" : [ { - "description" : "", - "description_short" : "Aliments transformés", - "grade" : "b", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", + "description_short" : "4 marqueurs d'ultra-transformation", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", "id" : "nova", - "match" : 75, + "match" : 0, "name" : "Groupe NOVA", "panel_id" : "nova", "status" : "known", - "title" : "NOVA 3" + "title" : "Aliments ultra-transformés" }, { - "grade" : "a", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/0-additives.svg", + "grade" : "c", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg", "id" : "additives", - "match" : 100, + "match" : 60, "name" : "Additifs", "panel_id" : "additives", "status" : "known", - "title" : "Sans additifs" + "title" : "2 additifs" } ], "id" : "processing", @@ -291,7 +290,7 @@ "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg", "id" : "forest_footprint", - "match" : 99.9416666666667, + "match" : 99.9351851851852, "name" : "Empreinte forêt", "status" : "known", "title" : "Très petite empreinte forêt" diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-attribute-groups.json b/tests/integration/expected_test_results/api_v2_product_read/get-attribute-groups.json index 12f5386796b8f..14a49e1c6f3c1 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-attribute-groups.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-attribute-groups.json @@ -10,7 +10,7 @@ "grade" : "c", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-c-new-en.svg", "id" : "nutriscore", - "match" : 51.5555555555556, + "match" : 49.4444444444444, "name" : "Nutri-Score", "panel_id" : "nutriscore_2023", "status" : "known", @@ -63,7 +63,7 @@ { "attributes" : [ { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-gluten.svg", "id" : "allergens_no_gluten", @@ -93,7 +93,7 @@ "title" : "Contains: Eggs" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg", "id" : "allergens_no_nuts", @@ -103,7 +103,7 @@ "title" : "Does not contain: Nuts" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg", "id" : "allergens_no_peanuts", @@ -113,7 +113,7 @@ "title" : "Does not contain: Peanuts" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg", "id" : "allergens_no_sesame_seeds", @@ -123,17 +123,17 @@ "title" : "Does not contain: Sesame seeds" }, { - "debug" : "4 ingredients (0 unknown)", - "grade" : "a", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg", + "debug" : "en:soybeans in allergens", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/contains-soybeans.svg", "id" : "allergens_no_soybeans", - "match" : 100, + "match" : 0, "name" : "Soybeans", "status" : "known", - "title" : "Does not contain: Soybeans" + "title" : "Contains: Soybeans" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg", "id" : "allergens_no_celery", @@ -143,7 +143,7 @@ "title" : "Does not contain: Celery" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg", "id" : "allergens_no_mustard", @@ -153,7 +153,7 @@ "title" : "Does not contain: Mustard" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg", "id" : "allergens_no_lupin", @@ -163,7 +163,7 @@ "title" : "Does not contain: Lupin" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg", "id" : "allergens_no_fish", @@ -173,7 +173,7 @@ "title" : "Does not contain: Fish" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg", "id" : "allergens_no_crustaceans", @@ -183,7 +183,7 @@ "title" : "Does not contain: Crustaceans" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg", "id" : "allergens_no_molluscs", @@ -193,7 +193,7 @@ "title" : "Does not contain: Molluscs" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg", "id" : "allergens_no_sulphur_dioxide_and_sulphites", @@ -246,26 +246,25 @@ { "attributes" : [ { - "description" : "", - "description_short" : "Processed foods", - "grade" : "b", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", + "description_short" : "4 ultra-processing markers", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", "id" : "nova", - "match" : 75, + "match" : 0, "name" : "NOVA group", "panel_id" : "nova", "status" : "known", - "title" : "NOVA 3" + "title" : "Ultra-processed foods" }, { - "grade" : "a", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/0-additives.svg", + "grade" : "c", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg", "id" : "additives", - "match" : 100, + "match" : 60, "name" : "Additives", "panel_id" : "additives", "status" : "known", - "title" : "Without additives" + "title" : "2 additives" } ], "id" : "processing", @@ -291,7 +290,7 @@ "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg", "id" : "forest_footprint", - "match" : 99.9416666666667, + "match" : 99.9351851851852, "name" : "Forest footprint", "status" : "known", "title" : "Very small forest footprint" diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-existing-product.json b/tests/integration/expected_test_results/api_v2_product_read/get-existing-product.json index 183fd8fd9e9c9..db77411f0b61a 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-existing-product.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-existing-product.json @@ -10,21 +10,30 @@ "tester" ], "added_countries_tags" : [], - "additives_n" : 0, - "additives_original_tags" : [], - "additives_tags" : [], + "additives_n" : 2, + "additives_original_tags" : [ + "en:e100", + "en:e322i" + ], + "additives_tags" : [ + "en:e100", + "en:e322", + "en:e322i" + ], "allergens" : "", - "allergens_from_ingredients" : "en:eggs, en:milk, apple, milk, eggs", + "allergens_from_ingredients" : "en:soybeans, en:eggs, en:milk, apple, milk, eggs", "allergens_from_user" : "(en) ", "allergens_hierarchy" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "allergens_tags" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "amino_acids_tags" : [], "categories" : "cookies", @@ -557,7 +566,7 @@ "en:biscuits-and-cakes" ], "forest_footprint_data" : { - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "grade" : "a", "ingredients" : [ { @@ -567,10 +576,10 @@ "en:organic" ] ], - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "matching_tag_id" : "en:egg", - "percent" : 9.375, - "percent_estimate" : 9.375, + "percent" : 10.4166666666667, + "percent_estimate" : 10.4166666666667, "processing_factor" : 1, "tag_id" : "en:egg", "tag_type" : "ingredients", @@ -595,9 +604,9 @@ "ecobalyse_code" : "apple-fr", "id" : "en:apple", "is_in_taxonomy" : 1, - "percent_estimate" : 62.5, + "percent_estimate" : 58.3333333333333, "percent_max" : 100, - "percent_min" : 25, + "percent_min" : 16.6666666666667, "text" : "apple", "vegan" : "yes", "vegetarian" : "yes" @@ -607,7 +616,7 @@ "ecobalyse_code" : "milk", "id" : "en:milk", "is_in_taxonomy" : 1, - "percent_estimate" : 18.75, + "percent_estimate" : 20.8333333333333, "percent_max" : 50, "percent_min" : 0, "text" : "milk", @@ -619,7 +628,7 @@ "ecobalyse_code" : "egg-indoor-code3", "id" : "en:egg", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 10.4166666666667, "percent_max" : 33.3333333333333, "percent_min" : 0, "text" : "eggs", @@ -632,12 +641,53 @@ "from_palm_oil" : "yes", "id" : "en:palm-oil", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 5.20833333333333, "percent_max" : 25, "percent_min" : 0, "text" : "palm oil", "vegan" : "yes", "vegetarian" : "yes" + }, + { + "id" : "en:colour", + "ingredients" : [ + { + "id" : "en:e100", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "curcumin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "coloring" + }, + { + "id" : "en:emulsifier", + "ingredients" : [ + { + "ciqual_food_code" : "42200", + "id" : "en:soya-lecithin", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "soy lecithin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "emulsifier" } ], "ingredients_analysis" : { @@ -664,12 +714,18 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], "ingredients_lc" : "en", - "ingredients_n" : 4, + "ingredients_n" : 8, "ingredients_n_tags" : [ - "4", + "8", "1-10" ], "ingredients_non_nutritive_sweeteners_n" : 0, @@ -677,7 +733,11 @@ "en:apple", "en:milk", "en:egg", - "en:palm-oil" + "en:palm-oil", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin" ], "ingredients_percent_analysis" : 1, "ingredients_sweeteners_n" : 0, @@ -691,23 +751,38 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], - "ingredients_text" : "apple, milk, eggs, palm oil", - "ingredients_text_en" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil", + "ingredients_text" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "ingredients_with_specified_percent_n" : 0, "ingredients_with_specified_percent_sum" : 0, - "ingredients_with_unspecified_percent_n" : 4, + "ingredients_with_unspecified_percent_n" : 6, "ingredients_with_unspecified_percent_sum" : 100, - "ingredients_without_ciqual_codes" : [], - "ingredients_without_ciqual_codes_n" : 0, - "ingredients_without_ecobalyse_ids" : [], - "ingredients_without_ecobalyse_ids_n" : 0, + "ingredients_without_ciqual_codes" : [ + "en:colour", + "en:e100", + "en:emulsifier" + ], + "ingredients_without_ciqual_codes_n" : 3, + "ingredients_without_ecobalyse_ids" : [ + "en:colour", + "en:e100", + "en:emulsifier", + "en:soya-lecithin" + ], + "ingredients_without_ecobalyse_ids_n" : 4, "interface_version_created" : "20150316.jqm2", "interface_version_modified" : "20150316.jqm2", - "known_ingredients_n" : 10, + "known_ingredients_n" : 16, "labels" : "organic", "labels_hierarchy" : [ "en:organic" @@ -749,9 +824,8 @@ "en:ecoscore-missing-data-warning", "en:forest-footprint-a", "en:forest-footprint-computed", - "en:nutriscore-2021-b-2023-c", - "en:nutriscore-2021-better-than-2023", - "en:nutriscore-2021-different-from-2023", + "en:nutriscore-2021-c-2023-c", + "en:nutriscore-2021-same-as-2023", "en:nutriscore-computed", "en:nutrition-all-nutriscore-values-known", "en:nutrition-fruits-vegetables-legumes-estimate-from-ingredients", @@ -762,19 +836,37 @@ "en:packagings-number-of-components-4", "en:main-countries-new-product" ], - "nova_group" : 3, + "nova_group" : 4, "nova_group_debug" : "", - "nova_groups" : "3", + "nova_groups" : "4", "nova_groups_markers" : { "3" : [ [ "categories", "en:sweet-snacks" ] + ], + "4" : [ + [ + "additives", + "en:e100" + ], + [ + "additives", + "en:e322" + ], + [ + "ingredients", + "en:colour" + ], + [ + "ingredients", + "en:emulsifier" + ] ] }, "nova_groups_tags" : [ - "en:3-processed-foods" + "en:4-ultra-processed-food-and-drink-products" ], "nucleotides_tags" : [], "nutrient_levels" : { @@ -816,15 +908,15 @@ "fiber_serving" : 0.2, "fiber_unit" : "g", "fiber_value" : 2, - "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 62.5, - "nova-group" : 3, - "nova-group_100g" : 3, - "nova-group_serving" : 3, - "nutrition-score-fr" : 2, - "nutrition-score-fr_100g" : 2, + "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 58.3333333333333, + "nova-group" : 4, + "nova-group_100g" : 4, + "nova-group_serving" : 4, + "nutrition-score-fr" : 3, + "nutrition-score-fr_100g" : 3, "proteins" : 4.5, "proteins_100g" : 4.5, "proteins_serving" : 0.45, @@ -851,53 +943,6 @@ "sugars_unit" : "g", "sugars_value" : 12.5 }, - "nutriments_estimated" : { - "alcohol_100g" : 0, - "beta-carotene_100g" : 1.19375e-05, - "calcium_100g" : 0.0333875, - "carbohydrates_100g" : 7.6484375, - "cholesterol_100g" : 0.03778125, - "copper_100g" : 2.678125e-05, - "energy-kcal_100g" : 134.5875, - "energy-kj_100g" : 558.75, - "energy_100g" : 558.75, - "fat_100g" : 10.4134375, - "fiber_100g" : 0.8125, - "fructose_100g" : 3.77578125, - "galactose_100g" : 0, - "glucose_100g" : 2.0565625, - "iodine_100g" : 7.09375e-06, - "iron_100g" : 0.0002265625, - "lactose_100g" : 0.924375, - "magnesium_100g" : 0.00570625, - "maltose_100g" : 0.00703125, - "manganese_100g" : 2.73828125e-05, - "pantothenic-acid_100g" : 0.0002590625, - "phosphorus_100g" : 0.0445625, - "phylloquinone_100g" : 1.153125e-06, - "polyols_100g" : 0.36875, - "potassium_100g" : 0.09825, - "proteins_100g" : 1.974375, - "salt_100g" : 0.0496875, - "saturated-fat_100g" : 4.903125, - "selenium_100g" : 1.2290625e-06, - "sodium_100g" : 0.019725, - "starch_100g" : 0, - "sucrose_100g" : 0.51953125, - "sugars_100g" : 7.2621875, - "vitamin-a_100g" : 1.739625e-05, - "vitamin-b12_100g" : 2.278125e-07, - "vitamin-b1_100g" : 2.509375e-05, - "vitamin-b2_100g" : 9.34375e-05, - "vitamin-b6_100g" : 4.54375e-05, - "vitamin-b9_100g" : 4.10625e-06, - "vitamin-c_100g" : 0.00274375, - "vitamin-d_100g" : 1.903125e-07, - "vitamin-e_100g" : 0.001657625, - "vitamin-pp_100g" : 8.003125e-05, - "water_100g" : 78.365625, - "zinc_100g" : 0.0002046875 - }, "nutriscore" : { "2021" : { "category_available" : 1, @@ -908,15 +953,15 @@ "fiber" : 2, "fiber_points" : 2, "fiber_value" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, + "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 1, + "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 58.3, "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, "negative_points" : 8, - "positive_points" : 6, + "positive_points" : 5, "proteins" : 4.5, "proteins_points" : 2, "proteins_value" : 4.5, @@ -930,11 +975,11 @@ "sugars_points" : 2, "sugars_value" : 12.5 }, - "grade" : "b", + "grade" : "c", "nutrients_available" : 1, "nutriscore_applicable" : 1, "nutriscore_computed" : 1, - "score" : 2 + "score" : 3 }, "2023" : { "category_available" : 1, @@ -987,10 +1032,10 @@ }, { "id" : "fruits_vegetables_legumes", - "points" : 2, + "points" : 1, "points_max" : 5, "unit" : "%", - "value" : 62.5 + "value" : 58.3 } ] }, @@ -1008,18 +1053,18 @@ "fiber", "fruits_vegetables_legumes" ], - "positive_points" : 3, + "positive_points" : 2, "positive_points_max" : 17 }, "grade" : "c", "nutrients_available" : 1, "nutriscore_applicable" : 1, "nutriscore_computed" : 1, - "score" : 6 + "score" : 7 } }, "nutriscore_2021_tags" : [ - "b" + "c" ], "nutriscore_2023_tags" : [ "c" @@ -1031,23 +1076,23 @@ "fiber" : 2, "fiber_points" : 2, "fiber_value" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, - "grade" : "b", + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, + "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 1, + "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 58.3, + "grade" : "c", "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, "negative_points" : 8, - "positive_points" : 6, + "positive_points" : 5, "proteins" : 4.5, "proteins_points" : 2, "proteins_value" : 4.5, "saturated_fat" : 5.6, "saturated_fat_points" : 5, "saturated_fat_value" : 5.6, - "score" : 2, + "score" : 3, "sodium" : 20.08, "sodium_points" : 0, "sodium_value" : 20.1, @@ -1055,27 +1100,27 @@ "sugars_points" : 2, "sugars_value" : 12.5 }, - "nutriscore_grade" : "b", - "nutriscore_score" : 2, - "nutriscore_score_opposite" : -2, + "nutriscore_grade" : "c", + "nutriscore_score" : 3, + "nutriscore_score_opposite" : -3, "nutriscore_tags" : [ - "b" + "c" ], "nutriscore_version" : "2021", "nutrition_data" : "on", "nutrition_data_per" : "100g", "nutrition_data_prepared_per" : "100g", - "nutrition_grade_fr" : "b", - "nutrition_grades" : "b", + "nutrition_grade_fr" : "c", + "nutrition_grades" : "c", "nutrition_grades_tags" : [ - "b" + "c" ], "nutrition_score_beverage" : 0, "nutrition_score_debug" : "", "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 58.3333333333333, "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 58.3333333333333, "origin" : "france", "origin_en" : "france", "other_nutritional_substances_tags" : [], diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-fields-all-knowledge-panels.json b/tests/integration/expected_test_results/api_v2_product_read/get-fields-all-knowledge-panels.json index 42e66e3caa9c2..bf7c6e70a2377 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-fields-all-knowledge-panels.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-fields-all-knowledge-panels.json @@ -10,21 +10,30 @@ "tester" ], "added_countries_tags" : [], - "additives_n" : 0, - "additives_original_tags" : [], - "additives_tags" : [], + "additives_n" : 2, + "additives_original_tags" : [ + "en:e100", + "en:e322i" + ], + "additives_tags" : [ + "en:e100", + "en:e322", + "en:e322i" + ], "allergens" : "", - "allergens_from_ingredients" : "en:eggs, en:milk, apple, milk, eggs", + "allergens_from_ingredients" : "en:soybeans, en:eggs, en:milk, apple, milk, eggs", "allergens_from_user" : "(en) ", "allergens_hierarchy" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "allergens_tags" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "amino_acids_tags" : [], "categories" : "cookies", @@ -557,7 +566,7 @@ "en:biscuits-and-cakes" ], "forest_footprint_data" : { - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "grade" : "a", "ingredients" : [ { @@ -567,10 +576,10 @@ "en:organic" ] ], - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "matching_tag_id" : "en:egg", - "percent" : 9.375, - "percent_estimate" : 9.375, + "percent" : 10.4166666666667, + "percent_estimate" : 10.4166666666667, "processing_factor" : 1, "tag_id" : "en:egg", "tag_type" : "ingredients", @@ -595,9 +604,9 @@ "ecobalyse_code" : "apple-fr", "id" : "en:apple", "is_in_taxonomy" : 1, - "percent_estimate" : 62.5, + "percent_estimate" : 58.3333333333333, "percent_max" : 100, - "percent_min" : 25, + "percent_min" : 16.6666666666667, "text" : "apple", "vegan" : "yes", "vegetarian" : "yes" @@ -607,7 +616,7 @@ "ecobalyse_code" : "milk", "id" : "en:milk", "is_in_taxonomy" : 1, - "percent_estimate" : 18.75, + "percent_estimate" : 20.8333333333333, "percent_max" : 50, "percent_min" : 0, "text" : "milk", @@ -619,7 +628,7 @@ "ecobalyse_code" : "egg-indoor-code3", "id" : "en:egg", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 10.4166666666667, "percent_max" : 33.3333333333333, "percent_min" : 0, "text" : "eggs", @@ -632,12 +641,53 @@ "from_palm_oil" : "yes", "id" : "en:palm-oil", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 5.20833333333333, "percent_max" : 25, "percent_min" : 0, "text" : "palm oil", "vegan" : "yes", "vegetarian" : "yes" + }, + { + "id" : "en:colour", + "ingredients" : [ + { + "id" : "en:e100", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "curcumin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "coloring" + }, + { + "id" : "en:emulsifier", + "ingredients" : [ + { + "ciqual_food_code" : "42200", + "id" : "en:soya-lecithin", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "soy lecithin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "emulsifier" } ], "ingredients_analysis" : { @@ -664,12 +714,18 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], "ingredients_lc" : "en", - "ingredients_n" : 4, + "ingredients_n" : 8, "ingredients_n_tags" : [ - "4", + "8", "1-10" ], "ingredients_non_nutritive_sweeteners_n" : 0, @@ -677,7 +733,11 @@ "en:apple", "en:milk", "en:egg", - "en:palm-oil" + "en:palm-oil", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin" ], "ingredients_percent_analysis" : 1, "ingredients_sweeteners_n" : 0, @@ -691,23 +751,121 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], - "ingredients_text" : "apple, milk, eggs, palm oil", - "ingredients_text_en" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil", + "ingredients_text" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "ingredients_with_specified_percent_n" : 0, "ingredients_with_specified_percent_sum" : 0, - "ingredients_with_unspecified_percent_n" : 4, + "ingredients_with_unspecified_percent_n" : 6, "ingredients_with_unspecified_percent_sum" : 100, - "ingredients_without_ciqual_codes" : [], - "ingredients_without_ciqual_codes_n" : 0, - "ingredients_without_ecobalyse_ids" : [], - "ingredients_without_ecobalyse_ids_n" : 0, + "ingredients_without_ciqual_codes" : [ + "en:colour", + "en:e100", + "en:emulsifier" + ], + "ingredients_without_ciqual_codes_n" : 3, + "ingredients_without_ecobalyse_ids" : [ + "en:colour", + "en:e100", + "en:emulsifier", + "en:soya-lecithin" + ], + "ingredients_without_ecobalyse_ids_n" : 4, "interface_version_created" : "20150316.jqm2", "interface_version_modified" : "20150316.jqm2", "knowledge_panels" : { + "additive_en:e100" : { + "elements" : [], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E100 - Curcumin" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin: Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "English", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322 - Lecithins" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322i" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin: Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "English", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322i - Lecithin" + }, + "topics" : [ + "health" + ] + }, + "additives" : { + "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e100" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322i" + } + } + ], + "expanded" : true, + "level" : "info", + "topics" : [ + "health" + ], + "type" : "inline" + }, "carbon_footprint" : { "elements" : [ { @@ -1315,6 +1473,15 @@ "title" : "Food processing" } }, + { + "element_type" : "panel_group", + "panel_group_element" : { + "panel_ids" : [ + "additives" + ], + "title" : "Additives" + } + }, { "element_type" : "panel_group", "panel_group_element" : { @@ -1387,8 +1554,8 @@ "text_element" : { "edit_field_id" : "ingredients_text_en", "edit_field_type" : "ingredients_text", - "edit_field_value" : "apple, milk, eggs, palm oil", - "html" : "apple, milk, eggs, palm oil", + "edit_field_value" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "html" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "language" : "English", "lc" : "en" } @@ -1396,7 +1563,7 @@ { "element_type" : "text", "text_element" : { - "html" : "Allergens: \n Apple, Eggs, Milk\n " + "html" : "Allergens: \n Apple, Eggs, Milk, Soybeans\n " } } ], @@ -1407,7 +1574,7 @@ "title_element" : { "icon_color_from_evaluation" : true, "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/ingredients.svg", - "title" : "4 ingredients" + "title" : "8 ingredients" }, "topics" : [ "health" @@ -1452,13 +1619,13 @@ { "element_type" : "text", "text_element" : { - "html" : "en: apple, milk, eggs, palm oil" + "html" : "en: apple, milk, eggs, palm oil, coloring (curcumin), emulsifier (soy lecithin)" } }, { "element_type" : "text", "text_element" : { - "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 25 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
\n" + "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 16.6666666666667 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
  9. coloring -> en:colour - percent_min: 0 - percent_max: 20
      \n
    1. curcumin -> en:e100 - vegan: yes - vegetarian: yes - percent_min: 0 - percent_max: 20
    2. \n
    \n
  10. \n
  11. emulsifier -> en:emulsifier - percent_min: 0 - percent_max: 16.6666666666667
      \n
    1. soy lecithin -> en:soya-lecithin - vegan: yes - vegetarian: yes - ciqual_food_code: 42200 - percent_min: 0 - percent_max: 16.6666666666667
    2. \n
    \n
  12. \n
\n" } }, { @@ -1552,23 +1719,30 @@ }, "nova" : { "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "recommendation_ultra_processed_foods" + } + }, { "element_type" : "text", "text_element" : { - "html" : "\n\n \n \n

Elements that indicate the product is in the 3 - Processed foods group:

\n
    \n \n
  • Category: Sweet snacks
  • \n \n
\n \n \n\n" + "html" : "\n\n \n \n

Elements that indicate the product is in the 4 - Ultra processed food and drink products group:

\n
    \n \n
  • Additive: E100 - Curcumin
  • \n \n
  • Additive: E322 - Lecithins
  • \n \n
  • Ingredient: Colour
  • \n \n
  • Ingredient: Emulsifier
  • \n \n
\n \n \n\n" } }, { "element_type" : "text", "text_element" : { - "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" + "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra-processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" } } ], "level" : "info", "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", - "title" : "Processed foods" + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", + "subtitle" : "4 ultra-processing markers", + "title" : "Ultra-processed foods" }, "topics" : [ "health" @@ -1761,7 +1935,7 @@ { "element_type" : "text", "text_element" : { - "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 62\n ", + "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 58\n ", "type" : "warning" } }, @@ -1799,7 +1973,7 @@ "nutriscore_component_fiber", "nutriscore_component_fruits_vegetables_legumes" ], - "title" : "Positive points: 3/17" + "title" : "Positive points: 2/17" } }, { @@ -1873,8 +2047,8 @@ "level" : "info", "size" : "small", "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-2-5.svg", - "subtitle" : "2/5 points (62.5%)", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-1-5.svg", + "subtitle" : "1/5 points (58.3%)", "title" : "Fruits, vegetables and legumes" }, "topics" : [ @@ -1993,14 +2167,14 @@ { "element_type" : "text", "text_element" : { - "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 62\n ", + "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 58\n ", "type" : "warning" } }, { "element_type" : "text", "text_element" : { - "html" : "\n\n

This product is not considered a beverage for the calculation of the Nutri-Score.

\n\n\n\n\n\n

Points for proteins are counted because the negative points are less than 11.

\n\n

\n Nutritional score: 6\n (9 - 3)\n

\n

Nutri-Score: C

\n " + "html" : "\n\n

This product is not considered a beverage for the calculation of the Nutri-Score.

\n\n\n\n\n\n

Points for proteins are counted because the negative points are less than 11.

\n\n

\n Nutritional score: 7\n (9 - 2)\n

\n

Nutri-Score: C

\n " } } ], @@ -2171,10 +2345,10 @@ "text" : "Fruits‚ vegetables‚ nuts and rapeseed‚ walnut and olive oils (estimate from ingredients list analysis)" }, { - "text" : "62.5 %" + "text" : "58.333 %" }, { - "text" : "62.5 %" + "text" : "58.333 %" } ] } @@ -2426,6 +2600,32 @@ "environment" ] }, + "recommendation_ultra_processed_foods" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "\n Several studies have found that a high consumption of ultra-processed foods is associated with an increased risk of noncommunicable chronic diseases, such as obesity, hypertension and diabetes.\n ", + "source_language" : "en", + "source_text" : "Ultra-processed foods increase noncommunicable chronic disease risk", + "source_url" : "https://pubmed.ncbi.nlm.nih.gov/34798466/", + "type" : "quote" + } + } + ], + "evaluation" : "bad", + "level" : "recommendation", + "title_element" : { + "evaluation" : "bad", + "icon_color_from_evaluation" : true, + "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/arrow-bottom-right-thick.svg", + "subtitle" : "Ultra-processed foods increase noncommunicable chronic disease risk", + "title" : "Limit ultra-processed foods" + }, + "topics" : [ + "health" + ] + }, "report_problem_card" : { "elements" : [ { @@ -2485,7 +2685,7 @@ "type" : "inline" } }, - "known_ingredients_n" : 10, + "known_ingredients_n" : 16, "labels" : "organic", "labels_hierarchy" : [ "en:organic" @@ -2527,9 +2727,8 @@ "en:ecoscore-missing-data-warning", "en:forest-footprint-a", "en:forest-footprint-computed", - "en:nutriscore-2021-b-2023-c", - "en:nutriscore-2021-better-than-2023", - "en:nutriscore-2021-different-from-2023", + "en:nutriscore-2021-c-2023-c", + "en:nutriscore-2021-same-as-2023", "en:nutriscore-computed", "en:nutrition-all-nutriscore-values-known", "en:nutrition-fruits-vegetables-legumes-estimate-from-ingredients", @@ -2540,19 +2739,37 @@ "en:packagings-number-of-components-4", "en:main-countries-new-product" ], - "nova_group" : 3, + "nova_group" : 4, "nova_group_debug" : "", - "nova_groups" : "3", + "nova_groups" : "4", "nova_groups_markers" : { "3" : [ [ "categories", "en:sweet-snacks" ] + ], + "4" : [ + [ + "additives", + "en:e100" + ], + [ + "additives", + "en:e322" + ], + [ + "ingredients", + "en:colour" + ], + [ + "ingredients", + "en:emulsifier" + ] ] }, "nova_groups_tags" : [ - "en:3-processed-foods" + "en:4-ultra-processed-food-and-drink-products" ], "nucleotides_tags" : [], "nutrient_levels" : { @@ -2594,15 +2811,15 @@ "fiber_serving" : 0.2, "fiber_unit" : "g", "fiber_value" : 2, - "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 62.5, - "nova-group" : 3, - "nova-group_100g" : 3, - "nova-group_serving" : 3, - "nutrition-score-fr" : 2, - "nutrition-score-fr_100g" : 2, + "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 58.3333333333333, + "nova-group" : 4, + "nova-group_100g" : 4, + "nova-group_serving" : 4, + "nutrition-score-fr" : 3, + "nutrition-score-fr_100g" : 3, "proteins" : 4.5, "proteins_100g" : 4.5, "proteins_serving" : 0.45, @@ -2629,53 +2846,6 @@ "sugars_unit" : "g", "sugars_value" : 12.5 }, - "nutriments_estimated" : { - "alcohol_100g" : 0, - "beta-carotene_100g" : 1.19375e-05, - "calcium_100g" : 0.0333875, - "carbohydrates_100g" : 7.6484375, - "cholesterol_100g" : 0.03778125, - "copper_100g" : 2.678125e-05, - "energy-kcal_100g" : 134.5875, - "energy-kj_100g" : 558.75, - "energy_100g" : 558.75, - "fat_100g" : 10.4134375, - "fiber_100g" : 0.8125, - "fructose_100g" : 3.77578125, - "galactose_100g" : 0, - "glucose_100g" : 2.0565625, - "iodine_100g" : 7.09375e-06, - "iron_100g" : 0.0002265625, - "lactose_100g" : 0.924375, - "magnesium_100g" : 0.00570625, - "maltose_100g" : 0.00703125, - "manganese_100g" : 2.73828125e-05, - "pantothenic-acid_100g" : 0.0002590625, - "phosphorus_100g" : 0.0445625, - "phylloquinone_100g" : 1.153125e-06, - "polyols_100g" : 0.36875, - "potassium_100g" : 0.09825, - "proteins_100g" : 1.974375, - "salt_100g" : 0.0496875, - "saturated-fat_100g" : 4.903125, - "selenium_100g" : 1.2290625e-06, - "sodium_100g" : 0.019725, - "starch_100g" : 0, - "sucrose_100g" : 0.51953125, - "sugars_100g" : 7.2621875, - "vitamin-a_100g" : 1.739625e-05, - "vitamin-b12_100g" : 2.278125e-07, - "vitamin-b1_100g" : 2.509375e-05, - "vitamin-b2_100g" : 9.34375e-05, - "vitamin-b6_100g" : 4.54375e-05, - "vitamin-b9_100g" : 4.10625e-06, - "vitamin-c_100g" : 0.00274375, - "vitamin-d_100g" : 1.903125e-07, - "vitamin-e_100g" : 0.001657625, - "vitamin-pp_100g" : 8.003125e-05, - "water_100g" : 78.365625, - "zinc_100g" : 0.0002046875 - }, "nutriscore" : { "2021" : { "category_available" : 1, @@ -2686,15 +2856,15 @@ "fiber" : 2, "fiber_points" : 2, "fiber_value" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, + "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 1, + "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 58.3, "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, "negative_points" : 8, - "positive_points" : 6, + "positive_points" : 5, "proteins" : 4.5, "proteins_points" : 2, "proteins_value" : 4.5, @@ -2708,11 +2878,11 @@ "sugars_points" : 2, "sugars_value" : 12.5 }, - "grade" : "b", + "grade" : "c", "nutrients_available" : 1, "nutriscore_applicable" : 1, "nutriscore_computed" : 1, - "score" : 2 + "score" : 3 }, "2023" : { "category_available" : 1, @@ -2765,10 +2935,10 @@ }, { "id" : "fruits_vegetables_legumes", - "points" : 2, + "points" : 1, "points_max" : 5, "unit" : "%", - "value" : 62.5 + "value" : 58.3 } ] }, @@ -2786,18 +2956,18 @@ "fiber", "fruits_vegetables_legumes" ], - "positive_points" : 3, + "positive_points" : 2, "positive_points_max" : 17 }, "grade" : "c", "nutrients_available" : 1, "nutriscore_applicable" : 1, "nutriscore_computed" : 1, - "score" : 6 + "score" : 7 } }, "nutriscore_2021_tags" : [ - "b" + "c" ], "nutriscore_2023_tags" : [ "c" @@ -2809,23 +2979,23 @@ "fiber" : 2, "fiber_points" : 2, "fiber_value" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, - "grade" : "b", + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, + "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 1, + "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 58.3, + "grade" : "c", "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, "negative_points" : 8, - "positive_points" : 6, + "positive_points" : 5, "proteins" : 4.5, "proteins_points" : 2, "proteins_value" : 4.5, "saturated_fat" : 5.6, "saturated_fat_points" : 5, "saturated_fat_value" : 5.6, - "score" : 2, + "score" : 3, "sodium" : 20.08, "sodium_points" : 0, "sodium_value" : 20.1, @@ -2833,27 +3003,27 @@ "sugars_points" : 2, "sugars_value" : 12.5 }, - "nutriscore_grade" : "b", - "nutriscore_score" : 2, - "nutriscore_score_opposite" : -2, + "nutriscore_grade" : "c", + "nutriscore_score" : 3, + "nutriscore_score_opposite" : -3, "nutriscore_tags" : [ - "b" + "c" ], "nutriscore_version" : "2021", "nutrition_data" : "on", "nutrition_data_per" : "100g", "nutrition_data_prepared_per" : "100g", - "nutrition_grade_fr" : "b", - "nutrition_grades" : "b", + "nutrition_grade_fr" : "c", + "nutrition_grades" : "c", "nutrition_grades_tags" : [ - "b" + "c" ], "nutrition_score_beverage" : 0, "nutrition_score_debug" : "", "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 58.3333333333333, "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 58.3333333333333, "origin" : "france", "origin_en" : "france", "other_nutritional_substances_tags" : [], diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-fields-all.json b/tests/integration/expected_test_results/api_v2_product_read/get-fields-all.json index 21fd7ebb6738c..c28f08e0723e9 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-fields-all.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-fields-all.json @@ -10,21 +10,30 @@ "tester" ], "added_countries_tags" : [], - "additives_n" : 0, - "additives_original_tags" : [], - "additives_tags" : [], + "additives_n" : 2, + "additives_original_tags" : [ + "en:e100", + "en:e322i" + ], + "additives_tags" : [ + "en:e100", + "en:e322", + "en:e322i" + ], "allergens" : "", - "allergens_from_ingredients" : "en:eggs, en:milk, apple, milk, eggs", + "allergens_from_ingredients" : "en:soybeans, en:eggs, en:milk, apple, milk, eggs", "allergens_from_user" : "(en) ", "allergens_hierarchy" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "allergens_tags" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "amino_acids_tags" : [], "categories" : "cookies", @@ -557,7 +566,7 @@ "en:biscuits-and-cakes" ], "forest_footprint_data" : { - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "grade" : "a", "ingredients" : [ { @@ -567,10 +576,10 @@ "en:organic" ] ], - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "matching_tag_id" : "en:egg", - "percent" : 9.375, - "percent_estimate" : 9.375, + "percent" : 10.4166666666667, + "percent_estimate" : 10.4166666666667, "processing_factor" : 1, "tag_id" : "en:egg", "tag_type" : "ingredients", @@ -595,9 +604,9 @@ "ecobalyse_code" : "apple-fr", "id" : "en:apple", "is_in_taxonomy" : 1, - "percent_estimate" : 62.5, + "percent_estimate" : 58.3333333333333, "percent_max" : 100, - "percent_min" : 25, + "percent_min" : 16.6666666666667, "text" : "apple", "vegan" : "yes", "vegetarian" : "yes" @@ -607,7 +616,7 @@ "ecobalyse_code" : "milk", "id" : "en:milk", "is_in_taxonomy" : 1, - "percent_estimate" : 18.75, + "percent_estimate" : 20.8333333333333, "percent_max" : 50, "percent_min" : 0, "text" : "milk", @@ -619,7 +628,7 @@ "ecobalyse_code" : "egg-indoor-code3", "id" : "en:egg", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 10.4166666666667, "percent_max" : 33.3333333333333, "percent_min" : 0, "text" : "eggs", @@ -632,12 +641,53 @@ "from_palm_oil" : "yes", "id" : "en:palm-oil", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 5.20833333333333, "percent_max" : 25, "percent_min" : 0, "text" : "palm oil", "vegan" : "yes", "vegetarian" : "yes" + }, + { + "id" : "en:colour", + "ingredients" : [ + { + "id" : "en:e100", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "curcumin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "coloring" + }, + { + "id" : "en:emulsifier", + "ingredients" : [ + { + "ciqual_food_code" : "42200", + "id" : "en:soya-lecithin", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "soy lecithin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "emulsifier" } ], "ingredients_analysis" : { @@ -664,12 +714,18 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], "ingredients_lc" : "en", - "ingredients_n" : 4, + "ingredients_n" : 8, "ingredients_n_tags" : [ - "4", + "8", "1-10" ], "ingredients_non_nutritive_sweeteners_n" : 0, @@ -677,7 +733,11 @@ "en:apple", "en:milk", "en:egg", - "en:palm-oil" + "en:palm-oil", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin" ], "ingredients_percent_analysis" : 1, "ingredients_sweeteners_n" : 0, @@ -691,23 +751,38 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], - "ingredients_text" : "apple, milk, eggs, palm oil", - "ingredients_text_en" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil", + "ingredients_text" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "ingredients_with_specified_percent_n" : 0, "ingredients_with_specified_percent_sum" : 0, - "ingredients_with_unspecified_percent_n" : 4, + "ingredients_with_unspecified_percent_n" : 6, "ingredients_with_unspecified_percent_sum" : 100, - "ingredients_without_ciqual_codes" : [], - "ingredients_without_ciqual_codes_n" : 0, - "ingredients_without_ecobalyse_ids" : [], - "ingredients_without_ecobalyse_ids_n" : 0, + "ingredients_without_ciqual_codes" : [ + "en:colour", + "en:e100", + "en:emulsifier" + ], + "ingredients_without_ciqual_codes_n" : 3, + "ingredients_without_ecobalyse_ids" : [ + "en:colour", + "en:e100", + "en:emulsifier", + "en:soya-lecithin" + ], + "ingredients_without_ecobalyse_ids_n" : 4, "interface_version_created" : "20150316.jqm2", "interface_version_modified" : "20150316.jqm2", - "known_ingredients_n" : 10, + "known_ingredients_n" : 16, "labels" : "organic", "labels_hierarchy" : [ "en:organic" @@ -749,9 +824,8 @@ "en:ecoscore-missing-data-warning", "en:forest-footprint-a", "en:forest-footprint-computed", - "en:nutriscore-2021-b-2023-c", - "en:nutriscore-2021-better-than-2023", - "en:nutriscore-2021-different-from-2023", + "en:nutriscore-2021-c-2023-c", + "en:nutriscore-2021-same-as-2023", "en:nutriscore-computed", "en:nutrition-all-nutriscore-values-known", "en:nutrition-fruits-vegetables-legumes-estimate-from-ingredients", @@ -762,19 +836,37 @@ "en:packagings-number-of-components-4", "en:main-countries-new-product" ], - "nova_group" : 3, + "nova_group" : 4, "nova_group_debug" : "", - "nova_groups" : "3", + "nova_groups" : "4", "nova_groups_markers" : { "3" : [ [ "categories", "en:sweet-snacks" ] + ], + "4" : [ + [ + "additives", + "en:e100" + ], + [ + "additives", + "en:e322" + ], + [ + "ingredients", + "en:colour" + ], + [ + "ingredients", + "en:emulsifier" + ] ] }, "nova_groups_tags" : [ - "en:3-processed-foods" + "en:4-ultra-processed-food-and-drink-products" ], "nucleotides_tags" : [], "nutrient_levels" : { @@ -816,15 +908,15 @@ "fiber_serving" : 0.2, "fiber_unit" : "g", "fiber_value" : 2, - "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 62.5, - "nova-group" : 3, - "nova-group_100g" : 3, - "nova-group_serving" : 3, - "nutrition-score-fr" : 2, - "nutrition-score-fr_100g" : 2, + "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 58.3333333333333, + "nova-group" : 4, + "nova-group_100g" : 4, + "nova-group_serving" : 4, + "nutrition-score-fr" : 3, + "nutrition-score-fr_100g" : 3, "proteins" : 4.5, "proteins_100g" : 4.5, "proteins_serving" : 0.45, @@ -851,53 +943,6 @@ "sugars_unit" : "g", "sugars_value" : 12.5 }, - "nutriments_estimated" : { - "alcohol_100g" : 0, - "beta-carotene_100g" : 1.19375e-05, - "calcium_100g" : 0.0333875, - "carbohydrates_100g" : 7.6484375, - "cholesterol_100g" : 0.03778125, - "copper_100g" : 2.678125e-05, - "energy-kcal_100g" : 134.5875, - "energy-kj_100g" : 558.75, - "energy_100g" : 558.75, - "fat_100g" : 10.4134375, - "fiber_100g" : 0.8125, - "fructose_100g" : 3.77578125, - "galactose_100g" : 0, - "glucose_100g" : 2.0565625, - "iodine_100g" : 7.09375e-06, - "iron_100g" : 0.0002265625, - "lactose_100g" : 0.924375, - "magnesium_100g" : 0.00570625, - "maltose_100g" : 0.00703125, - "manganese_100g" : 2.73828125e-05, - "pantothenic-acid_100g" : 0.0002590625, - "phosphorus_100g" : 0.0445625, - "phylloquinone_100g" : 1.153125e-06, - "polyols_100g" : 0.36875, - "potassium_100g" : 0.09825, - "proteins_100g" : 1.974375, - "salt_100g" : 0.0496875, - "saturated-fat_100g" : 4.903125, - "selenium_100g" : 1.2290625e-06, - "sodium_100g" : 0.019725, - "starch_100g" : 0, - "sucrose_100g" : 0.51953125, - "sugars_100g" : 7.2621875, - "vitamin-a_100g" : 1.739625e-05, - "vitamin-b12_100g" : 2.278125e-07, - "vitamin-b1_100g" : 2.509375e-05, - "vitamin-b2_100g" : 9.34375e-05, - "vitamin-b6_100g" : 4.54375e-05, - "vitamin-b9_100g" : 4.10625e-06, - "vitamin-c_100g" : 0.00274375, - "vitamin-d_100g" : 1.903125e-07, - "vitamin-e_100g" : 0.001657625, - "vitamin-pp_100g" : 8.003125e-05, - "water_100g" : 78.365625, - "zinc_100g" : 0.0002046875 - }, "nutriscore" : { "2021" : { "category_available" : 1, @@ -908,15 +953,15 @@ "fiber" : 2, "fiber_points" : 2, "fiber_value" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, + "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 1, + "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 58.3, "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, "negative_points" : 8, - "positive_points" : 6, + "positive_points" : 5, "proteins" : 4.5, "proteins_points" : 2, "proteins_value" : 4.5, @@ -930,11 +975,11 @@ "sugars_points" : 2, "sugars_value" : 12.5 }, - "grade" : "b", + "grade" : "c", "nutrients_available" : 1, "nutriscore_applicable" : 1, "nutriscore_computed" : 1, - "score" : 2 + "score" : 3 }, "2023" : { "category_available" : 1, @@ -987,10 +1032,10 @@ }, { "id" : "fruits_vegetables_legumes", - "points" : 2, + "points" : 1, "points_max" : 5, "unit" : "%", - "value" : 62.5 + "value" : 58.3 } ] }, @@ -1008,18 +1053,18 @@ "fiber", "fruits_vegetables_legumes" ], - "positive_points" : 3, + "positive_points" : 2, "positive_points_max" : 17 }, "grade" : "c", "nutrients_available" : 1, "nutriscore_applicable" : 1, "nutriscore_computed" : 1, - "score" : 6 + "score" : 7 } }, "nutriscore_2021_tags" : [ - "b" + "c" ], "nutriscore_2023_tags" : [ "c" @@ -1031,23 +1076,23 @@ "fiber" : 2, "fiber_points" : 2, "fiber_value" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, - "grade" : "b", + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, + "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 1, + "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 58.3, + "grade" : "c", "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, "negative_points" : 8, - "positive_points" : 6, + "positive_points" : 5, "proteins" : 4.5, "proteins_points" : 2, "proteins_value" : 4.5, "saturated_fat" : 5.6, "saturated_fat_points" : 5, "saturated_fat_value" : 5.6, - "score" : 2, + "score" : 3, "sodium" : 20.08, "sodium_points" : 0, "sodium_value" : 20.1, @@ -1055,27 +1100,27 @@ "sugars_points" : 2, "sugars_value" : 12.5 }, - "nutriscore_grade" : "b", - "nutriscore_score" : 2, - "nutriscore_score_opposite" : -2, + "nutriscore_grade" : "c", + "nutriscore_score" : 3, + "nutriscore_score_opposite" : -3, "nutriscore_tags" : [ - "b" + "c" ], "nutriscore_version" : "2021", "nutrition_data" : "on", "nutrition_data_per" : "100g", "nutrition_data_prepared_per" : "100g", - "nutrition_grade_fr" : "b", - "nutrition_grades" : "b", + "nutrition_grade_fr" : "c", + "nutrition_grades" : "c", "nutrition_grades_tags" : [ - "b" + "c" ], "nutrition_score_beverage" : 0, "nutrition_score_debug" : "", "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 58.3333333333333, "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 58.3333333333333, "origin" : "france", "origin_en" : "france", "other_nutritional_substances_tags" : [], diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-fields-attribute-groups-all-knowledge-panels.json b/tests/integration/expected_test_results/api_v2_product_read/get-fields-attribute-groups-all-knowledge-panels.json index 824a1f8ef942b..c0f68356630dc 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-fields-attribute-groups-all-knowledge-panels.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-fields-attribute-groups-all-knowledge-panels.json @@ -10,21 +10,30 @@ "tester" ], "added_countries_tags" : [], - "additives_n" : 0, - "additives_original_tags" : [], - "additives_tags" : [], + "additives_n" : 2, + "additives_original_tags" : [ + "en:e100", + "en:e322i" + ], + "additives_tags" : [ + "en:e100", + "en:e322", + "en:e322i" + ], "allergens" : "", - "allergens_from_ingredients" : "en:eggs, en:milk, apple, milk, eggs", + "allergens_from_ingredients" : "en:soybeans, en:eggs, en:milk, apple, milk, eggs", "allergens_from_user" : "(en) ", "allergens_hierarchy" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "allergens_tags" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "amino_acids_tags" : [], "attribute_groups" : [ @@ -36,7 +45,7 @@ "grade" : "c", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-c-new-en.svg", "id" : "nutriscore", - "match" : 51.5555555555556, + "match" : 49.4444444444444, "name" : "Nutri-Score", "panel_id" : "nutriscore_2023", "status" : "known", @@ -89,7 +98,7 @@ { "attributes" : [ { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-gluten.svg", "id" : "allergens_no_gluten", @@ -119,7 +128,7 @@ "title" : "Contains: Eggs" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg", "id" : "allergens_no_nuts", @@ -129,7 +138,7 @@ "title" : "Does not contain: Nuts" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg", "id" : "allergens_no_peanuts", @@ -139,7 +148,7 @@ "title" : "Does not contain: Peanuts" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg", "id" : "allergens_no_sesame_seeds", @@ -149,17 +158,17 @@ "title" : "Does not contain: Sesame seeds" }, { - "debug" : "4 ingredients (0 unknown)", - "grade" : "a", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg", + "debug" : "en:soybeans in allergens", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/contains-soybeans.svg", "id" : "allergens_no_soybeans", - "match" : 100, + "match" : 0, "name" : "Soybeans", "status" : "known", - "title" : "Does not contain: Soybeans" + "title" : "Contains: Soybeans" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg", "id" : "allergens_no_celery", @@ -169,7 +178,7 @@ "title" : "Does not contain: Celery" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg", "id" : "allergens_no_mustard", @@ -179,7 +188,7 @@ "title" : "Does not contain: Mustard" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg", "id" : "allergens_no_lupin", @@ -189,7 +198,7 @@ "title" : "Does not contain: Lupin" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg", "id" : "allergens_no_fish", @@ -199,7 +208,7 @@ "title" : "Does not contain: Fish" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg", "id" : "allergens_no_crustaceans", @@ -209,7 +218,7 @@ "title" : "Does not contain: Crustaceans" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg", "id" : "allergens_no_molluscs", @@ -219,7 +228,7 @@ "title" : "Does not contain: Molluscs" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg", "id" : "allergens_no_sulphur_dioxide_and_sulphites", @@ -272,26 +281,25 @@ { "attributes" : [ { - "description" : "", - "description_short" : "Processed foods", - "grade" : "b", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", + "description_short" : "4 ultra-processing markers", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", "id" : "nova", - "match" : 75, + "match" : 0, "name" : "NOVA group", "panel_id" : "nova", "status" : "known", - "title" : "NOVA 3" + "title" : "Ultra-processed foods" }, { - "grade" : "a", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/0-additives.svg", + "grade" : "c", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg", "id" : "additives", - "match" : 100, + "match" : 60, "name" : "Additives", "panel_id" : "additives", "status" : "known", - "title" : "Without additives" + "title" : "2 additives" } ], "id" : "processing", @@ -317,7 +325,7 @@ "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg", "id" : "forest_footprint", - "match" : 99.9416666666667, + "match" : 99.9351851851852, "name" : "Forest footprint", "status" : "known", "title" : "Very small forest footprint" @@ -364,7 +372,7 @@ "grade" : "c", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-c-new-en.svg", "id" : "nutriscore", - "match" : 51.5555555555556, + "match" : 49.4444444444444, "name" : "Nutri-Score", "panel_id" : "nutriscore_2023", "status" : "known", @@ -417,7 +425,7 @@ { "attributes" : [ { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-gluten.svg", "id" : "allergens_no_gluten", @@ -447,7 +455,7 @@ "title" : "Contains: Eggs" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg", "id" : "allergens_no_nuts", @@ -457,7 +465,7 @@ "title" : "Does not contain: Nuts" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg", "id" : "allergens_no_peanuts", @@ -467,7 +475,7 @@ "title" : "Does not contain: Peanuts" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg", "id" : "allergens_no_sesame_seeds", @@ -477,17 +485,17 @@ "title" : "Does not contain: Sesame seeds" }, { - "debug" : "4 ingredients (0 unknown)", - "grade" : "a", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg", + "debug" : "en:soybeans in allergens", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/contains-soybeans.svg", "id" : "allergens_no_soybeans", - "match" : 100, + "match" : 0, "name" : "Soybeans", "status" : "known", - "title" : "Does not contain: Soybeans" + "title" : "Contains: Soybeans" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg", "id" : "allergens_no_celery", @@ -497,7 +505,7 @@ "title" : "Does not contain: Celery" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg", "id" : "allergens_no_mustard", @@ -507,7 +515,7 @@ "title" : "Does not contain: Mustard" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg", "id" : "allergens_no_lupin", @@ -517,7 +525,7 @@ "title" : "Does not contain: Lupin" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg", "id" : "allergens_no_fish", @@ -527,7 +535,7 @@ "title" : "Does not contain: Fish" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg", "id" : "allergens_no_crustaceans", @@ -537,7 +545,7 @@ "title" : "Does not contain: Crustaceans" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg", "id" : "allergens_no_molluscs", @@ -547,7 +555,7 @@ "title" : "Does not contain: Molluscs" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg", "id" : "allergens_no_sulphur_dioxide_and_sulphites", @@ -600,26 +608,25 @@ { "attributes" : [ { - "description" : "", - "description_short" : "Processed foods", - "grade" : "b", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", + "description_short" : "4 ultra-processing markers", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", "id" : "nova", - "match" : 75, + "match" : 0, "name" : "NOVA group", "panel_id" : "nova", "status" : "known", - "title" : "NOVA 3" + "title" : "Ultra-processed foods" }, { - "grade" : "a", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/0-additives.svg", + "grade" : "c", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg", "id" : "additives", - "match" : 100, + "match" : 60, "name" : "Additives", "panel_id" : "additives", "status" : "known", - "title" : "Without additives" + "title" : "2 additives" } ], "id" : "processing", @@ -645,7 +652,7 @@ "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg", "id" : "forest_footprint", - "match" : 99.9416666666667, + "match" : 99.9351851851852, "name" : "Forest footprint", "status" : "known", "title" : "Very small forest footprint" @@ -1213,7 +1220,7 @@ "en:biscuits-and-cakes" ], "forest_footprint_data" : { - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "grade" : "a", "ingredients" : [ { @@ -1223,10 +1230,10 @@ "en:organic" ] ], - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "matching_tag_id" : "en:egg", - "percent" : 9.375, - "percent_estimate" : 9.375, + "percent" : 10.4166666666667, + "percent_estimate" : 10.4166666666667, "processing_factor" : 1, "tag_id" : "en:egg", "tag_type" : "ingredients", @@ -1251,9 +1258,9 @@ "ecobalyse_code" : "apple-fr", "id" : "en:apple", "is_in_taxonomy" : 1, - "percent_estimate" : 62.5, + "percent_estimate" : 58.3333333333333, "percent_max" : 100, - "percent_min" : 25, + "percent_min" : 16.6666666666667, "text" : "apple", "vegan" : "yes", "vegetarian" : "yes" @@ -1263,7 +1270,7 @@ "ecobalyse_code" : "milk", "id" : "en:milk", "is_in_taxonomy" : 1, - "percent_estimate" : 18.75, + "percent_estimate" : 20.8333333333333, "percent_max" : 50, "percent_min" : 0, "text" : "milk", @@ -1275,7 +1282,7 @@ "ecobalyse_code" : "egg-indoor-code3", "id" : "en:egg", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 10.4166666666667, "percent_max" : 33.3333333333333, "percent_min" : 0, "text" : "eggs", @@ -1288,12 +1295,53 @@ "from_palm_oil" : "yes", "id" : "en:palm-oil", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 5.20833333333333, "percent_max" : 25, "percent_min" : 0, "text" : "palm oil", "vegan" : "yes", "vegetarian" : "yes" + }, + { + "id" : "en:colour", + "ingredients" : [ + { + "id" : "en:e100", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "curcumin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "coloring" + }, + { + "id" : "en:emulsifier", + "ingredients" : [ + { + "ciqual_food_code" : "42200", + "id" : "en:soya-lecithin", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "soy lecithin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "emulsifier" } ], "ingredients_analysis" : { @@ -1320,12 +1368,18 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], "ingredients_lc" : "en", - "ingredients_n" : 4, + "ingredients_n" : 8, "ingredients_n_tags" : [ - "4", + "8", "1-10" ], "ingredients_non_nutritive_sweeteners_n" : 0, @@ -1333,7 +1387,11 @@ "en:apple", "en:milk", "en:egg", - "en:palm-oil" + "en:palm-oil", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin" ], "ingredients_percent_analysis" : 1, "ingredients_sweeteners_n" : 0, @@ -1347,23 +1405,121 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], - "ingredients_text" : "apple, milk, eggs, palm oil", - "ingredients_text_en" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil", + "ingredients_text" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "ingredients_with_specified_percent_n" : 0, "ingredients_with_specified_percent_sum" : 0, - "ingredients_with_unspecified_percent_n" : 4, + "ingredients_with_unspecified_percent_n" : 6, "ingredients_with_unspecified_percent_sum" : 100, - "ingredients_without_ciqual_codes" : [], - "ingredients_without_ciqual_codes_n" : 0, - "ingredients_without_ecobalyse_ids" : [], - "ingredients_without_ecobalyse_ids_n" : 0, + "ingredients_without_ciqual_codes" : [ + "en:colour", + "en:e100", + "en:emulsifier" + ], + "ingredients_without_ciqual_codes_n" : 3, + "ingredients_without_ecobalyse_ids" : [ + "en:colour", + "en:e100", + "en:emulsifier", + "en:soya-lecithin" + ], + "ingredients_without_ecobalyse_ids_n" : 4, "interface_version_created" : "20150316.jqm2", "interface_version_modified" : "20150316.jqm2", "knowledge_panels" : { + "additive_en:e100" : { + "elements" : [], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E100 - Curcumin" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin: Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "English", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322 - Lecithins" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322i" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin: Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "English", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322i - Lecithin" + }, + "topics" : [ + "health" + ] + }, + "additives" : { + "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e100" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322i" + } + } + ], + "expanded" : true, + "level" : "info", + "topics" : [ + "health" + ], + "type" : "inline" + }, "carbon_footprint" : { "elements" : [ { @@ -1971,6 +2127,15 @@ "title" : "Food processing" } }, + { + "element_type" : "panel_group", + "panel_group_element" : { + "panel_ids" : [ + "additives" + ], + "title" : "Additives" + } + }, { "element_type" : "panel_group", "panel_group_element" : { @@ -2043,8 +2208,8 @@ "text_element" : { "edit_field_id" : "ingredients_text_en", "edit_field_type" : "ingredients_text", - "edit_field_value" : "apple, milk, eggs, palm oil", - "html" : "apple, milk, eggs, palm oil", + "edit_field_value" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "html" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "language" : "English", "lc" : "en" } @@ -2052,7 +2217,7 @@ { "element_type" : "text", "text_element" : { - "html" : "Allergens: \n Apple, Eggs, Milk\n " + "html" : "Allergens: \n Apple, Eggs, Milk, Soybeans\n " } } ], @@ -2063,7 +2228,7 @@ "title_element" : { "icon_color_from_evaluation" : true, "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/ingredients.svg", - "title" : "4 ingredients" + "title" : "8 ingredients" }, "topics" : [ "health" @@ -2108,13 +2273,13 @@ { "element_type" : "text", "text_element" : { - "html" : "en: apple, milk, eggs, palm oil" + "html" : "en: apple, milk, eggs, palm oil, coloring (curcumin), emulsifier (soy lecithin)" } }, { "element_type" : "text", "text_element" : { - "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 25 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
\n" + "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 16.6666666666667 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
  9. coloring -> en:colour - percent_min: 0 - percent_max: 20
      \n
    1. curcumin -> en:e100 - vegan: yes - vegetarian: yes - percent_min: 0 - percent_max: 20
    2. \n
    \n
  10. \n
  11. emulsifier -> en:emulsifier - percent_min: 0 - percent_max: 16.6666666666667
      \n
    1. soy lecithin -> en:soya-lecithin - vegan: yes - vegetarian: yes - ciqual_food_code: 42200 - percent_min: 0 - percent_max: 16.6666666666667
    2. \n
    \n
  12. \n
\n" } }, { @@ -2208,23 +2373,30 @@ }, "nova" : { "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "recommendation_ultra_processed_foods" + } + }, { "element_type" : "text", "text_element" : { - "html" : "\n\n \n \n

Elements that indicate the product is in the 3 - Processed foods group:

\n
    \n \n
  • Category: Sweet snacks
  • \n \n
\n \n \n\n" + "html" : "\n\n \n \n

Elements that indicate the product is in the 4 - Ultra processed food and drink products group:

\n
    \n \n
  • Additive: E100 - Curcumin
  • \n \n
  • Additive: E322 - Lecithins
  • \n \n
  • Ingredient: Colour
  • \n \n
  • Ingredient: Emulsifier
  • \n \n
\n \n \n\n" } }, { "element_type" : "text", "text_element" : { - "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" + "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra-processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" } } ], "level" : "info", "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", - "title" : "Processed foods" + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", + "subtitle" : "4 ultra-processing markers", + "title" : "Ultra-processed foods" }, "topics" : [ "health" @@ -2417,7 +2589,7 @@ { "element_type" : "text", "text_element" : { - "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 62\n ", + "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 58\n ", "type" : "warning" } }, @@ -2455,7 +2627,7 @@ "nutriscore_component_fiber", "nutriscore_component_fruits_vegetables_legumes" ], - "title" : "Positive points: 3/17" + "title" : "Positive points: 2/17" } }, { @@ -2529,8 +2701,8 @@ "level" : "info", "size" : "small", "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-2-5.svg", - "subtitle" : "2/5 points (62.5%)", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-1-5.svg", + "subtitle" : "1/5 points (58.3%)", "title" : "Fruits, vegetables and legumes" }, "topics" : [ @@ -2649,14 +2821,14 @@ { "element_type" : "text", "text_element" : { - "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 62\n ", + "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 58\n ", "type" : "warning" } }, { "element_type" : "text", "text_element" : { - "html" : "\n\n

This product is not considered a beverage for the calculation of the Nutri-Score.

\n\n\n\n\n\n

Points for proteins are counted because the negative points are less than 11.

\n\n

\n Nutritional score: 6\n (9 - 3)\n

\n

Nutri-Score: C

\n " + "html" : "\n\n

This product is not considered a beverage for the calculation of the Nutri-Score.

\n\n\n\n\n\n

Points for proteins are counted because the negative points are less than 11.

\n\n

\n Nutritional score: 7\n (9 - 2)\n

\n

Nutri-Score: C

\n " } } ], @@ -2827,10 +2999,10 @@ "text" : "Fruits‚ vegetables‚ nuts and rapeseed‚ walnut and olive oils (estimate from ingredients list analysis)" }, { - "text" : "62.5 %" + "text" : "58.333 %" }, { - "text" : "62.5 %" + "text" : "58.333 %" } ] } @@ -3082,6 +3254,32 @@ "environment" ] }, + "recommendation_ultra_processed_foods" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "\n Several studies have found that a high consumption of ultra-processed foods is associated with an increased risk of noncommunicable chronic diseases, such as obesity, hypertension and diabetes.\n ", + "source_language" : "en", + "source_text" : "Ultra-processed foods increase noncommunicable chronic disease risk", + "source_url" : "https://pubmed.ncbi.nlm.nih.gov/34798466/", + "type" : "quote" + } + } + ], + "evaluation" : "bad", + "level" : "recommendation", + "title_element" : { + "evaluation" : "bad", + "icon_color_from_evaluation" : true, + "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/arrow-bottom-right-thick.svg", + "subtitle" : "Ultra-processed foods increase noncommunicable chronic disease risk", + "title" : "Limit ultra-processed foods" + }, + "topics" : [ + "health" + ] + }, "report_problem_card" : { "elements" : [ { @@ -3141,7 +3339,7 @@ "type" : "inline" } }, - "known_ingredients_n" : 10, + "known_ingredients_n" : 16, "labels" : "organic", "labels_hierarchy" : [ "en:organic" @@ -3183,9 +3381,8 @@ "en:ecoscore-missing-data-warning", "en:forest-footprint-a", "en:forest-footprint-computed", - "en:nutriscore-2021-b-2023-c", - "en:nutriscore-2021-better-than-2023", - "en:nutriscore-2021-different-from-2023", + "en:nutriscore-2021-c-2023-c", + "en:nutriscore-2021-same-as-2023", "en:nutriscore-computed", "en:nutrition-all-nutriscore-values-known", "en:nutrition-fruits-vegetables-legumes-estimate-from-ingredients", @@ -3196,19 +3393,37 @@ "en:packagings-number-of-components-4", "en:main-countries-new-product" ], - "nova_group" : 3, + "nova_group" : 4, "nova_group_debug" : "", - "nova_groups" : "3", + "nova_groups" : "4", "nova_groups_markers" : { "3" : [ [ "categories", "en:sweet-snacks" ] + ], + "4" : [ + [ + "additives", + "en:e100" + ], + [ + "additives", + "en:e322" + ], + [ + "ingredients", + "en:colour" + ], + [ + "ingredients", + "en:emulsifier" + ] ] }, "nova_groups_tags" : [ - "en:3-processed-foods" + "en:4-ultra-processed-food-and-drink-products" ], "nucleotides_tags" : [], "nutrient_levels" : { @@ -3250,15 +3465,15 @@ "fiber_serving" : 0.2, "fiber_unit" : "g", "fiber_value" : 2, - "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 62.5, - "nova-group" : 3, - "nova-group_100g" : 3, - "nova-group_serving" : 3, - "nutrition-score-fr" : 2, - "nutrition-score-fr_100g" : 2, + "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 58.3333333333333, + "nova-group" : 4, + "nova-group_100g" : 4, + "nova-group_serving" : 4, + "nutrition-score-fr" : 3, + "nutrition-score-fr_100g" : 3, "proteins" : 4.5, "proteins_100g" : 4.5, "proteins_serving" : 0.45, @@ -3285,53 +3500,6 @@ "sugars_unit" : "g", "sugars_value" : 12.5 }, - "nutriments_estimated" : { - "alcohol_100g" : 0, - "beta-carotene_100g" : 1.19375e-05, - "calcium_100g" : 0.0333875, - "carbohydrates_100g" : 7.6484375, - "cholesterol_100g" : 0.03778125, - "copper_100g" : 2.678125e-05, - "energy-kcal_100g" : 134.5875, - "energy-kj_100g" : 558.75, - "energy_100g" : 558.75, - "fat_100g" : 10.4134375, - "fiber_100g" : 0.8125, - "fructose_100g" : 3.77578125, - "galactose_100g" : 0, - "glucose_100g" : 2.0565625, - "iodine_100g" : 7.09375e-06, - "iron_100g" : 0.0002265625, - "lactose_100g" : 0.924375, - "magnesium_100g" : 0.00570625, - "maltose_100g" : 0.00703125, - "manganese_100g" : 2.73828125e-05, - "pantothenic-acid_100g" : 0.0002590625, - "phosphorus_100g" : 0.0445625, - "phylloquinone_100g" : 1.153125e-06, - "polyols_100g" : 0.36875, - "potassium_100g" : 0.09825, - "proteins_100g" : 1.974375, - "salt_100g" : 0.0496875, - "saturated-fat_100g" : 4.903125, - "selenium_100g" : 1.2290625e-06, - "sodium_100g" : 0.019725, - "starch_100g" : 0, - "sucrose_100g" : 0.51953125, - "sugars_100g" : 7.2621875, - "vitamin-a_100g" : 1.739625e-05, - "vitamin-b12_100g" : 2.278125e-07, - "vitamin-b1_100g" : 2.509375e-05, - "vitamin-b2_100g" : 9.34375e-05, - "vitamin-b6_100g" : 4.54375e-05, - "vitamin-b9_100g" : 4.10625e-06, - "vitamin-c_100g" : 0.00274375, - "vitamin-d_100g" : 1.903125e-07, - "vitamin-e_100g" : 0.001657625, - "vitamin-pp_100g" : 8.003125e-05, - "water_100g" : 78.365625, - "zinc_100g" : 0.0002046875 - }, "nutriscore" : { "2021" : { "category_available" : 1, @@ -3342,15 +3510,15 @@ "fiber" : 2, "fiber_points" : 2, "fiber_value" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, + "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 1, + "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 58.3, "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, "negative_points" : 8, - "positive_points" : 6, + "positive_points" : 5, "proteins" : 4.5, "proteins_points" : 2, "proteins_value" : 4.5, @@ -3364,11 +3532,11 @@ "sugars_points" : 2, "sugars_value" : 12.5 }, - "grade" : "b", + "grade" : "c", "nutrients_available" : 1, "nutriscore_applicable" : 1, "nutriscore_computed" : 1, - "score" : 2 + "score" : 3 }, "2023" : { "category_available" : 1, @@ -3421,10 +3589,10 @@ }, { "id" : "fruits_vegetables_legumes", - "points" : 2, + "points" : 1, "points_max" : 5, "unit" : "%", - "value" : 62.5 + "value" : 58.3 } ] }, @@ -3442,18 +3610,18 @@ "fiber", "fruits_vegetables_legumes" ], - "positive_points" : 3, + "positive_points" : 2, "positive_points_max" : 17 }, "grade" : "c", "nutrients_available" : 1, "nutriscore_applicable" : 1, "nutriscore_computed" : 1, - "score" : 6 + "score" : 7 } }, "nutriscore_2021_tags" : [ - "b" + "c" ], "nutriscore_2023_tags" : [ "c" @@ -3465,23 +3633,23 @@ "fiber" : 2, "fiber_points" : 2, "fiber_value" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, - "grade" : "b", + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, + "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 1, + "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 58.3, + "grade" : "c", "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, "negative_points" : 8, - "positive_points" : 6, + "positive_points" : 5, "proteins" : 4.5, "proteins_points" : 2, "proteins_value" : 4.5, "saturated_fat" : 5.6, "saturated_fat_points" : 5, "saturated_fat_value" : 5.6, - "score" : 2, + "score" : 3, "sodium" : 20.08, "sodium_points" : 0, "sodium_value" : 20.1, @@ -3489,27 +3657,27 @@ "sugars_points" : 2, "sugars_value" : 12.5 }, - "nutriscore_grade" : "b", - "nutriscore_score" : 2, - "nutriscore_score_opposite" : -2, + "nutriscore_grade" : "c", + "nutriscore_score" : 3, + "nutriscore_score_opposite" : -3, "nutriscore_tags" : [ - "b" + "c" ], "nutriscore_version" : "2021", "nutrition_data" : "on", "nutrition_data_per" : "100g", "nutrition_data_prepared_per" : "100g", - "nutrition_grade_fr" : "b", - "nutrition_grades" : "b", + "nutrition_grade_fr" : "c", + "nutrition_grades" : "c", "nutrition_grades_tags" : [ - "b" + "c" ], "nutrition_score_beverage" : 0, "nutrition_score_debug" : "", "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 58.3333333333333, "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 58.3333333333333, "origin" : "france", "origin_en" : "france", "other_nutritional_substances_tags" : [], diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-fields-knowledge-panels-knowledge-panels_excluded-environment_card.json b/tests/integration/expected_test_results/api_v2_product_read/get-fields-knowledge-panels-knowledge-panels_excluded-environment_card.json index 726a1d70c7e8a..211e07e3447af 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-fields-knowledge-panels-knowledge-panels_excluded-environment_card.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-fields-knowledge-panels-knowledge-panels_excluded-environment_card.json @@ -2,6 +2,89 @@ "code" : "0200000000034", "product" : { "knowledge_panels" : { + "additive_en:e100" : { + "elements" : [], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E100 - Curcumin" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin: Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "English", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322 - Lecithins" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322i" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin: Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "English", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322i - Lecithin" + }, + "topics" : [ + "health" + ] + }, + "additives" : { + "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e100" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322i" + } + } + ], + "expanded" : true, + "level" : "info", + "topics" : [ + "health" + ], + "type" : "inline" + }, "health_card" : { "elements" : [ { @@ -46,6 +129,15 @@ "title" : "Food processing" } }, + { + "element_type" : "panel_group", + "panel_group_element" : { + "panel_ids" : [ + "additives" + ], + "title" : "Additives" + } + }, { "element_type" : "panel_group", "panel_group_element" : { @@ -118,8 +210,8 @@ "text_element" : { "edit_field_id" : "ingredients_text_en", "edit_field_type" : "ingredients_text", - "edit_field_value" : "apple, milk, eggs, palm oil", - "html" : "apple, milk, eggs, palm oil", + "edit_field_value" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "html" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "language" : "English", "lc" : "en" } @@ -127,7 +219,7 @@ { "element_type" : "text", "text_element" : { - "html" : "Allergens: \n Apple, Eggs, Milk\n " + "html" : "Allergens: \n Apple, Eggs, Milk, Soybeans\n " } } ], @@ -138,7 +230,7 @@ "title_element" : { "icon_color_from_evaluation" : true, "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/ingredients.svg", - "title" : "4 ingredients" + "title" : "8 ingredients" }, "topics" : [ "health" @@ -183,13 +275,13 @@ { "element_type" : "text", "text_element" : { - "html" : "en: apple, milk, eggs, palm oil" + "html" : "en: apple, milk, eggs, palm oil, coloring (curcumin), emulsifier (soy lecithin)" } }, { "element_type" : "text", "text_element" : { - "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 25 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
\n" + "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 16.6666666666667 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
  9. coloring -> en:colour - percent_min: 0 - percent_max: 20
      \n
    1. curcumin -> en:e100 - vegan: yes - vegetarian: yes - percent_min: 0 - percent_max: 20
    2. \n
    \n
  10. \n
  11. emulsifier -> en:emulsifier - percent_min: 0 - percent_max: 16.6666666666667
      \n
    1. soy lecithin -> en:soya-lecithin - vegan: yes - vegetarian: yes - ciqual_food_code: 42200 - percent_min: 0 - percent_max: 16.6666666666667
    2. \n
    \n
  12. \n
\n" } }, { @@ -286,20 +378,21 @@ { "element_type" : "text", "text_element" : { - "html" : "\n\n \n \n

Elements that indicate the product is in the 3 - Processed foods group:

\n
    \n \n
  • Category: Sweet snacks
  • \n \n
\n \n \n\n" + "html" : "\n\n \n \n

Elements that indicate the product is in the 4 - Ultra processed food and drink products group:

\n
    \n \n
  • Additive: E100 - Curcumin
  • \n \n
  • Additive: E322 - Lecithins
  • \n \n
  • Ingredient: Colour
  • \n \n
  • Ingredient: Emulsifier
  • \n \n
\n \n \n\n" } }, { "element_type" : "text", "text_element" : { - "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" + "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra-processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" } } ], "level" : "info", "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", - "title" : "Processed foods" + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", + "subtitle" : "4 ultra-processing markers", + "title" : "Ultra-processed foods" }, "topics" : [ "health" @@ -492,7 +585,7 @@ { "element_type" : "text", "text_element" : { - "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 62\n ", + "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 58\n ", "type" : "warning" } }, @@ -530,7 +623,7 @@ "nutriscore_component_fiber", "nutriscore_component_fruits_vegetables_legumes" ], - "title" : "Positive points: 3/17" + "title" : "Positive points: 2/17" } }, { @@ -604,8 +697,8 @@ "level" : "info", "size" : "small", "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-2-5.svg", - "subtitle" : "2/5 points (62.5%)", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-1-5.svg", + "subtitle" : "1/5 points (58.3%)", "title" : "Fruits, vegetables and legumes" }, "topics" : [ @@ -724,14 +817,14 @@ { "element_type" : "text", "text_element" : { - "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 62\n ", + "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 58\n ", "type" : "warning" } }, { "element_type" : "text", "text_element" : { - "html" : "\n\n

This product is not considered a beverage for the calculation of the Nutri-Score.

\n\n\n\n\n\n

Points for proteins are counted because the negative points are less than 11.

\n\n

\n Nutritional score: 6\n (9 - 3)\n

\n

Nutri-Score: C

\n " + "html" : "\n\n

This product is not considered a beverage for the calculation of the Nutri-Score.

\n\n\n\n\n\n

Points for proteins are counted because the negative points are less than 11.

\n\n

\n Nutritional score: 7\n (9 - 2)\n

\n

Nutri-Score: C

\n " } } ], @@ -902,10 +995,10 @@ "text" : "Fruits‚ vegetables‚ nuts and rapeseed‚ walnut and olive oils (estimate from ingredients list analysis)" }, { - "text" : "62.5 %" + "text" : "58.333 %" }, { - "text" : "62.5 %" + "text" : "58.333 %" } ] } diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-fields-knowledge-panels-knowledge-panels_included-health_card-environment_card.json b/tests/integration/expected_test_results/api_v2_product_read/get-fields-knowledge-panels-knowledge-panels_included-health_card-environment_card.json index 2f553995be436..d11c00ab826ab 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-fields-knowledge-panels-knowledge-panels_included-health_card-environment_card.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-fields-knowledge-panels-knowledge-panels_included-health_card-environment_card.json @@ -2,6 +2,89 @@ "code" : "0200000000034", "product" : { "knowledge_panels" : { + "additive_en:e100" : { + "elements" : [], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E100 - Curcumin" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin: Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "English", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322 - Lecithins" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322i" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin: Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "English", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322i - Lecithin" + }, + "topics" : [ + "health" + ] + }, + "additives" : { + "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e100" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322i" + } + } + ], + "expanded" : true, + "level" : "info", + "topics" : [ + "health" + ], + "type" : "inline" + }, "carbon_footprint" : { "elements" : [ { @@ -609,6 +692,15 @@ "title" : "Food processing" } }, + { + "element_type" : "panel_group", + "panel_group_element" : { + "panel_ids" : [ + "additives" + ], + "title" : "Additives" + } + }, { "element_type" : "panel_group", "panel_group_element" : { @@ -636,8 +728,8 @@ "text_element" : { "edit_field_id" : "ingredients_text_en", "edit_field_type" : "ingredients_text", - "edit_field_value" : "apple, milk, eggs, palm oil", - "html" : "apple, milk, eggs, palm oil", + "edit_field_value" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "html" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "language" : "English", "lc" : "en" } @@ -645,7 +737,7 @@ { "element_type" : "text", "text_element" : { - "html" : "Allergens: \n Apple, Eggs, Milk\n " + "html" : "Allergens: \n Apple, Eggs, Milk, Soybeans\n " } } ], @@ -656,7 +748,7 @@ "title_element" : { "icon_color_from_evaluation" : true, "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/ingredients.svg", - "title" : "4 ingredients" + "title" : "8 ingredients" }, "topics" : [ "health" @@ -701,13 +793,13 @@ { "element_type" : "text", "text_element" : { - "html" : "en: apple, milk, eggs, palm oil" + "html" : "en: apple, milk, eggs, palm oil, coloring (curcumin), emulsifier (soy lecithin)" } }, { "element_type" : "text", "text_element" : { - "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 25 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
\n" + "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 16.6666666666667 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
  9. coloring -> en:colour - percent_min: 0 - percent_max: 20
      \n
    1. curcumin -> en:e100 - vegan: yes - vegetarian: yes - percent_min: 0 - percent_max: 20
    2. \n
    \n
  10. \n
  11. emulsifier -> en:emulsifier - percent_min: 0 - percent_max: 16.6666666666667
      \n
    1. soy lecithin -> en:soya-lecithin - vegan: yes - vegetarian: yes - ciqual_food_code: 42200 - percent_min: 0 - percent_max: 16.6666666666667
    2. \n
    \n
  12. \n
\n" } }, { @@ -801,23 +893,30 @@ }, "nova" : { "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "recommendation_ultra_processed_foods" + } + }, { "element_type" : "text", "text_element" : { - "html" : "\n\n \n \n

Elements that indicate the product is in the 3 - Processed foods group:

\n
    \n \n
  • Category: Sweet snacks
  • \n \n
\n \n \n\n" + "html" : "\n\n \n \n

Elements that indicate the product is in the 4 - Ultra processed food and drink products group:

\n
    \n \n
  • Additive: E100 - Curcumin
  • \n \n
  • Additive: E322 - Lecithins
  • \n \n
  • Ingredient: Colour
  • \n \n
  • Ingredient: Emulsifier
  • \n \n
\n \n \n\n" } }, { "element_type" : "text", "text_element" : { - "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" + "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra-processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" } } ], "level" : "info", "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", - "title" : "Processed foods" + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", + "subtitle" : "4 ultra-processing markers", + "title" : "Ultra-processed foods" }, "topics" : [ "health" @@ -1010,7 +1109,7 @@ { "element_type" : "text", "text_element" : { - "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 62\n ", + "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 58\n ", "type" : "warning" } }, @@ -1048,7 +1147,7 @@ "nutriscore_component_fiber", "nutriscore_component_fruits_vegetables_legumes" ], - "title" : "Positive points: 3/17" + "title" : "Positive points: 2/17" } }, { @@ -1122,8 +1221,8 @@ "level" : "info", "size" : "small", "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-2-5.svg", - "subtitle" : "2/5 points (62.5%)", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-1-5.svg", + "subtitle" : "1/5 points (58.3%)", "title" : "Fruits, vegetables and legumes" }, "topics" : [ @@ -1242,14 +1341,14 @@ { "element_type" : "text", "text_element" : { - "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 62\n ", + "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 58\n ", "type" : "warning" } }, { "element_type" : "text", "text_element" : { - "html" : "\n\n

This product is not considered a beverage for the calculation of the Nutri-Score.

\n\n\n\n\n\n

Points for proteins are counted because the negative points are less than 11.

\n\n

\n Nutritional score: 6\n (9 - 3)\n

\n

Nutri-Score: C

\n " + "html" : "\n\n

This product is not considered a beverage for the calculation of the Nutri-Score.

\n\n\n\n\n\n

Points for proteins are counted because the negative points are less than 11.

\n\n

\n Nutritional score: 7\n (9 - 2)\n

\n

Nutri-Score: C

\n " } } ], @@ -1420,10 +1519,10 @@ "text" : "Fruits‚ vegetables‚ nuts and rapeseed‚ walnut and olive oils (estimate from ingredients list analysis)" }, { - "text" : "62.5 %" + "text" : "58.333 %" }, { - "text" : "62.5 %" + "text" : "58.333 %" } ] } @@ -1675,6 +1774,32 @@ "environment" ] }, + "recommendation_ultra_processed_foods" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "\n Several studies have found that a high consumption of ultra-processed foods is associated with an increased risk of noncommunicable chronic diseases, such as obesity, hypertension and diabetes.\n ", + "source_language" : "en", + "source_text" : "Ultra-processed foods increase noncommunicable chronic disease risk", + "source_url" : "https://pubmed.ncbi.nlm.nih.gov/34798466/", + "type" : "quote" + } + } + ], + "evaluation" : "bad", + "level" : "recommendation", + "title_element" : { + "evaluation" : "bad", + "icon_color_from_evaluation" : true, + "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/arrow-bottom-right-thick.svg", + "subtitle" : "Ultra-processed foods increase noncommunicable chronic disease risk", + "title" : "Limit ultra-processed foods" + }, + "topics" : [ + "health" + ] + }, "root" : { "elements" : [ { diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-fields-raw.json b/tests/integration/expected_test_results/api_v2_product_read/get-fields-raw.json index 6af0aad5a4e90..70304a5c1d252 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-fields-raw.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-fields-raw.json @@ -10,21 +10,30 @@ "tester" ], "added_countries_tags" : [], - "additives_n" : 0, - "additives_original_tags" : [], - "additives_tags" : [], + "additives_n" : 2, + "additives_original_tags" : [ + "en:e100", + "en:e322i" + ], + "additives_tags" : [ + "en:e100", + "en:e322", + "en:e322i" + ], "allergens" : "", - "allergens_from_ingredients" : "en:eggs, en:milk, apple, milk, eggs", + "allergens_from_ingredients" : "en:soybeans, en:eggs, en:milk, apple, milk, eggs", "allergens_from_user" : "(en) ", "allergens_hierarchy" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "allergens_tags" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "amino_acids_tags" : [], "categories" : "cookies", @@ -552,7 +561,7 @@ "en:biscuits-and-cakes" ], "forest_footprint_data" : { - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "grade" : "a", "ingredients" : [ { @@ -562,10 +571,10 @@ "en:organic" ] ], - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "matching_tag_id" : "en:egg", - "percent" : 9.375, - "percent_estimate" : 9.375, + "percent" : 10.4166666666667, + "percent_estimate" : 10.4166666666667, "processing_factor" : 1, "tag_id" : "en:egg", "tag_type" : "ingredients", @@ -590,9 +599,9 @@ "ecobalyse_code" : "apple-fr", "id" : "en:apple", "is_in_taxonomy" : 1, - "percent_estimate" : 62.5, + "percent_estimate" : 58.3333333333333, "percent_max" : 100, - "percent_min" : 25, + "percent_min" : 16.6666666666667, "text" : "apple", "vegan" : "yes", "vegetarian" : "yes" @@ -602,7 +611,7 @@ "ecobalyse_code" : "milk", "id" : "en:milk", "is_in_taxonomy" : 1, - "percent_estimate" : 18.75, + "percent_estimate" : 20.8333333333333, "percent_max" : 50, "percent_min" : 0, "text" : "milk", @@ -614,7 +623,7 @@ "ecobalyse_code" : "egg-indoor-code3", "id" : "en:egg", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 10.4166666666667, "percent_max" : 33.3333333333333, "percent_min" : 0, "text" : "eggs", @@ -627,12 +636,53 @@ "from_palm_oil" : "yes", "id" : "en:palm-oil", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 5.20833333333333, "percent_max" : 25, "percent_min" : 0, "text" : "palm oil", "vegan" : "yes", "vegetarian" : "yes" + }, + { + "id" : "en:colour", + "ingredients" : [ + { + "id" : "en:e100", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "curcumin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "coloring" + }, + { + "id" : "en:emulsifier", + "ingredients" : [ + { + "ciqual_food_code" : "42200", + "id" : "en:soya-lecithin", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "soy lecithin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "emulsifier" } ], "ingredients_analysis" : { @@ -659,12 +709,18 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], "ingredients_lc" : "en", - "ingredients_n" : 4, + "ingredients_n" : 8, "ingredients_n_tags" : [ - "4", + "8", "1-10" ], "ingredients_non_nutritive_sweeteners_n" : 0, @@ -672,7 +728,11 @@ "en:apple", "en:milk", "en:egg", - "en:palm-oil" + "en:palm-oil", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin" ], "ingredients_percent_analysis" : 1, "ingredients_sweeteners_n" : 0, @@ -686,23 +746,38 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], - "ingredients_text" : "apple, milk, eggs, palm oil", - "ingredients_text_en" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil", + "ingredients_text" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "ingredients_with_specified_percent_n" : 0, "ingredients_with_specified_percent_sum" : 0, - "ingredients_with_unspecified_percent_n" : 4, + "ingredients_with_unspecified_percent_n" : 6, "ingredients_with_unspecified_percent_sum" : 100, - "ingredients_without_ciqual_codes" : [], - "ingredients_without_ciqual_codes_n" : 0, - "ingredients_without_ecobalyse_ids" : [], - "ingredients_without_ecobalyse_ids_n" : 0, + "ingredients_without_ciqual_codes" : [ + "en:colour", + "en:e100", + "en:emulsifier" + ], + "ingredients_without_ciqual_codes_n" : 3, + "ingredients_without_ecobalyse_ids" : [ + "en:colour", + "en:e100", + "en:emulsifier", + "en:soya-lecithin" + ], + "ingredients_without_ecobalyse_ids_n" : 4, "interface_version_created" : "20150316.jqm2", "interface_version_modified" : "20150316.jqm2", - "known_ingredients_n" : 10, + "known_ingredients_n" : 16, "labels" : "organic", "labels_hierarchy" : [ "en:organic" @@ -744,9 +819,8 @@ "en:ecoscore-missing-data-warning", "en:forest-footprint-a", "en:forest-footprint-computed", - "en:nutriscore-2021-b-2023-c", - "en:nutriscore-2021-better-than-2023", - "en:nutriscore-2021-different-from-2023", + "en:nutriscore-2021-c-2023-c", + "en:nutriscore-2021-same-as-2023", "en:nutriscore-computed", "en:nutrition-all-nutriscore-values-known", "en:nutrition-fruits-vegetables-legumes-estimate-from-ingredients", @@ -757,19 +831,37 @@ "en:packagings-number-of-components-4", "en:main-countries-new-product" ], - "nova_group" : 3, + "nova_group" : 4, "nova_group_debug" : "", - "nova_groups" : "3", + "nova_groups" : "4", "nova_groups_markers" : { "3" : [ [ "categories", "en:sweet-snacks" ] + ], + "4" : [ + [ + "additives", + "en:e100" + ], + [ + "additives", + "en:e322" + ], + [ + "ingredients", + "en:colour" + ], + [ + "ingredients", + "en:emulsifier" + ] ] }, "nova_groups_tags" : [ - "en:3-processed-foods" + "en:4-ultra-processed-food-and-drink-products" ], "nucleotides_tags" : [], "nutrient_levels" : { @@ -811,15 +903,15 @@ "fiber_serving" : 0.2, "fiber_unit" : "g", "fiber_value" : 2, - "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 62.5, - "nova-group" : 3, - "nova-group_100g" : 3, - "nova-group_serving" : 3, - "nutrition-score-fr" : 2, - "nutrition-score-fr_100g" : 2, + "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 58.3333333333333, + "nova-group" : 4, + "nova-group_100g" : 4, + "nova-group_serving" : 4, + "nutrition-score-fr" : 3, + "nutrition-score-fr_100g" : 3, "proteins" : 4.5, "proteins_100g" : 4.5, "proteins_serving" : 0.45, @@ -846,53 +938,6 @@ "sugars_unit" : "g", "sugars_value" : 12.5 }, - "nutriments_estimated" : { - "alcohol_100g" : 0, - "beta-carotene_100g" : 1.19375e-05, - "calcium_100g" : 0.0333875, - "carbohydrates_100g" : 7.6484375, - "cholesterol_100g" : 0.03778125, - "copper_100g" : 2.678125e-05, - "energy-kcal_100g" : 134.5875, - "energy-kj_100g" : 558.75, - "energy_100g" : 558.75, - "fat_100g" : 10.4134375, - "fiber_100g" : 0.8125, - "fructose_100g" : 3.77578125, - "galactose_100g" : 0, - "glucose_100g" : 2.0565625, - "iodine_100g" : 7.09375e-06, - "iron_100g" : 0.0002265625, - "lactose_100g" : 0.924375, - "magnesium_100g" : 0.00570625, - "maltose_100g" : 0.00703125, - "manganese_100g" : 2.73828125e-05, - "pantothenic-acid_100g" : 0.0002590625, - "phosphorus_100g" : 0.0445625, - "phylloquinone_100g" : 1.153125e-06, - "polyols_100g" : 0.36875, - "potassium_100g" : 0.09825, - "proteins_100g" : 1.974375, - "salt_100g" : 0.0496875, - "saturated-fat_100g" : 4.903125, - "selenium_100g" : 1.2290625e-06, - "sodium_100g" : 0.019725, - "starch_100g" : 0, - "sucrose_100g" : 0.51953125, - "sugars_100g" : 7.2621875, - "vitamin-a_100g" : 1.739625e-05, - "vitamin-b12_100g" : 2.278125e-07, - "vitamin-b1_100g" : 2.509375e-05, - "vitamin-b2_100g" : 9.34375e-05, - "vitamin-b6_100g" : 4.54375e-05, - "vitamin-b9_100g" : 4.10625e-06, - "vitamin-c_100g" : 0.00274375, - "vitamin-d_100g" : 1.903125e-07, - "vitamin-e_100g" : 0.001657625, - "vitamin-pp_100g" : 8.003125e-05, - "water_100g" : 78.365625, - "zinc_100g" : 0.0002046875 - }, "nutriscore" : { "2021" : { "category_available" : 1, @@ -903,15 +948,15 @@ "fiber" : 2, "fiber_points" : 2, "fiber_value" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, + "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 1, + "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 58.3, "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, "negative_points" : 8, - "positive_points" : 6, + "positive_points" : 5, "proteins" : 4.5, "proteins_points" : 2, "proteins_value" : 4.5, @@ -925,11 +970,11 @@ "sugars_points" : 2, "sugars_value" : 12.5 }, - "grade" : "b", + "grade" : "c", "nutrients_available" : 1, "nutriscore_applicable" : 1, "nutriscore_computed" : 1, - "score" : 2 + "score" : 3 }, "2023" : { "category_available" : 1, @@ -982,10 +1027,10 @@ }, { "id" : "fruits_vegetables_legumes", - "points" : 2, + "points" : 1, "points_max" : 5, "unit" : "%", - "value" : 62.5 + "value" : 58.3 } ] }, @@ -1003,18 +1048,18 @@ "fiber", "fruits_vegetables_legumes" ], - "positive_points" : 3, + "positive_points" : 2, "positive_points_max" : 17 }, "grade" : "c", "nutrients_available" : 1, "nutriscore_applicable" : 1, "nutriscore_computed" : 1, - "score" : 6 + "score" : 7 } }, "nutriscore_2021_tags" : [ - "b" + "c" ], "nutriscore_2023_tags" : [ "c" @@ -1026,23 +1071,23 @@ "fiber" : 2, "fiber_points" : 2, "fiber_value" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, - "grade" : "b", + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, + "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 1, + "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 58.3, + "grade" : "c", "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, "negative_points" : 8, - "positive_points" : 6, + "positive_points" : 5, "proteins" : 4.5, "proteins_points" : 2, "proteins_value" : 4.5, "saturated_fat" : 5.6, "saturated_fat_points" : 5, "saturated_fat_value" : 5.6, - "score" : 2, + "score" : 3, "sodium" : 20.08, "sodium_points" : 0, "sodium_value" : 20.1, @@ -1050,27 +1095,27 @@ "sugars_points" : 2, "sugars_value" : 12.5 }, - "nutriscore_grade" : "b", - "nutriscore_score" : 2, - "nutriscore_score_opposite" : -2, + "nutriscore_grade" : "c", + "nutriscore_score" : 3, + "nutriscore_score_opposite" : -3, "nutriscore_tags" : [ - "b" + "c" ], "nutriscore_version" : "2021", "nutrition_data" : "on", "nutrition_data_per" : "100g", "nutrition_data_prepared_per" : "100g", - "nutrition_grade_fr" : "b", - "nutrition_grades" : "b", + "nutrition_grade_fr" : "c", + "nutrition_grades" : "c", "nutrition_grades_tags" : [ - "b" + "c" ], "nutrition_score_beverage" : 0, "nutrition_score_debug" : "", "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 58.3333333333333, "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 58.3333333333333, "origin" : "france", "origin_en" : "france", "other_nutritional_substances_tags" : [], diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-knowledge-panels-fr.json b/tests/integration/expected_test_results/api_v2_product_read/get-knowledge-panels-fr.json index c0277a41f52aa..5b05797615dca 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-knowledge-panels-fr.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-knowledge-panels-fr.json @@ -2,6 +2,96 @@ "code" : "0200000000034", "product" : { "knowledge_panels" : { + "additive_en:e100" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "

La curcumine ne présente pas de risques connus pour la santé.

" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E100 - Curcumine" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin : Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "Anglais", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322 - Lécithines" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322i" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin : Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "Anglais", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322i - Lécithine" + }, + "topics" : [ + "health" + ] + }, + "additives" : { + "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e100" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322i" + } + } + ], + "expanded" : true, + "level" : "info", + "topics" : [ + "health" + ], + "type" : "inline" + }, "carbon_footprint" : { "elements" : [ { @@ -609,6 +699,15 @@ "title" : "Transformation des aliments" } }, + { + "element_type" : "panel_group", + "panel_group_element" : { + "panel_ids" : [ + "additives" + ], + "title" : "Additifs" + } + }, { "element_type" : "panel_group", "panel_group_element" : { @@ -681,8 +780,8 @@ "text_element" : { "edit_field_id" : "ingredients_text_en", "edit_field_type" : "ingredients_text", - "edit_field_value" : "apple, milk, eggs, palm oil", - "html" : "apple, milk, eggs, palm oil", + "edit_field_value" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "html" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "language" : "Anglais", "lc" : "en" } @@ -690,7 +789,7 @@ { "element_type" : "text", "text_element" : { - "html" : "Allergènes : \n en:Apple, Œufs, Lait\n " + "html" : "Allergènes : \n en:Apple, Œufs, Lait, Soja\n " } } ], @@ -701,7 +800,7 @@ "title_element" : { "icon_color_from_evaluation" : true, "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/ingredients.svg", - "title" : "4 ingrédients" + "title" : "8 ingrédients" }, "topics" : [ "health" @@ -746,13 +845,13 @@ { "element_type" : "text", "text_element" : { - "html" : "en: apple, milk, eggs, palm oil" + "html" : "en: apple, milk, eggs, palm oil, coloring (curcumin), emulsifier (soy lecithin)" } }, { "element_type" : "text", "text_element" : { - "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 25 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
\n" + "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 16.6666666666667 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
  9. coloring -> en:colour - percent_min: 0 - percent_max: 20
      \n
    1. curcumin -> en:e100 - vegan: yes - vegetarian: yes - percent_min: 0 - percent_max: 20
    2. \n
    \n
  10. \n
  11. emulsifier -> en:emulsifier - percent_min: 0 - percent_max: 16.6666666666667
      \n
    1. soy lecithin -> en:soya-lecithin - vegan: yes - vegetarian: yes - ciqual_food_code: 42200 - percent_min: 0 - percent_max: 16.6666666666667
    2. \n
    \n
  12. \n
\n" } }, { @@ -846,10 +945,16 @@ }, "nova" : { "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "recommendation_ultra_processed_foods" + } + }, { "element_type" : "text", "text_element" : { - "html" : "\n\n \n \n

Éléments qui indiquent que le produit est dans le groupe 3 - Aliments transformés :

\n
    \n \n
  • Catégorie : Snacks sucrés
  • \n \n
\n \n \n\n" + "html" : "\n\n \n \n

Éléments qui indiquent que le produit est dans le groupe 4 - Produits alimentaires et boissons ultra-transformés :

\n
    \n \n
  • Additif : E100 - Curcumine
  • \n \n
  • Additif : E322 - Lécithines
  • \n \n
  • Ingrédient : Colorant
  • \n \n
  • Ingrédient : Émulsifiant
  • \n \n
\n \n \n\n" } }, { @@ -861,8 +966,9 @@ ], "level" : "info", "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", - "title" : "Aliments transformés" + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", + "subtitle" : "4 marqueurs d'ultra-transformation", + "title" : "Aliments ultra-transformés" }, "topics" : [ "health" @@ -1055,7 +1161,7 @@ { "element_type" : "text", "text_element" : { - "html" : "Avertissement : Le taux de fruits, légumes et noix n'est pas indiqué sur l'étiquette, il a été estimé en fonction de la liste des ingrédients : 62\n ", + "html" : "Avertissement : Le taux de fruits, légumes et noix n'est pas indiqué sur l'étiquette, il a été estimé en fonction de la liste des ingrédients : 58\n ", "type" : "warning" } }, @@ -1093,7 +1199,7 @@ "nutriscore_component_fiber", "nutriscore_component_fruits_vegetables_legumes" ], - "title" : "Points positifs : 3/17" + "title" : "Points positifs : 2/17" } }, { @@ -1167,8 +1273,8 @@ "level" : "info", "size" : "small", "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-2-5.svg", - "subtitle" : "2/5 points (62.5%)", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-1-5.svg", + "subtitle" : "1/5 points (58.3%)", "title" : "Fruits, légumes et légumes secs" }, "topics" : [ @@ -1287,14 +1393,14 @@ { "element_type" : "text", "text_element" : { - "html" : "Avertissement : Le taux de fruits, légumes et noix n'est pas indiqué sur l'étiquette, il a été estimé en fonction de la liste des ingrédients : 62\n ", + "html" : "Avertissement : Le taux de fruits, légumes et noix n'est pas indiqué sur l'étiquette, il a été estimé en fonction de la liste des ingrédients : 58\n ", "type" : "warning" } }, { "element_type" : "text", "text_element" : { - "html" : "\n\n

Ce produit n'est pas considéré comme une boisson pour le calcul du Nutri-Score.

\n\n\n\n\n\n

Les points pour les protéines sont comptés car les points négatifs sont inférieurs à 11.

\n\n

\n Score nutritionnel : 6\n (9 - 3)\n

\n

Nutri-Score : C

\n " + "html" : "\n\n

Ce produit n'est pas considéré comme une boisson pour le calcul du Nutri-Score.

\n\n\n\n\n\n

Les points pour les protéines sont comptés car les points négatifs sont inférieurs à 11.

\n\n

\n Score nutritionnel : 7\n (9 - 2)\n

\n

Nutri-Score : C

\n " } } ], @@ -1465,10 +1571,10 @@ "text" : "Fruits‚ légumes‚ noix et huiles de colza‚ noix et olive (estimation par analyse de la liste des ingrédients)" }, { - "text" : "62,5 %" + "text" : "58,333 %" }, { - "text" : "62,5 %" + "text" : "58,333 %" } ] } @@ -1720,6 +1826,32 @@ "environment" ] }, + "recommendation_ultra_processed_foods" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "\n Plusieurs études ont montré qu'une consommation élevée d'aliments ultra-transformés est associée à un risque accru de maladies chroniques non transmissibles, telles que l'obésité, l'hypertension et le diabète.\n ", + "source_language" : "en", + "source_text" : "Ultra-processed foods increase noncommunicable chronic disease risk", + "source_url" : "https://pubmed.ncbi.nlm.nih.gov/34798466/", + "type" : "quote" + } + } + ], + "evaluation" : "bad", + "level" : "recommendation", + "title_element" : { + "evaluation" : "bad", + "icon_color_from_evaluation" : true, + "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/arrow-bottom-right-thick.svg", + "subtitle" : "Les aliments ultra-transformés augmentent le risque de maladies chroniques", + "title" : "Limiter les aliments ultra-transformés" + }, + "topics" : [ + "health" + ] + }, "report_problem_card" : { "elements" : [ { diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-knowledge-panels.json b/tests/integration/expected_test_results/api_v2_product_read/get-knowledge-panels.json index e86c65f270f58..7bbfef10a6c1d 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-knowledge-panels.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-knowledge-panels.json @@ -2,6 +2,89 @@ "code" : "0200000000034", "product" : { "knowledge_panels" : { + "additive_en:e100" : { + "elements" : [], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E100 - Curcumin" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin: Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "English", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322 - Lecithins" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322i" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin: Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "English", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322i - Lecithin" + }, + "topics" : [ + "health" + ] + }, + "additives" : { + "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e100" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322i" + } + } + ], + "expanded" : true, + "level" : "info", + "topics" : [ + "health" + ], + "type" : "inline" + }, "carbon_footprint" : { "elements" : [ { @@ -609,6 +692,15 @@ "title" : "Food processing" } }, + { + "element_type" : "panel_group", + "panel_group_element" : { + "panel_ids" : [ + "additives" + ], + "title" : "Additives" + } + }, { "element_type" : "panel_group", "panel_group_element" : { @@ -681,8 +773,8 @@ "text_element" : { "edit_field_id" : "ingredients_text_en", "edit_field_type" : "ingredients_text", - "edit_field_value" : "apple, milk, eggs, palm oil", - "html" : "apple, milk, eggs, palm oil", + "edit_field_value" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "html" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "language" : "English", "lc" : "en" } @@ -690,7 +782,7 @@ { "element_type" : "text", "text_element" : { - "html" : "Allergens: \n Apple, Eggs, Milk\n " + "html" : "Allergens: \n Apple, Eggs, Milk, Soybeans\n " } } ], @@ -701,7 +793,7 @@ "title_element" : { "icon_color_from_evaluation" : true, "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/ingredients.svg", - "title" : "4 ingredients" + "title" : "8 ingredients" }, "topics" : [ "health" @@ -746,13 +838,13 @@ { "element_type" : "text", "text_element" : { - "html" : "en: apple, milk, eggs, palm oil" + "html" : "en: apple, milk, eggs, palm oil, coloring (curcumin), emulsifier (soy lecithin)" } }, { "element_type" : "text", "text_element" : { - "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 25 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
\n" + "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 16.6666666666667 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
  9. coloring -> en:colour - percent_min: 0 - percent_max: 20
      \n
    1. curcumin -> en:e100 - vegan: yes - vegetarian: yes - percent_min: 0 - percent_max: 20
    2. \n
    \n
  10. \n
  11. emulsifier -> en:emulsifier - percent_min: 0 - percent_max: 16.6666666666667
      \n
    1. soy lecithin -> en:soya-lecithin - vegan: yes - vegetarian: yes - ciqual_food_code: 42200 - percent_min: 0 - percent_max: 16.6666666666667
    2. \n
    \n
  12. \n
\n" } }, { @@ -846,23 +938,30 @@ }, "nova" : { "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "recommendation_ultra_processed_foods" + } + }, { "element_type" : "text", "text_element" : { - "html" : "\n\n \n \n

Elements that indicate the product is in the 3 - Processed foods group:

\n
    \n \n
  • Category: Sweet snacks
  • \n \n
\n \n \n\n" + "html" : "\n\n \n \n

Elements that indicate the product is in the 4 - Ultra processed food and drink products group:

\n
    \n \n
  • Additive: E100 - Curcumin
  • \n \n
  • Additive: E322 - Lecithins
  • \n \n
  • Ingredient: Colour
  • \n \n
  • Ingredient: Emulsifier
  • \n \n
\n \n \n\n" } }, { "element_type" : "text", "text_element" : { - "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" + "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra-processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" } } ], "level" : "info", "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", - "title" : "Processed foods" + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", + "subtitle" : "4 ultra-processing markers", + "title" : "Ultra-processed foods" }, "topics" : [ "health" @@ -1055,7 +1154,7 @@ { "element_type" : "text", "text_element" : { - "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 62\n ", + "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 58\n ", "type" : "warning" } }, @@ -1093,7 +1192,7 @@ "nutriscore_component_fiber", "nutriscore_component_fruits_vegetables_legumes" ], - "title" : "Positive points: 3/17" + "title" : "Positive points: 2/17" } }, { @@ -1167,8 +1266,8 @@ "level" : "info", "size" : "small", "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-2-5.svg", - "subtitle" : "2/5 points (62.5%)", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-1-5.svg", + "subtitle" : "1/5 points (58.3%)", "title" : "Fruits, vegetables and legumes" }, "topics" : [ @@ -1287,14 +1386,14 @@ { "element_type" : "text", "text_element" : { - "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 62\n ", + "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 58\n ", "type" : "warning" } }, { "element_type" : "text", "text_element" : { - "html" : "\n\n

This product is not considered a beverage for the calculation of the Nutri-Score.

\n\n\n\n\n\n

Points for proteins are counted because the negative points are less than 11.

\n\n

\n Nutritional score: 6\n (9 - 3)\n

\n

Nutri-Score: C

\n " + "html" : "\n\n

This product is not considered a beverage for the calculation of the Nutri-Score.

\n\n\n\n\n\n

Points for proteins are counted because the negative points are less than 11.

\n\n

\n Nutritional score: 7\n (9 - 2)\n

\n

Nutri-Score: C

\n " } } ], @@ -1465,10 +1564,10 @@ "text" : "Fruits‚ vegetables‚ nuts and rapeseed‚ walnut and olive oils (estimate from ingredients list analysis)" }, { - "text" : "62.5 %" + "text" : "58.333 %" }, { - "text" : "62.5 %" + "text" : "58.333 %" } ] } @@ -1720,6 +1819,32 @@ "environment" ] }, + "recommendation_ultra_processed_foods" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "\n Several studies have found that a high consumption of ultra-processed foods is associated with an increased risk of noncommunicable chronic diseases, such as obesity, hypertension and diabetes.\n ", + "source_language" : "en", + "source_text" : "Ultra-processed foods increase noncommunicable chronic disease risk", + "source_url" : "https://pubmed.ncbi.nlm.nih.gov/34798466/", + "type" : "quote" + } + } + ], + "evaluation" : "bad", + "level" : "recommendation", + "title_element" : { + "evaluation" : "bad", + "icon_color_from_evaluation" : true, + "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/arrow-bottom-right-thick.svg", + "subtitle" : "Ultra-processed foods increase noncommunicable chronic disease risk", + "title" : "Limit ultra-processed foods" + }, + "topics" : [ + "health" + ] + }, "report_problem_card" : { "elements" : [ { diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups-fr.json b/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups-fr.json index 513370193f325..09fd1fa5e3c63 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups-fr.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups-fr.json @@ -7,15 +7,15 @@ "attributes" : [ { "description" : "", - "description_short" : "Qualité nutritionnelle moyenne", - "grade" : "c", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-c-new-fr.svg", + "description_short" : "Données manquantes pour calculer le Nutri-Score", + "grade" : "unknown", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-unknown-new-fr.svg", "id" : "nutriscore", - "match" : 53.6666666666667, + "match" : 0, "name" : "Nutri-Score", "panel_id" : "nutriscore_2023", - "status" : "known", - "title" : "Nutri-Score C" + "status" : "unknown", + "title" : "Nutri-Score inconnu" }, { "grade" : "unknown", @@ -60,7 +60,7 @@ { "attributes" : [ { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-gluten.svg", "id" : "allergens_no_gluten", @@ -90,7 +90,7 @@ "title" : "Contient : Œufs" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg", "id" : "allergens_no_nuts", @@ -100,7 +100,7 @@ "title" : "Ne contient pas : Fruits à coque" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg", "id" : "allergens_no_peanuts", @@ -110,7 +110,7 @@ "title" : "Ne contient pas : Arachides" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg", "id" : "allergens_no_sesame_seeds", @@ -120,17 +120,17 @@ "title" : "Ne contient pas : Graines de sésame" }, { - "debug" : "4 ingredients (0 unknown)", - "grade" : "a", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg", + "debug" : "en:soybeans in allergens", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/contains-soybeans.svg", "id" : "allergens_no_soybeans", - "match" : 100, + "match" : 0, "name" : "Soja", "status" : "known", - "title" : "Ne contient pas : Soja" + "title" : "Contient : Soja" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg", "id" : "allergens_no_celery", @@ -140,7 +140,7 @@ "title" : "Ne contient pas : Céleri" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg", "id" : "allergens_no_mustard", @@ -150,7 +150,7 @@ "title" : "Ne contient pas : Moutarde" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg", "id" : "allergens_no_lupin", @@ -160,7 +160,7 @@ "title" : "Ne contient pas : Lupin" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg", "id" : "allergens_no_fish", @@ -170,7 +170,7 @@ "title" : "Ne contient pas : Poisson" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg", "id" : "allergens_no_crustaceans", @@ -180,7 +180,7 @@ "title" : "Ne contient pas : Crustacés" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg", "id" : "allergens_no_molluscs", @@ -190,7 +190,7 @@ "title" : "Ne contient pas : Mollusques" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg", "id" : "allergens_no_sulphur_dioxide_and_sulphites", @@ -243,26 +243,25 @@ { "attributes" : [ { - "description" : "", - "description_short" : "Aliments transformés", - "grade" : "b", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", + "description_short" : "4 marqueurs d'ultra-transformation", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", "id" : "nova", - "match" : 75, + "match" : 0, "name" : "Groupe NOVA", "panel_id" : "nova", "status" : "known", - "title" : "NOVA 3" + "title" : "Aliments ultra-transformés" }, { - "grade" : "a", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/0-additives.svg", + "grade" : "c", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg", "id" : "additives", - "match" : 100, + "match" : 60, "name" : "Additifs", "panel_id" : "additives", "status" : "known", - "title" : "Sans additifs" + "title" : "2 additifs" } ], "id" : "processing", @@ -288,7 +287,7 @@ "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg", "id" : "forest_footprint", - "match" : 99.9416666666667, + "match" : 99.9351851851852, "name" : "Empreinte forêt", "status" : "known", "title" : "Très petite empreinte forêt" diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups.json b/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups.json index 8fe59415767f0..a5a15f5b0d704 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups.json @@ -7,15 +7,15 @@ "attributes" : [ { "description" : "", - "description_short" : "Average nutritional quality", - "grade" : "c", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-c-new-en.svg", + "description_short" : "Missing data to compute the Nutri-Score", + "grade" : "unknown", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-unknown-new-en.svg", "id" : "nutriscore", - "match" : 53.6666666666667, + "match" : 0, "name" : "Nutri-Score", "panel_id" : "nutriscore_2023", - "status" : "known", - "title" : "Nutri-Score C" + "status" : "unknown", + "title" : "Nutri-Score unknown" }, { "grade" : "unknown", @@ -60,7 +60,7 @@ { "attributes" : [ { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-gluten.svg", "id" : "allergens_no_gluten", @@ -90,7 +90,7 @@ "title" : "Contains: Eggs" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg", "id" : "allergens_no_nuts", @@ -100,7 +100,7 @@ "title" : "Does not contain: Nuts" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg", "id" : "allergens_no_peanuts", @@ -110,7 +110,7 @@ "title" : "Does not contain: Peanuts" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg", "id" : "allergens_no_sesame_seeds", @@ -120,17 +120,17 @@ "title" : "Does not contain: Sesame seeds" }, { - "debug" : "4 ingredients (0 unknown)", - "grade" : "a", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg", + "debug" : "en:soybeans in allergens", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/contains-soybeans.svg", "id" : "allergens_no_soybeans", - "match" : 100, + "match" : 0, "name" : "Soybeans", "status" : "known", - "title" : "Does not contain: Soybeans" + "title" : "Contains: Soybeans" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg", "id" : "allergens_no_celery", @@ -140,7 +140,7 @@ "title" : "Does not contain: Celery" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg", "id" : "allergens_no_mustard", @@ -150,7 +150,7 @@ "title" : "Does not contain: Mustard" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg", "id" : "allergens_no_lupin", @@ -160,7 +160,7 @@ "title" : "Does not contain: Lupin" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg", "id" : "allergens_no_fish", @@ -170,7 +170,7 @@ "title" : "Does not contain: Fish" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg", "id" : "allergens_no_crustaceans", @@ -180,7 +180,7 @@ "title" : "Does not contain: Crustaceans" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg", "id" : "allergens_no_molluscs", @@ -190,7 +190,7 @@ "title" : "Does not contain: Molluscs" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg", "id" : "allergens_no_sulphur_dioxide_and_sulphites", @@ -243,26 +243,25 @@ { "attributes" : [ { - "description" : "", - "description_short" : "Processed foods", - "grade" : "b", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", + "description_short" : "4 ultra-processing markers", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", "id" : "nova", - "match" : 75, + "match" : 0, "name" : "NOVA group", "panel_id" : "nova", "status" : "known", - "title" : "NOVA 3" + "title" : "Ultra-processed foods" }, { - "grade" : "a", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/0-additives.svg", + "grade" : "c", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg", "id" : "additives", - "match" : 100, + "match" : 60, "name" : "Additives", "panel_id" : "additives", "status" : "known", - "title" : "Without additives" + "title" : "2 additives" } ], "id" : "processing", @@ -288,7 +287,7 @@ "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg", "id" : "forest_footprint", - "match" : 99.9416666666667, + "match" : 99.9351851851852, "name" : "Forest footprint", "status" : "known", "title" : "Very small forest footprint" diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-ai-data-str.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-ai-data-str.json index 5d9f208e2d6b2..a85287154ffa4 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-ai-data-str.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-ai-data-str.json @@ -11,21 +11,30 @@ "tester" ], "added_countries_tags" : [], - "additives_n" : 0, - "additives_original_tags" : [], - "additives_tags" : [], + "additives_n" : 2, + "additives_original_tags" : [ + "en:e100", + "en:e322i" + ], + "additives_tags" : [ + "en:e100", + "en:e322", + "en:e322i" + ], "allergens" : "", - "allergens_from_ingredients" : "en:eggs, en:milk, apple, milk, eggs", + "allergens_from_ingredients" : "en:soybeans, en:eggs, en:milk, apple, milk, eggs", "allergens_from_user" : "(en) ", "allergens_hierarchy" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "allergens_tags" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "amino_acids_tags" : [], "categories" : "cookies", @@ -73,7 +82,7 @@ "4xxxxxxxxxxxx" ], "complete" : 0, - "completeness" : 0.5, + "completeness" : 0.4, "correctors_tags" : [], "created_t" : "--ignore--", "creator" : "tests", @@ -551,7 +560,7 @@ "en:biscuits-and-cakes" ], "forest_footprint_data" : { - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "grade" : "a", "ingredients" : [ { @@ -561,10 +570,10 @@ "en:organic" ] ], - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "matching_tag_id" : "en:egg", - "percent" : 9.375, - "percent_estimate" : 9.375, + "percent" : 10.4166666666667, + "percent_estimate" : 10.4166666666667, "processing_factor" : 1, "tag_id" : "en:egg", "tag_type" : "ingredients", @@ -589,9 +598,9 @@ "ecobalyse_code" : "apple-fr", "id" : "en:apple", "is_in_taxonomy" : 1, - "percent_estimate" : 62.5, + "percent_estimate" : 58.3333333333333, "percent_max" : 100, - "percent_min" : 25, + "percent_min" : 16.6666666666667, "text" : "apple", "vegan" : "yes", "vegetarian" : "yes" @@ -601,7 +610,7 @@ "ecobalyse_code" : "milk", "id" : "en:milk", "is_in_taxonomy" : 1, - "percent_estimate" : 18.75, + "percent_estimate" : 20.8333333333333, "percent_max" : 50, "percent_min" : 0, "text" : "milk", @@ -613,7 +622,7 @@ "ecobalyse_code" : "egg-indoor-code3", "id" : "en:egg", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 10.4166666666667, "percent_max" : 33.3333333333333, "percent_min" : 0, "text" : "eggs", @@ -626,12 +635,53 @@ "from_palm_oil" : "yes", "id" : "en:palm-oil", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 5.20833333333333, "percent_max" : 25, "percent_min" : 0, "text" : "palm oil", "vegan" : "yes", "vegetarian" : "yes" + }, + { + "id" : "en:colour", + "ingredients" : [ + { + "id" : "en:e100", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "curcumin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "coloring" + }, + { + "id" : "en:emulsifier", + "ingredients" : [ + { + "ciqual_food_code" : "42200", + "id" : "en:soya-lecithin", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "soy lecithin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "emulsifier" } ], "ingredients_analysis" : { @@ -658,12 +708,18 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], "ingredients_lc" : "en", - "ingredients_n" : 4, + "ingredients_n" : 8, "ingredients_n_tags" : [ - "4", + "8", "1-10" ], "ingredients_non_nutritive_sweeteners_n" : 0, @@ -671,7 +727,11 @@ "en:apple", "en:milk", "en:egg", - "en:palm-oil" + "en:palm-oil", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin" ], "ingredients_percent_analysis" : 1, "ingredients_sweeteners_n" : 0, @@ -685,23 +745,38 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], - "ingredients_text" : "apple, milk, eggs, palm oil", - "ingredients_text_en" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil", + "ingredients_text" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "ingredients_with_specified_percent_n" : 0, "ingredients_with_specified_percent_sum" : 0, - "ingredients_with_unspecified_percent_n" : 4, + "ingredients_with_unspecified_percent_n" : 6, "ingredients_with_unspecified_percent_sum" : 100, - "ingredients_without_ciqual_codes" : [], - "ingredients_without_ciqual_codes_n" : 0, - "ingredients_without_ecobalyse_ids" : [], - "ingredients_without_ecobalyse_ids_n" : 0, + "ingredients_without_ciqual_codes" : [ + "en:colour", + "en:e100", + "en:emulsifier" + ], + "ingredients_without_ciqual_codes_n" : 3, + "ingredients_without_ecobalyse_ids" : [ + "en:colour", + "en:e100", + "en:emulsifier", + "en:soya-lecithin" + ], + "ingredients_without_ecobalyse_ids_n" : 4, "interface_version_created" : "20150316.jqm2", "interface_version_modified" : "20150316.jqm2", - "known_ingredients_n" : 10, + "known_ingredients_n" : 16, "labels" : "organic", "labels_hierarchy" : [ "en:organic" @@ -743,9 +818,6 @@ "en:ecoscore-missing-data-warning", "en:forest-footprint-a", "en:forest-footprint-computed", - "en:nutriscore-2021-c-2023-c", - "en:nutriscore-2021-same-as-2023", - "en:nutriscore-computed", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", "en:nutriscore-missing-nutrition-data-fat", @@ -753,11 +825,11 @@ "en:nutriscore-missing-nutrition-data-saturated-fat", "en:nutriscore-missing-nutrition-data-sodium", "en:nutriscore-missing-nutrition-data-sugars", - "en:nutriscore-using-estimated-nutrition-facts", - "en:nutrition-all-nutriscore-values-known", + "en:nutriscore-not-computed", "en:nutrition-fruits-vegetables-legumes-estimate-from-ingredients", "en:nutrition-fruits-vegetables-nuts-estimate-from-ingredients", "en:nutrition-no-fiber", + "en:nutrition-no-fiber-or-fruits-vegetables-nuts", "en:nutrition-not-enough-data-to-compute-nutrition-score", "en:packagings-not-complete", "en:packagings-not-empty", @@ -765,259 +837,118 @@ "en:packagings-number-of-components-4", "en:main-countries-new-product" ], - "nova_group" : 3, + "nova_group" : 4, "nova_group_debug" : "", - "nova_groups" : "3", + "nova_groups" : "4", "nova_groups_markers" : { "3" : [ [ "categories", "en:sweet-snacks" ] + ], + "4" : [ + [ + "additives", + "en:e100" + ], + [ + "additives", + "en:e322" + ], + [ + "ingredients", + "en:colour" + ], + [ + "ingredients", + "en:emulsifier" + ] ] }, "nova_groups_tags" : [ - "en:3-processed-foods" + "en:4-ultra-processed-food-and-drink-products" ], "nucleotides_tags" : [], "nutrient_levels" : {}, "nutrient_levels_tags" : [], "nutriments" : { - "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 62.5, - "nova-group" : 3, - "nova-group_100g" : 3, - "nova-group_serving" : 3, - "nutrition-score-fr" : 3, - "nutrition-score-fr_100g" : 3 - }, - "nutriments_estimated" : { - "alcohol_100g" : 0, - "beta-carotene_100g" : 1.19375e-05, - "calcium_100g" : 0.0333875, - "carbohydrates_100g" : 7.6484375, - "cholesterol_100g" : 0.03778125, - "copper_100g" : 2.678125e-05, - "energy-kcal_100g" : 134.5875, - "energy-kj_100g" : 558.75, - "energy_100g" : 558.75, - "fat_100g" : 10.4134375, - "fiber_100g" : 0.8125, - "fructose_100g" : 3.77578125, - "galactose_100g" : 0, - "glucose_100g" : 2.0565625, - "iodine_100g" : 7.09375e-06, - "iron_100g" : 0.0002265625, - "lactose_100g" : 0.924375, - "magnesium_100g" : 0.00570625, - "maltose_100g" : 0.00703125, - "manganese_100g" : 2.73828125e-05, - "pantothenic-acid_100g" : 0.0002590625, - "phosphorus_100g" : 0.0445625, - "phylloquinone_100g" : 1.153125e-06, - "polyols_100g" : 0.36875, - "potassium_100g" : 0.09825, - "proteins_100g" : 1.974375, - "salt_100g" : 0.0496875, - "saturated-fat_100g" : 4.903125, - "selenium_100g" : 1.2290625e-06, - "sodium_100g" : 0.019725, - "starch_100g" : 0, - "sucrose_100g" : 0.51953125, - "sugars_100g" : 7.2621875, - "vitamin-a_100g" : 1.739625e-05, - "vitamin-b12_100g" : 2.278125e-07, - "vitamin-b1_100g" : 2.509375e-05, - "vitamin-b2_100g" : 9.34375e-05, - "vitamin-b6_100g" : 4.54375e-05, - "vitamin-b9_100g" : 4.10625e-06, - "vitamin-c_100g" : 0.00274375, - "vitamin-d_100g" : 1.903125e-07, - "vitamin-e_100g" : 0.001657625, - "vitamin-pp_100g" : 8.003125e-05, - "water_100g" : 78.365625, - "zinc_100g" : 0.0002046875 + "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 58.3333333333333, + "nova-group" : 4, + "nova-group_100g" : 4, + "nova-group_serving" : 4 }, "nutriscore" : { "2021" : { "category_available" : 1, "data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, + "energy" : null, + "fiber" : 0, + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 + "proteins" : null, + "saturated_fat" : null, + "sodium" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 3 + "nutriscore_computed" : 0 }, "2023" : { "category_available" : 1, "data" : { - "components" : { - "negative" : [ - { - "id" : "energy", - "points" : 1, - "points_max" : 10, - "unit" : "kJ", - "value" : 558.75 - }, - { - "id" : "sugars", - "points" : 2, - "points_max" : 15, - "unit" : "g", - "value" : 7.26 - }, - { - "id" : "saturated_fat", - "points" : 4, - "points_max" : 10, - "unit" : "g", - "value" : 4.9 - }, - { - "id" : "salt", - "points" : 0, - "points_max" : 20, - "unit" : "g", - "value" : 0.05 - } - ], - "positive" : [ - { - "id" : "proteins", - "points" : 0, - "points_max" : 7, - "unit" : "g", - "value" : 1.97 - }, - { - "id" : "fiber", - "points" : 0, - "points_max" : 5, - "unit" : "g", - "value" : 0.81 - }, - { - "id" : "fruits_vegetables_legumes", - "points" : 2, - "points_max" : 5, - "unit" : "%", - "value" : 62.5 - } - ] - }, - "count_proteins" : 1, - "count_proteins_reason" : "negative_points_less_than_11", + "energy" : null, + "fiber" : null, + "fruits_vegetables_legumes" : 58.3, "is_beverage" : 0, "is_cheese" : 0, "is_fat_oil_nuts_seeds" : 0, "is_red_meat_product" : 0, "is_water" : 0, - "negative_points" : 7, - "negative_points_max" : 55, - "positive_nutrients" : [ - "proteins", - "fiber", - "fruits_vegetables_legumes" - ], - "positive_points" : 2, - "positive_points_max" : 17 + "proteins" : null, + "salt" : null, + "saturated_fat" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 5 + "nutriscore_computed" : 0 } }, "nutriscore_2021_tags" : [ - "c" + "unknown" ], "nutriscore_2023_tags" : [ - "c" + "unknown" ], - "nutriscore_data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, - "grade" : "c", - "is_beverage" : 0, - "is_cheese" : 0, - "is_fat" : 0, - "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "score" : 3, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 - }, - "nutriscore_grade" : "c", - "nutriscore_score" : 3, - "nutriscore_score_opposite" : -3, + "nutriscore_grade" : "unknown", "nutriscore_tags" : [ - "c" + "unknown" ], "nutriscore_version" : "2021", "nutrition_data_per" : "100g", "nutrition_data_prepared_per" : "100g", - "nutrition_grade_fr" : "c", - "nutrition_grades" : "c", + "nutrition_grade_fr" : "unknown", + "nutrition_grades" : "unknown", "nutrition_grades_tags" : [ - "c" + "unknown" ], "nutrition_score_beverage" : 0, "nutrition_score_debug" : "missing energy_100g - missing fat_100g - missing saturated-fat_100g - missing sugars_100g - missing sodium_100g - missing proteins_100g", "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 58.3333333333333, "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 62.5, - "nutrition_score_warning_nutriments_estimated" : 1, + "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 58.3333333333333, + "nutrition_score_warning_no_fiber" : 1, "origin" : "france", "origin_en" : "france", "other_nutritional_substances_tags" : [], @@ -1124,10 +1055,10 @@ "serving_quantity" : "10", "serving_quantity_unit" : "g", "serving_size" : "10 g", - "states" : "en:to-be-completed, en:nutrition-facts-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", + "states" : "en:to-be-completed, en:nutrition-facts-to-be-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", "states_hierarchy" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", @@ -1142,7 +1073,7 @@ ], "states_tags" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-caret.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-caret.json index 5d9f208e2d6b2..a85287154ffa4 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-caret.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-caret.json @@ -11,21 +11,30 @@ "tester" ], "added_countries_tags" : [], - "additives_n" : 0, - "additives_original_tags" : [], - "additives_tags" : [], + "additives_n" : 2, + "additives_original_tags" : [ + "en:e100", + "en:e322i" + ], + "additives_tags" : [ + "en:e100", + "en:e322", + "en:e322i" + ], "allergens" : "", - "allergens_from_ingredients" : "en:eggs, en:milk, apple, milk, eggs", + "allergens_from_ingredients" : "en:soybeans, en:eggs, en:milk, apple, milk, eggs", "allergens_from_user" : "(en) ", "allergens_hierarchy" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "allergens_tags" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "amino_acids_tags" : [], "categories" : "cookies", @@ -73,7 +82,7 @@ "4xxxxxxxxxxxx" ], "complete" : 0, - "completeness" : 0.5, + "completeness" : 0.4, "correctors_tags" : [], "created_t" : "--ignore--", "creator" : "tests", @@ -551,7 +560,7 @@ "en:biscuits-and-cakes" ], "forest_footprint_data" : { - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "grade" : "a", "ingredients" : [ { @@ -561,10 +570,10 @@ "en:organic" ] ], - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "matching_tag_id" : "en:egg", - "percent" : 9.375, - "percent_estimate" : 9.375, + "percent" : 10.4166666666667, + "percent_estimate" : 10.4166666666667, "processing_factor" : 1, "tag_id" : "en:egg", "tag_type" : "ingredients", @@ -589,9 +598,9 @@ "ecobalyse_code" : "apple-fr", "id" : "en:apple", "is_in_taxonomy" : 1, - "percent_estimate" : 62.5, + "percent_estimate" : 58.3333333333333, "percent_max" : 100, - "percent_min" : 25, + "percent_min" : 16.6666666666667, "text" : "apple", "vegan" : "yes", "vegetarian" : "yes" @@ -601,7 +610,7 @@ "ecobalyse_code" : "milk", "id" : "en:milk", "is_in_taxonomy" : 1, - "percent_estimate" : 18.75, + "percent_estimate" : 20.8333333333333, "percent_max" : 50, "percent_min" : 0, "text" : "milk", @@ -613,7 +622,7 @@ "ecobalyse_code" : "egg-indoor-code3", "id" : "en:egg", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 10.4166666666667, "percent_max" : 33.3333333333333, "percent_min" : 0, "text" : "eggs", @@ -626,12 +635,53 @@ "from_palm_oil" : "yes", "id" : "en:palm-oil", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 5.20833333333333, "percent_max" : 25, "percent_min" : 0, "text" : "palm oil", "vegan" : "yes", "vegetarian" : "yes" + }, + { + "id" : "en:colour", + "ingredients" : [ + { + "id" : "en:e100", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "curcumin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "coloring" + }, + { + "id" : "en:emulsifier", + "ingredients" : [ + { + "ciqual_food_code" : "42200", + "id" : "en:soya-lecithin", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "soy lecithin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "emulsifier" } ], "ingredients_analysis" : { @@ -658,12 +708,18 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], "ingredients_lc" : "en", - "ingredients_n" : 4, + "ingredients_n" : 8, "ingredients_n_tags" : [ - "4", + "8", "1-10" ], "ingredients_non_nutritive_sweeteners_n" : 0, @@ -671,7 +727,11 @@ "en:apple", "en:milk", "en:egg", - "en:palm-oil" + "en:palm-oil", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin" ], "ingredients_percent_analysis" : 1, "ingredients_sweeteners_n" : 0, @@ -685,23 +745,38 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], - "ingredients_text" : "apple, milk, eggs, palm oil", - "ingredients_text_en" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil", + "ingredients_text" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "ingredients_with_specified_percent_n" : 0, "ingredients_with_specified_percent_sum" : 0, - "ingredients_with_unspecified_percent_n" : 4, + "ingredients_with_unspecified_percent_n" : 6, "ingredients_with_unspecified_percent_sum" : 100, - "ingredients_without_ciqual_codes" : [], - "ingredients_without_ciqual_codes_n" : 0, - "ingredients_without_ecobalyse_ids" : [], - "ingredients_without_ecobalyse_ids_n" : 0, + "ingredients_without_ciqual_codes" : [ + "en:colour", + "en:e100", + "en:emulsifier" + ], + "ingredients_without_ciqual_codes_n" : 3, + "ingredients_without_ecobalyse_ids" : [ + "en:colour", + "en:e100", + "en:emulsifier", + "en:soya-lecithin" + ], + "ingredients_without_ecobalyse_ids_n" : 4, "interface_version_created" : "20150316.jqm2", "interface_version_modified" : "20150316.jqm2", - "known_ingredients_n" : 10, + "known_ingredients_n" : 16, "labels" : "organic", "labels_hierarchy" : [ "en:organic" @@ -743,9 +818,6 @@ "en:ecoscore-missing-data-warning", "en:forest-footprint-a", "en:forest-footprint-computed", - "en:nutriscore-2021-c-2023-c", - "en:nutriscore-2021-same-as-2023", - "en:nutriscore-computed", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", "en:nutriscore-missing-nutrition-data-fat", @@ -753,11 +825,11 @@ "en:nutriscore-missing-nutrition-data-saturated-fat", "en:nutriscore-missing-nutrition-data-sodium", "en:nutriscore-missing-nutrition-data-sugars", - "en:nutriscore-using-estimated-nutrition-facts", - "en:nutrition-all-nutriscore-values-known", + "en:nutriscore-not-computed", "en:nutrition-fruits-vegetables-legumes-estimate-from-ingredients", "en:nutrition-fruits-vegetables-nuts-estimate-from-ingredients", "en:nutrition-no-fiber", + "en:nutrition-no-fiber-or-fruits-vegetables-nuts", "en:nutrition-not-enough-data-to-compute-nutrition-score", "en:packagings-not-complete", "en:packagings-not-empty", @@ -765,259 +837,118 @@ "en:packagings-number-of-components-4", "en:main-countries-new-product" ], - "nova_group" : 3, + "nova_group" : 4, "nova_group_debug" : "", - "nova_groups" : "3", + "nova_groups" : "4", "nova_groups_markers" : { "3" : [ [ "categories", "en:sweet-snacks" ] + ], + "4" : [ + [ + "additives", + "en:e100" + ], + [ + "additives", + "en:e322" + ], + [ + "ingredients", + "en:colour" + ], + [ + "ingredients", + "en:emulsifier" + ] ] }, "nova_groups_tags" : [ - "en:3-processed-foods" + "en:4-ultra-processed-food-and-drink-products" ], "nucleotides_tags" : [], "nutrient_levels" : {}, "nutrient_levels_tags" : [], "nutriments" : { - "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 62.5, - "nova-group" : 3, - "nova-group_100g" : 3, - "nova-group_serving" : 3, - "nutrition-score-fr" : 3, - "nutrition-score-fr_100g" : 3 - }, - "nutriments_estimated" : { - "alcohol_100g" : 0, - "beta-carotene_100g" : 1.19375e-05, - "calcium_100g" : 0.0333875, - "carbohydrates_100g" : 7.6484375, - "cholesterol_100g" : 0.03778125, - "copper_100g" : 2.678125e-05, - "energy-kcal_100g" : 134.5875, - "energy-kj_100g" : 558.75, - "energy_100g" : 558.75, - "fat_100g" : 10.4134375, - "fiber_100g" : 0.8125, - "fructose_100g" : 3.77578125, - "galactose_100g" : 0, - "glucose_100g" : 2.0565625, - "iodine_100g" : 7.09375e-06, - "iron_100g" : 0.0002265625, - "lactose_100g" : 0.924375, - "magnesium_100g" : 0.00570625, - "maltose_100g" : 0.00703125, - "manganese_100g" : 2.73828125e-05, - "pantothenic-acid_100g" : 0.0002590625, - "phosphorus_100g" : 0.0445625, - "phylloquinone_100g" : 1.153125e-06, - "polyols_100g" : 0.36875, - "potassium_100g" : 0.09825, - "proteins_100g" : 1.974375, - "salt_100g" : 0.0496875, - "saturated-fat_100g" : 4.903125, - "selenium_100g" : 1.2290625e-06, - "sodium_100g" : 0.019725, - "starch_100g" : 0, - "sucrose_100g" : 0.51953125, - "sugars_100g" : 7.2621875, - "vitamin-a_100g" : 1.739625e-05, - "vitamin-b12_100g" : 2.278125e-07, - "vitamin-b1_100g" : 2.509375e-05, - "vitamin-b2_100g" : 9.34375e-05, - "vitamin-b6_100g" : 4.54375e-05, - "vitamin-b9_100g" : 4.10625e-06, - "vitamin-c_100g" : 0.00274375, - "vitamin-d_100g" : 1.903125e-07, - "vitamin-e_100g" : 0.001657625, - "vitamin-pp_100g" : 8.003125e-05, - "water_100g" : 78.365625, - "zinc_100g" : 0.0002046875 + "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 58.3333333333333, + "nova-group" : 4, + "nova-group_100g" : 4, + "nova-group_serving" : 4 }, "nutriscore" : { "2021" : { "category_available" : 1, "data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, + "energy" : null, + "fiber" : 0, + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 + "proteins" : null, + "saturated_fat" : null, + "sodium" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 3 + "nutriscore_computed" : 0 }, "2023" : { "category_available" : 1, "data" : { - "components" : { - "negative" : [ - { - "id" : "energy", - "points" : 1, - "points_max" : 10, - "unit" : "kJ", - "value" : 558.75 - }, - { - "id" : "sugars", - "points" : 2, - "points_max" : 15, - "unit" : "g", - "value" : 7.26 - }, - { - "id" : "saturated_fat", - "points" : 4, - "points_max" : 10, - "unit" : "g", - "value" : 4.9 - }, - { - "id" : "salt", - "points" : 0, - "points_max" : 20, - "unit" : "g", - "value" : 0.05 - } - ], - "positive" : [ - { - "id" : "proteins", - "points" : 0, - "points_max" : 7, - "unit" : "g", - "value" : 1.97 - }, - { - "id" : "fiber", - "points" : 0, - "points_max" : 5, - "unit" : "g", - "value" : 0.81 - }, - { - "id" : "fruits_vegetables_legumes", - "points" : 2, - "points_max" : 5, - "unit" : "%", - "value" : 62.5 - } - ] - }, - "count_proteins" : 1, - "count_proteins_reason" : "negative_points_less_than_11", + "energy" : null, + "fiber" : null, + "fruits_vegetables_legumes" : 58.3, "is_beverage" : 0, "is_cheese" : 0, "is_fat_oil_nuts_seeds" : 0, "is_red_meat_product" : 0, "is_water" : 0, - "negative_points" : 7, - "negative_points_max" : 55, - "positive_nutrients" : [ - "proteins", - "fiber", - "fruits_vegetables_legumes" - ], - "positive_points" : 2, - "positive_points_max" : 17 + "proteins" : null, + "salt" : null, + "saturated_fat" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 5 + "nutriscore_computed" : 0 } }, "nutriscore_2021_tags" : [ - "c" + "unknown" ], "nutriscore_2023_tags" : [ - "c" + "unknown" ], - "nutriscore_data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, - "grade" : "c", - "is_beverage" : 0, - "is_cheese" : 0, - "is_fat" : 0, - "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "score" : 3, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 - }, - "nutriscore_grade" : "c", - "nutriscore_score" : 3, - "nutriscore_score_opposite" : -3, + "nutriscore_grade" : "unknown", "nutriscore_tags" : [ - "c" + "unknown" ], "nutriscore_version" : "2021", "nutrition_data_per" : "100g", "nutrition_data_prepared_per" : "100g", - "nutrition_grade_fr" : "c", - "nutrition_grades" : "c", + "nutrition_grade_fr" : "unknown", + "nutrition_grades" : "unknown", "nutrition_grades_tags" : [ - "c" + "unknown" ], "nutrition_score_beverage" : 0, "nutrition_score_debug" : "missing energy_100g - missing fat_100g - missing saturated-fat_100g - missing sugars_100g - missing sodium_100g - missing proteins_100g", "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 58.3333333333333, "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 62.5, - "nutrition_score_warning_nutriments_estimated" : 1, + "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 58.3333333333333, + "nutrition_score_warning_no_fiber" : 1, "origin" : "france", "origin_en" : "france", "other_nutritional_substances_tags" : [], @@ -1124,10 +1055,10 @@ "serving_quantity" : "10", "serving_quantity_unit" : "g", "serving_size" : "10 g", - "states" : "en:to-be-completed, en:nutrition-facts-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", + "states" : "en:to-be-completed, en:nutrition-facts-to-be-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", "states_hierarchy" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", @@ -1142,7 +1073,7 @@ ], "states_tags" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-data-uri.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-data-uri.json index 5d9f208e2d6b2..a85287154ffa4 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-data-uri.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-data-uri.json @@ -11,21 +11,30 @@ "tester" ], "added_countries_tags" : [], - "additives_n" : 0, - "additives_original_tags" : [], - "additives_tags" : [], + "additives_n" : 2, + "additives_original_tags" : [ + "en:e100", + "en:e322i" + ], + "additives_tags" : [ + "en:e100", + "en:e322", + "en:e322i" + ], "allergens" : "", - "allergens_from_ingredients" : "en:eggs, en:milk, apple, milk, eggs", + "allergens_from_ingredients" : "en:soybeans, en:eggs, en:milk, apple, milk, eggs", "allergens_from_user" : "(en) ", "allergens_hierarchy" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "allergens_tags" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "amino_acids_tags" : [], "categories" : "cookies", @@ -73,7 +82,7 @@ "4xxxxxxxxxxxx" ], "complete" : 0, - "completeness" : 0.5, + "completeness" : 0.4, "correctors_tags" : [], "created_t" : "--ignore--", "creator" : "tests", @@ -551,7 +560,7 @@ "en:biscuits-and-cakes" ], "forest_footprint_data" : { - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "grade" : "a", "ingredients" : [ { @@ -561,10 +570,10 @@ "en:organic" ] ], - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "matching_tag_id" : "en:egg", - "percent" : 9.375, - "percent_estimate" : 9.375, + "percent" : 10.4166666666667, + "percent_estimate" : 10.4166666666667, "processing_factor" : 1, "tag_id" : "en:egg", "tag_type" : "ingredients", @@ -589,9 +598,9 @@ "ecobalyse_code" : "apple-fr", "id" : "en:apple", "is_in_taxonomy" : 1, - "percent_estimate" : 62.5, + "percent_estimate" : 58.3333333333333, "percent_max" : 100, - "percent_min" : 25, + "percent_min" : 16.6666666666667, "text" : "apple", "vegan" : "yes", "vegetarian" : "yes" @@ -601,7 +610,7 @@ "ecobalyse_code" : "milk", "id" : "en:milk", "is_in_taxonomy" : 1, - "percent_estimate" : 18.75, + "percent_estimate" : 20.8333333333333, "percent_max" : 50, "percent_min" : 0, "text" : "milk", @@ -613,7 +622,7 @@ "ecobalyse_code" : "egg-indoor-code3", "id" : "en:egg", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 10.4166666666667, "percent_max" : 33.3333333333333, "percent_min" : 0, "text" : "eggs", @@ -626,12 +635,53 @@ "from_palm_oil" : "yes", "id" : "en:palm-oil", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 5.20833333333333, "percent_max" : 25, "percent_min" : 0, "text" : "palm oil", "vegan" : "yes", "vegetarian" : "yes" + }, + { + "id" : "en:colour", + "ingredients" : [ + { + "id" : "en:e100", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "curcumin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "coloring" + }, + { + "id" : "en:emulsifier", + "ingredients" : [ + { + "ciqual_food_code" : "42200", + "id" : "en:soya-lecithin", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "soy lecithin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "emulsifier" } ], "ingredients_analysis" : { @@ -658,12 +708,18 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], "ingredients_lc" : "en", - "ingredients_n" : 4, + "ingredients_n" : 8, "ingredients_n_tags" : [ - "4", + "8", "1-10" ], "ingredients_non_nutritive_sweeteners_n" : 0, @@ -671,7 +727,11 @@ "en:apple", "en:milk", "en:egg", - "en:palm-oil" + "en:palm-oil", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin" ], "ingredients_percent_analysis" : 1, "ingredients_sweeteners_n" : 0, @@ -685,23 +745,38 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], - "ingredients_text" : "apple, milk, eggs, palm oil", - "ingredients_text_en" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil", + "ingredients_text" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "ingredients_with_specified_percent_n" : 0, "ingredients_with_specified_percent_sum" : 0, - "ingredients_with_unspecified_percent_n" : 4, + "ingredients_with_unspecified_percent_n" : 6, "ingredients_with_unspecified_percent_sum" : 100, - "ingredients_without_ciqual_codes" : [], - "ingredients_without_ciqual_codes_n" : 0, - "ingredients_without_ecobalyse_ids" : [], - "ingredients_without_ecobalyse_ids_n" : 0, + "ingredients_without_ciqual_codes" : [ + "en:colour", + "en:e100", + "en:emulsifier" + ], + "ingredients_without_ciqual_codes_n" : 3, + "ingredients_without_ecobalyse_ids" : [ + "en:colour", + "en:e100", + "en:emulsifier", + "en:soya-lecithin" + ], + "ingredients_without_ecobalyse_ids_n" : 4, "interface_version_created" : "20150316.jqm2", "interface_version_modified" : "20150316.jqm2", - "known_ingredients_n" : 10, + "known_ingredients_n" : 16, "labels" : "organic", "labels_hierarchy" : [ "en:organic" @@ -743,9 +818,6 @@ "en:ecoscore-missing-data-warning", "en:forest-footprint-a", "en:forest-footprint-computed", - "en:nutriscore-2021-c-2023-c", - "en:nutriscore-2021-same-as-2023", - "en:nutriscore-computed", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", "en:nutriscore-missing-nutrition-data-fat", @@ -753,11 +825,11 @@ "en:nutriscore-missing-nutrition-data-saturated-fat", "en:nutriscore-missing-nutrition-data-sodium", "en:nutriscore-missing-nutrition-data-sugars", - "en:nutriscore-using-estimated-nutrition-facts", - "en:nutrition-all-nutriscore-values-known", + "en:nutriscore-not-computed", "en:nutrition-fruits-vegetables-legumes-estimate-from-ingredients", "en:nutrition-fruits-vegetables-nuts-estimate-from-ingredients", "en:nutrition-no-fiber", + "en:nutrition-no-fiber-or-fruits-vegetables-nuts", "en:nutrition-not-enough-data-to-compute-nutrition-score", "en:packagings-not-complete", "en:packagings-not-empty", @@ -765,259 +837,118 @@ "en:packagings-number-of-components-4", "en:main-countries-new-product" ], - "nova_group" : 3, + "nova_group" : 4, "nova_group_debug" : "", - "nova_groups" : "3", + "nova_groups" : "4", "nova_groups_markers" : { "3" : [ [ "categories", "en:sweet-snacks" ] + ], + "4" : [ + [ + "additives", + "en:e100" + ], + [ + "additives", + "en:e322" + ], + [ + "ingredients", + "en:colour" + ], + [ + "ingredients", + "en:emulsifier" + ] ] }, "nova_groups_tags" : [ - "en:3-processed-foods" + "en:4-ultra-processed-food-and-drink-products" ], "nucleotides_tags" : [], "nutrient_levels" : {}, "nutrient_levels_tags" : [], "nutriments" : { - "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 62.5, - "nova-group" : 3, - "nova-group_100g" : 3, - "nova-group_serving" : 3, - "nutrition-score-fr" : 3, - "nutrition-score-fr_100g" : 3 - }, - "nutriments_estimated" : { - "alcohol_100g" : 0, - "beta-carotene_100g" : 1.19375e-05, - "calcium_100g" : 0.0333875, - "carbohydrates_100g" : 7.6484375, - "cholesterol_100g" : 0.03778125, - "copper_100g" : 2.678125e-05, - "energy-kcal_100g" : 134.5875, - "energy-kj_100g" : 558.75, - "energy_100g" : 558.75, - "fat_100g" : 10.4134375, - "fiber_100g" : 0.8125, - "fructose_100g" : 3.77578125, - "galactose_100g" : 0, - "glucose_100g" : 2.0565625, - "iodine_100g" : 7.09375e-06, - "iron_100g" : 0.0002265625, - "lactose_100g" : 0.924375, - "magnesium_100g" : 0.00570625, - "maltose_100g" : 0.00703125, - "manganese_100g" : 2.73828125e-05, - "pantothenic-acid_100g" : 0.0002590625, - "phosphorus_100g" : 0.0445625, - "phylloquinone_100g" : 1.153125e-06, - "polyols_100g" : 0.36875, - "potassium_100g" : 0.09825, - "proteins_100g" : 1.974375, - "salt_100g" : 0.0496875, - "saturated-fat_100g" : 4.903125, - "selenium_100g" : 1.2290625e-06, - "sodium_100g" : 0.019725, - "starch_100g" : 0, - "sucrose_100g" : 0.51953125, - "sugars_100g" : 7.2621875, - "vitamin-a_100g" : 1.739625e-05, - "vitamin-b12_100g" : 2.278125e-07, - "vitamin-b1_100g" : 2.509375e-05, - "vitamin-b2_100g" : 9.34375e-05, - "vitamin-b6_100g" : 4.54375e-05, - "vitamin-b9_100g" : 4.10625e-06, - "vitamin-c_100g" : 0.00274375, - "vitamin-d_100g" : 1.903125e-07, - "vitamin-e_100g" : 0.001657625, - "vitamin-pp_100g" : 8.003125e-05, - "water_100g" : 78.365625, - "zinc_100g" : 0.0002046875 + "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 58.3333333333333, + "nova-group" : 4, + "nova-group_100g" : 4, + "nova-group_serving" : 4 }, "nutriscore" : { "2021" : { "category_available" : 1, "data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, + "energy" : null, + "fiber" : 0, + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 + "proteins" : null, + "saturated_fat" : null, + "sodium" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 3 + "nutriscore_computed" : 0 }, "2023" : { "category_available" : 1, "data" : { - "components" : { - "negative" : [ - { - "id" : "energy", - "points" : 1, - "points_max" : 10, - "unit" : "kJ", - "value" : 558.75 - }, - { - "id" : "sugars", - "points" : 2, - "points_max" : 15, - "unit" : "g", - "value" : 7.26 - }, - { - "id" : "saturated_fat", - "points" : 4, - "points_max" : 10, - "unit" : "g", - "value" : 4.9 - }, - { - "id" : "salt", - "points" : 0, - "points_max" : 20, - "unit" : "g", - "value" : 0.05 - } - ], - "positive" : [ - { - "id" : "proteins", - "points" : 0, - "points_max" : 7, - "unit" : "g", - "value" : 1.97 - }, - { - "id" : "fiber", - "points" : 0, - "points_max" : 5, - "unit" : "g", - "value" : 0.81 - }, - { - "id" : "fruits_vegetables_legumes", - "points" : 2, - "points_max" : 5, - "unit" : "%", - "value" : 62.5 - } - ] - }, - "count_proteins" : 1, - "count_proteins_reason" : "negative_points_less_than_11", + "energy" : null, + "fiber" : null, + "fruits_vegetables_legumes" : 58.3, "is_beverage" : 0, "is_cheese" : 0, "is_fat_oil_nuts_seeds" : 0, "is_red_meat_product" : 0, "is_water" : 0, - "negative_points" : 7, - "negative_points_max" : 55, - "positive_nutrients" : [ - "proteins", - "fiber", - "fruits_vegetables_legumes" - ], - "positive_points" : 2, - "positive_points_max" : 17 + "proteins" : null, + "salt" : null, + "saturated_fat" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 5 + "nutriscore_computed" : 0 } }, "nutriscore_2021_tags" : [ - "c" + "unknown" ], "nutriscore_2023_tags" : [ - "c" + "unknown" ], - "nutriscore_data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, - "grade" : "c", - "is_beverage" : 0, - "is_cheese" : 0, - "is_fat" : 0, - "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "score" : 3, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 - }, - "nutriscore_grade" : "c", - "nutriscore_score" : 3, - "nutriscore_score_opposite" : -3, + "nutriscore_grade" : "unknown", "nutriscore_tags" : [ - "c" + "unknown" ], "nutriscore_version" : "2021", "nutrition_data_per" : "100g", "nutrition_data_prepared_per" : "100g", - "nutrition_grade_fr" : "c", - "nutrition_grades" : "c", + "nutrition_grade_fr" : "unknown", + "nutrition_grades" : "unknown", "nutrition_grades_tags" : [ - "c" + "unknown" ], "nutrition_score_beverage" : 0, "nutrition_score_debug" : "missing energy_100g - missing fat_100g - missing saturated-fat_100g - missing sugars_100g - missing sodium_100g - missing proteins_100g", "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 58.3333333333333, "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 62.5, - "nutrition_score_warning_nutriments_estimated" : 1, + "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 58.3333333333333, + "nutrition_score_warning_no_fiber" : 1, "origin" : "france", "origin_en" : "france", "other_nutritional_substances_tags" : [], @@ -1124,10 +1055,10 @@ "serving_quantity" : "10", "serving_quantity_unit" : "g", "serving_size" : "10 g", - "states" : "en:to-be-completed, en:nutrition-facts-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", + "states" : "en:to-be-completed, en:nutrition-facts-to-be-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", "states_hierarchy" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", @@ -1142,7 +1073,7 @@ ], "states_tags" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-fnc1.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-fnc1.json index 5d9f208e2d6b2..a85287154ffa4 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-fnc1.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-fnc1.json @@ -11,21 +11,30 @@ "tester" ], "added_countries_tags" : [], - "additives_n" : 0, - "additives_original_tags" : [], - "additives_tags" : [], + "additives_n" : 2, + "additives_original_tags" : [ + "en:e100", + "en:e322i" + ], + "additives_tags" : [ + "en:e100", + "en:e322", + "en:e322i" + ], "allergens" : "", - "allergens_from_ingredients" : "en:eggs, en:milk, apple, milk, eggs", + "allergens_from_ingredients" : "en:soybeans, en:eggs, en:milk, apple, milk, eggs", "allergens_from_user" : "(en) ", "allergens_hierarchy" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "allergens_tags" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "amino_acids_tags" : [], "categories" : "cookies", @@ -73,7 +82,7 @@ "4xxxxxxxxxxxx" ], "complete" : 0, - "completeness" : 0.5, + "completeness" : 0.4, "correctors_tags" : [], "created_t" : "--ignore--", "creator" : "tests", @@ -551,7 +560,7 @@ "en:biscuits-and-cakes" ], "forest_footprint_data" : { - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "grade" : "a", "ingredients" : [ { @@ -561,10 +570,10 @@ "en:organic" ] ], - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "matching_tag_id" : "en:egg", - "percent" : 9.375, - "percent_estimate" : 9.375, + "percent" : 10.4166666666667, + "percent_estimate" : 10.4166666666667, "processing_factor" : 1, "tag_id" : "en:egg", "tag_type" : "ingredients", @@ -589,9 +598,9 @@ "ecobalyse_code" : "apple-fr", "id" : "en:apple", "is_in_taxonomy" : 1, - "percent_estimate" : 62.5, + "percent_estimate" : 58.3333333333333, "percent_max" : 100, - "percent_min" : 25, + "percent_min" : 16.6666666666667, "text" : "apple", "vegan" : "yes", "vegetarian" : "yes" @@ -601,7 +610,7 @@ "ecobalyse_code" : "milk", "id" : "en:milk", "is_in_taxonomy" : 1, - "percent_estimate" : 18.75, + "percent_estimate" : 20.8333333333333, "percent_max" : 50, "percent_min" : 0, "text" : "milk", @@ -613,7 +622,7 @@ "ecobalyse_code" : "egg-indoor-code3", "id" : "en:egg", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 10.4166666666667, "percent_max" : 33.3333333333333, "percent_min" : 0, "text" : "eggs", @@ -626,12 +635,53 @@ "from_palm_oil" : "yes", "id" : "en:palm-oil", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 5.20833333333333, "percent_max" : 25, "percent_min" : 0, "text" : "palm oil", "vegan" : "yes", "vegetarian" : "yes" + }, + { + "id" : "en:colour", + "ingredients" : [ + { + "id" : "en:e100", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "curcumin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "coloring" + }, + { + "id" : "en:emulsifier", + "ingredients" : [ + { + "ciqual_food_code" : "42200", + "id" : "en:soya-lecithin", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "soy lecithin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "emulsifier" } ], "ingredients_analysis" : { @@ -658,12 +708,18 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], "ingredients_lc" : "en", - "ingredients_n" : 4, + "ingredients_n" : 8, "ingredients_n_tags" : [ - "4", + "8", "1-10" ], "ingredients_non_nutritive_sweeteners_n" : 0, @@ -671,7 +727,11 @@ "en:apple", "en:milk", "en:egg", - "en:palm-oil" + "en:palm-oil", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin" ], "ingredients_percent_analysis" : 1, "ingredients_sweeteners_n" : 0, @@ -685,23 +745,38 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], - "ingredients_text" : "apple, milk, eggs, palm oil", - "ingredients_text_en" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil", + "ingredients_text" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "ingredients_with_specified_percent_n" : 0, "ingredients_with_specified_percent_sum" : 0, - "ingredients_with_unspecified_percent_n" : 4, + "ingredients_with_unspecified_percent_n" : 6, "ingredients_with_unspecified_percent_sum" : 100, - "ingredients_without_ciqual_codes" : [], - "ingredients_without_ciqual_codes_n" : 0, - "ingredients_without_ecobalyse_ids" : [], - "ingredients_without_ecobalyse_ids_n" : 0, + "ingredients_without_ciqual_codes" : [ + "en:colour", + "en:e100", + "en:emulsifier" + ], + "ingredients_without_ciqual_codes_n" : 3, + "ingredients_without_ecobalyse_ids" : [ + "en:colour", + "en:e100", + "en:emulsifier", + "en:soya-lecithin" + ], + "ingredients_without_ecobalyse_ids_n" : 4, "interface_version_created" : "20150316.jqm2", "interface_version_modified" : "20150316.jqm2", - "known_ingredients_n" : 10, + "known_ingredients_n" : 16, "labels" : "organic", "labels_hierarchy" : [ "en:organic" @@ -743,9 +818,6 @@ "en:ecoscore-missing-data-warning", "en:forest-footprint-a", "en:forest-footprint-computed", - "en:nutriscore-2021-c-2023-c", - "en:nutriscore-2021-same-as-2023", - "en:nutriscore-computed", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", "en:nutriscore-missing-nutrition-data-fat", @@ -753,11 +825,11 @@ "en:nutriscore-missing-nutrition-data-saturated-fat", "en:nutriscore-missing-nutrition-data-sodium", "en:nutriscore-missing-nutrition-data-sugars", - "en:nutriscore-using-estimated-nutrition-facts", - "en:nutrition-all-nutriscore-values-known", + "en:nutriscore-not-computed", "en:nutrition-fruits-vegetables-legumes-estimate-from-ingredients", "en:nutrition-fruits-vegetables-nuts-estimate-from-ingredients", "en:nutrition-no-fiber", + "en:nutrition-no-fiber-or-fruits-vegetables-nuts", "en:nutrition-not-enough-data-to-compute-nutrition-score", "en:packagings-not-complete", "en:packagings-not-empty", @@ -765,259 +837,118 @@ "en:packagings-number-of-components-4", "en:main-countries-new-product" ], - "nova_group" : 3, + "nova_group" : 4, "nova_group_debug" : "", - "nova_groups" : "3", + "nova_groups" : "4", "nova_groups_markers" : { "3" : [ [ "categories", "en:sweet-snacks" ] + ], + "4" : [ + [ + "additives", + "en:e100" + ], + [ + "additives", + "en:e322" + ], + [ + "ingredients", + "en:colour" + ], + [ + "ingredients", + "en:emulsifier" + ] ] }, "nova_groups_tags" : [ - "en:3-processed-foods" + "en:4-ultra-processed-food-and-drink-products" ], "nucleotides_tags" : [], "nutrient_levels" : {}, "nutrient_levels_tags" : [], "nutriments" : { - "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 62.5, - "nova-group" : 3, - "nova-group_100g" : 3, - "nova-group_serving" : 3, - "nutrition-score-fr" : 3, - "nutrition-score-fr_100g" : 3 - }, - "nutriments_estimated" : { - "alcohol_100g" : 0, - "beta-carotene_100g" : 1.19375e-05, - "calcium_100g" : 0.0333875, - "carbohydrates_100g" : 7.6484375, - "cholesterol_100g" : 0.03778125, - "copper_100g" : 2.678125e-05, - "energy-kcal_100g" : 134.5875, - "energy-kj_100g" : 558.75, - "energy_100g" : 558.75, - "fat_100g" : 10.4134375, - "fiber_100g" : 0.8125, - "fructose_100g" : 3.77578125, - "galactose_100g" : 0, - "glucose_100g" : 2.0565625, - "iodine_100g" : 7.09375e-06, - "iron_100g" : 0.0002265625, - "lactose_100g" : 0.924375, - "magnesium_100g" : 0.00570625, - "maltose_100g" : 0.00703125, - "manganese_100g" : 2.73828125e-05, - "pantothenic-acid_100g" : 0.0002590625, - "phosphorus_100g" : 0.0445625, - "phylloquinone_100g" : 1.153125e-06, - "polyols_100g" : 0.36875, - "potassium_100g" : 0.09825, - "proteins_100g" : 1.974375, - "salt_100g" : 0.0496875, - "saturated-fat_100g" : 4.903125, - "selenium_100g" : 1.2290625e-06, - "sodium_100g" : 0.019725, - "starch_100g" : 0, - "sucrose_100g" : 0.51953125, - "sugars_100g" : 7.2621875, - "vitamin-a_100g" : 1.739625e-05, - "vitamin-b12_100g" : 2.278125e-07, - "vitamin-b1_100g" : 2.509375e-05, - "vitamin-b2_100g" : 9.34375e-05, - "vitamin-b6_100g" : 4.54375e-05, - "vitamin-b9_100g" : 4.10625e-06, - "vitamin-c_100g" : 0.00274375, - "vitamin-d_100g" : 1.903125e-07, - "vitamin-e_100g" : 0.001657625, - "vitamin-pp_100g" : 8.003125e-05, - "water_100g" : 78.365625, - "zinc_100g" : 0.0002046875 + "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 58.3333333333333, + "nova-group" : 4, + "nova-group_100g" : 4, + "nova-group_serving" : 4 }, "nutriscore" : { "2021" : { "category_available" : 1, "data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, + "energy" : null, + "fiber" : 0, + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 + "proteins" : null, + "saturated_fat" : null, + "sodium" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 3 + "nutriscore_computed" : 0 }, "2023" : { "category_available" : 1, "data" : { - "components" : { - "negative" : [ - { - "id" : "energy", - "points" : 1, - "points_max" : 10, - "unit" : "kJ", - "value" : 558.75 - }, - { - "id" : "sugars", - "points" : 2, - "points_max" : 15, - "unit" : "g", - "value" : 7.26 - }, - { - "id" : "saturated_fat", - "points" : 4, - "points_max" : 10, - "unit" : "g", - "value" : 4.9 - }, - { - "id" : "salt", - "points" : 0, - "points_max" : 20, - "unit" : "g", - "value" : 0.05 - } - ], - "positive" : [ - { - "id" : "proteins", - "points" : 0, - "points_max" : 7, - "unit" : "g", - "value" : 1.97 - }, - { - "id" : "fiber", - "points" : 0, - "points_max" : 5, - "unit" : "g", - "value" : 0.81 - }, - { - "id" : "fruits_vegetables_legumes", - "points" : 2, - "points_max" : 5, - "unit" : "%", - "value" : 62.5 - } - ] - }, - "count_proteins" : 1, - "count_proteins_reason" : "negative_points_less_than_11", + "energy" : null, + "fiber" : null, + "fruits_vegetables_legumes" : 58.3, "is_beverage" : 0, "is_cheese" : 0, "is_fat_oil_nuts_seeds" : 0, "is_red_meat_product" : 0, "is_water" : 0, - "negative_points" : 7, - "negative_points_max" : 55, - "positive_nutrients" : [ - "proteins", - "fiber", - "fruits_vegetables_legumes" - ], - "positive_points" : 2, - "positive_points_max" : 17 + "proteins" : null, + "salt" : null, + "saturated_fat" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 5 + "nutriscore_computed" : 0 } }, "nutriscore_2021_tags" : [ - "c" + "unknown" ], "nutriscore_2023_tags" : [ - "c" + "unknown" ], - "nutriscore_data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, - "grade" : "c", - "is_beverage" : 0, - "is_cheese" : 0, - "is_fat" : 0, - "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "score" : 3, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 - }, - "nutriscore_grade" : "c", - "nutriscore_score" : 3, - "nutriscore_score_opposite" : -3, + "nutriscore_grade" : "unknown", "nutriscore_tags" : [ - "c" + "unknown" ], "nutriscore_version" : "2021", "nutrition_data_per" : "100g", "nutrition_data_prepared_per" : "100g", - "nutrition_grade_fr" : "c", - "nutrition_grades" : "c", + "nutrition_grade_fr" : "unknown", + "nutrition_grades" : "unknown", "nutrition_grades_tags" : [ - "c" + "unknown" ], "nutrition_score_beverage" : 0, "nutrition_score_debug" : "missing energy_100g - missing fat_100g - missing saturated-fat_100g - missing sugars_100g - missing sodium_100g - missing proteins_100g", "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 58.3333333333333, "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 62.5, - "nutrition_score_warning_nutriments_estimated" : 1, + "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 58.3333333333333, + "nutrition_score_warning_no_fiber" : 1, "origin" : "france", "origin_en" : "france", "other_nutritional_substances_tags" : [], @@ -1124,10 +1055,10 @@ "serving_quantity" : "10", "serving_quantity_unit" : "g", "serving_size" : "10 g", - "states" : "en:to-be-completed, en:nutrition-facts-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", + "states" : "en:to-be-completed, en:nutrition-facts-to-be-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", "states_hierarchy" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", @@ -1142,7 +1073,7 @@ ], "states_tags" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-gs.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-gs.json index e4d9026fee348..b35b5cc86b50d 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-gs.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-gs.json @@ -11,21 +11,30 @@ "tester" ], "added_countries_tags" : [], - "additives_n" : 0, - "additives_original_tags" : [], - "additives_tags" : [], + "additives_n" : 2, + "additives_original_tags" : [ + "en:e100", + "en:e322i" + ], + "additives_tags" : [ + "en:e100", + "en:e322", + "en:e322i" + ], "allergens" : "", - "allergens_from_ingredients" : "en:eggs, en:milk, apple, milk, eggs", + "allergens_from_ingredients" : "en:soybeans, en:eggs, en:milk, apple, milk, eggs", "allergens_from_user" : "(en) ", "allergens_hierarchy" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "allergens_tags" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "amino_acids_tags" : [], "categories" : "cookies", @@ -73,7 +82,7 @@ "4xxxxxxxxxxxx" ], "complete" : 0, - "completeness" : 0.5, + "completeness" : 0.4, "correctors_tags" : [], "created_t" : "--ignore--", "creator" : "tests", @@ -551,7 +560,7 @@ "en:biscuits-and-cakes" ], "forest_footprint_data" : { - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "grade" : "a", "ingredients" : [ { @@ -561,10 +570,10 @@ "en:organic" ] ], - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "matching_tag_id" : "en:egg", - "percent" : 9.375, - "percent_estimate" : 9.375, + "percent" : 10.4166666666667, + "percent_estimate" : 10.4166666666667, "processing_factor" : 1, "tag_id" : "en:egg", "tag_type" : "ingredients", @@ -589,9 +598,9 @@ "ecobalyse_code" : "apple-fr", "id" : "en:apple", "is_in_taxonomy" : 1, - "percent_estimate" : 62.5, + "percent_estimate" : 58.3333333333333, "percent_max" : 100, - "percent_min" : 25, + "percent_min" : 16.6666666666667, "text" : "apple", "vegan" : "yes", "vegetarian" : "yes" @@ -601,7 +610,7 @@ "ecobalyse_code" : "milk", "id" : "en:milk", "is_in_taxonomy" : 1, - "percent_estimate" : 18.75, + "percent_estimate" : 20.8333333333333, "percent_max" : 50, "percent_min" : 0, "text" : "milk", @@ -613,7 +622,7 @@ "ecobalyse_code" : "egg-indoor-code3", "id" : "en:egg", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 10.4166666666667, "percent_max" : 33.3333333333333, "percent_min" : 0, "text" : "eggs", @@ -626,12 +635,53 @@ "from_palm_oil" : "yes", "id" : "en:palm-oil", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 5.20833333333333, "percent_max" : 25, "percent_min" : 0, "text" : "palm oil", "vegan" : "yes", "vegetarian" : "yes" + }, + { + "id" : "en:colour", + "ingredients" : [ + { + "id" : "en:e100", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "curcumin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "coloring" + }, + { + "id" : "en:emulsifier", + "ingredients" : [ + { + "ciqual_food_code" : "42200", + "id" : "en:soya-lecithin", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "soy lecithin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "emulsifier" } ], "ingredients_analysis" : { @@ -658,12 +708,18 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], "ingredients_lc" : "en", - "ingredients_n" : 4, + "ingredients_n" : 8, "ingredients_n_tags" : [ - "4", + "8", "1-10" ], "ingredients_non_nutritive_sweeteners_n" : 0, @@ -671,7 +727,11 @@ "en:apple", "en:milk", "en:egg", - "en:palm-oil" + "en:palm-oil", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin" ], "ingredients_percent_analysis" : 1, "ingredients_sweeteners_n" : 0, @@ -685,23 +745,38 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], - "ingredients_text" : "apple, milk, eggs, palm oil", - "ingredients_text_en" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil", + "ingredients_text" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "ingredients_with_specified_percent_n" : 0, "ingredients_with_specified_percent_sum" : 0, - "ingredients_with_unspecified_percent_n" : 4, + "ingredients_with_unspecified_percent_n" : 6, "ingredients_with_unspecified_percent_sum" : 100, - "ingredients_without_ciqual_codes" : [], - "ingredients_without_ciqual_codes_n" : 0, - "ingredients_without_ecobalyse_ids" : [], - "ingredients_without_ecobalyse_ids_n" : 0, + "ingredients_without_ciqual_codes" : [ + "en:colour", + "en:e100", + "en:emulsifier" + ], + "ingredients_without_ciqual_codes_n" : 3, + "ingredients_without_ecobalyse_ids" : [ + "en:colour", + "en:e100", + "en:emulsifier", + "en:soya-lecithin" + ], + "ingredients_without_ecobalyse_ids_n" : 4, "interface_version_created" : "20150316.jqm2", "interface_version_modified" : "20150316.jqm2", - "known_ingredients_n" : 10, + "known_ingredients_n" : 16, "labels" : "organic", "labels_hierarchy" : [ "en:organic" @@ -743,9 +818,6 @@ "en:ecoscore-missing-data-warning", "en:forest-footprint-a", "en:forest-footprint-computed", - "en:nutriscore-2021-c-2023-c", - "en:nutriscore-2021-same-as-2023", - "en:nutriscore-computed", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", "en:nutriscore-missing-nutrition-data-fat", @@ -753,11 +825,11 @@ "en:nutriscore-missing-nutrition-data-saturated-fat", "en:nutriscore-missing-nutrition-data-sodium", "en:nutriscore-missing-nutrition-data-sugars", - "en:nutriscore-using-estimated-nutrition-facts", - "en:nutrition-all-nutriscore-values-known", + "en:nutriscore-not-computed", "en:nutrition-fruits-vegetables-legumes-estimate-from-ingredients", "en:nutrition-fruits-vegetables-nuts-estimate-from-ingredients", "en:nutrition-no-fiber", + "en:nutrition-no-fiber-or-fruits-vegetables-nuts", "en:nutrition-not-enough-data-to-compute-nutrition-score", "en:packagings-not-complete", "en:packagings-not-empty", @@ -765,259 +837,118 @@ "en:packagings-number-of-components-4", "en:main-countries-new-product" ], - "nova_group" : 3, + "nova_group" : 4, "nova_group_debug" : "", - "nova_groups" : "3", + "nova_groups" : "4", "nova_groups_markers" : { "3" : [ [ "categories", "en:sweet-snacks" ] + ], + "4" : [ + [ + "additives", + "en:e100" + ], + [ + "additives", + "en:e322" + ], + [ + "ingredients", + "en:colour" + ], + [ + "ingredients", + "en:emulsifier" + ] ] }, "nova_groups_tags" : [ - "en:3-processed-foods" + "en:4-ultra-processed-food-and-drink-products" ], "nucleotides_tags" : [], "nutrient_levels" : {}, "nutrient_levels_tags" : [], "nutriments" : { - "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 62.5, - "nova-group" : 3, - "nova-group_100g" : 3, - "nova-group_serving" : 3, - "nutrition-score-fr" : 3, - "nutrition-score-fr_100g" : 3 - }, - "nutriments_estimated" : { - "alcohol_100g" : 0, - "beta-carotene_100g" : 1.19375e-05, - "calcium_100g" : 0.0333875, - "carbohydrates_100g" : 7.6484375, - "cholesterol_100g" : 0.03778125, - "copper_100g" : 2.678125e-05, - "energy-kcal_100g" : 134.5875, - "energy-kj_100g" : 558.75, - "energy_100g" : 558.75, - "fat_100g" : 10.4134375, - "fiber_100g" : 0.8125, - "fructose_100g" : 3.77578125, - "galactose_100g" : 0, - "glucose_100g" : 2.0565625, - "iodine_100g" : 7.09375e-06, - "iron_100g" : 0.0002265625, - "lactose_100g" : 0.924375, - "magnesium_100g" : 0.00570625, - "maltose_100g" : 0.00703125, - "manganese_100g" : 2.73828125e-05, - "pantothenic-acid_100g" : 0.0002590625, - "phosphorus_100g" : 0.0445625, - "phylloquinone_100g" : 1.153125e-06, - "polyols_100g" : 0.36875, - "potassium_100g" : 0.09825, - "proteins_100g" : 1.974375, - "salt_100g" : 0.0496875, - "saturated-fat_100g" : 4.903125, - "selenium_100g" : 1.2290625e-06, - "sodium_100g" : 0.019725, - "starch_100g" : 0, - "sucrose_100g" : 0.51953125, - "sugars_100g" : 7.2621875, - "vitamin-a_100g" : 1.739625e-05, - "vitamin-b12_100g" : 2.278125e-07, - "vitamin-b1_100g" : 2.509375e-05, - "vitamin-b2_100g" : 9.34375e-05, - "vitamin-b6_100g" : 4.54375e-05, - "vitamin-b9_100g" : 4.10625e-06, - "vitamin-c_100g" : 0.00274375, - "vitamin-d_100g" : 1.903125e-07, - "vitamin-e_100g" : 0.001657625, - "vitamin-pp_100g" : 8.003125e-05, - "water_100g" : 78.365625, - "zinc_100g" : 0.0002046875 + "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 58.3333333333333, + "nova-group" : 4, + "nova-group_100g" : 4, + "nova-group_serving" : 4 }, "nutriscore" : { "2021" : { "category_available" : 1, "data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, + "energy" : null, + "fiber" : 0, + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 + "proteins" : null, + "saturated_fat" : null, + "sodium" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 3 + "nutriscore_computed" : 0 }, "2023" : { "category_available" : 1, "data" : { - "components" : { - "negative" : [ - { - "id" : "energy", - "points" : 1, - "points_max" : 10, - "unit" : "kJ", - "value" : 558.75 - }, - { - "id" : "sugars", - "points" : 2, - "points_max" : 15, - "unit" : "g", - "value" : 7.26 - }, - { - "id" : "saturated_fat", - "points" : 4, - "points_max" : 10, - "unit" : "g", - "value" : 4.9 - }, - { - "id" : "salt", - "points" : 0, - "points_max" : 20, - "unit" : "g", - "value" : 0.05 - } - ], - "positive" : [ - { - "id" : "proteins", - "points" : 0, - "points_max" : 7, - "unit" : "g", - "value" : 1.97 - }, - { - "id" : "fiber", - "points" : 0, - "points_max" : 5, - "unit" : "g", - "value" : 0.81 - }, - { - "id" : "fruits_vegetables_legumes", - "points" : 2, - "points_max" : 5, - "unit" : "%", - "value" : 62.5 - } - ] - }, - "count_proteins" : 1, - "count_proteins_reason" : "negative_points_less_than_11", + "energy" : null, + "fiber" : null, + "fruits_vegetables_legumes" : 58.3, "is_beverage" : 0, "is_cheese" : 0, "is_fat_oil_nuts_seeds" : 0, "is_red_meat_product" : 0, "is_water" : 0, - "negative_points" : 7, - "negative_points_max" : 55, - "positive_nutrients" : [ - "proteins", - "fiber", - "fruits_vegetables_legumes" - ], - "positive_points" : 2, - "positive_points_max" : 17 + "proteins" : null, + "salt" : null, + "saturated_fat" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 5 + "nutriscore_computed" : 0 } }, "nutriscore_2021_tags" : [ - "c" + "unknown" ], "nutriscore_2023_tags" : [ - "c" + "unknown" ], - "nutriscore_data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, - "grade" : "c", - "is_beverage" : 0, - "is_cheese" : 0, - "is_fat" : 0, - "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "score" : 3, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 - }, - "nutriscore_grade" : "c", - "nutriscore_score" : 3, - "nutriscore_score_opposite" : -3, + "nutriscore_grade" : "unknown", "nutriscore_tags" : [ - "c" + "unknown" ], "nutriscore_version" : "2021", "nutrition_data_per" : "100g", "nutrition_data_prepared_per" : "100g", - "nutrition_grade_fr" : "c", - "nutrition_grades" : "c", + "nutrition_grade_fr" : "unknown", + "nutrition_grades" : "unknown", "nutrition_grades_tags" : [ - "c" + "unknown" ], "nutrition_score_beverage" : 0, "nutrition_score_debug" : "missing energy_100g - missing fat_100g - missing saturated-fat_100g - missing sugars_100g - missing sodium_100g - missing proteins_100g", "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 58.3333333333333, "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 62.5, - "nutrition_score_warning_nutriments_estimated" : 1, + "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 58.3333333333333, + "nutrition_score_warning_no_fiber" : 1, "origin" : "france", "origin_en" : "france", "other_nutritional_substances_tags" : [], @@ -1124,10 +1055,10 @@ "serving_quantity" : "10", "serving_quantity_unit" : "g", "serving_size" : "10 g", - "states" : "en:to-be-completed, en:nutrition-facts-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", + "states" : "en:to-be-completed, en:nutrition-facts-to-be-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", "states_hierarchy" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", @@ -1142,7 +1073,7 @@ ], "states_tags" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-with-leading-zero.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-with-leading-zero.json index 2b506b5c46744..c4b7b7e90d538 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-with-leading-zero.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-with-leading-zero.json @@ -11,21 +11,30 @@ "tester" ], "added_countries_tags" : [], - "additives_n" : 0, - "additives_original_tags" : [], - "additives_tags" : [], + "additives_n" : 2, + "additives_original_tags" : [ + "en:e100", + "en:e322i" + ], + "additives_tags" : [ + "en:e100", + "en:e322", + "en:e322i" + ], "allergens" : "", - "allergens_from_ingredients" : "en:eggs, en:milk, apple, milk, eggs", + "allergens_from_ingredients" : "en:soybeans, en:eggs, en:milk, apple, milk, eggs", "allergens_from_user" : "(en) ", "allergens_hierarchy" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "allergens_tags" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "amino_acids_tags" : [], "categories" : "cookies", @@ -73,7 +82,7 @@ "4xxxxxxxxxxxx" ], "complete" : 0, - "completeness" : 0.5, + "completeness" : 0.4, "correctors_tags" : [], "created_t" : "--ignore--", "creator" : "tests", @@ -551,7 +560,7 @@ "en:biscuits-and-cakes" ], "forest_footprint_data" : { - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "grade" : "a", "ingredients" : [ { @@ -561,10 +570,10 @@ "en:organic" ] ], - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "matching_tag_id" : "en:egg", - "percent" : 9.375, - "percent_estimate" : 9.375, + "percent" : 10.4166666666667, + "percent_estimate" : 10.4166666666667, "processing_factor" : 1, "tag_id" : "en:egg", "tag_type" : "ingredients", @@ -589,9 +598,9 @@ "ecobalyse_code" : "apple-fr", "id" : "en:apple", "is_in_taxonomy" : 1, - "percent_estimate" : 62.5, + "percent_estimate" : 58.3333333333333, "percent_max" : 100, - "percent_min" : 25, + "percent_min" : 16.6666666666667, "text" : "apple", "vegan" : "yes", "vegetarian" : "yes" @@ -601,7 +610,7 @@ "ecobalyse_code" : "milk", "id" : "en:milk", "is_in_taxonomy" : 1, - "percent_estimate" : 18.75, + "percent_estimate" : 20.8333333333333, "percent_max" : 50, "percent_min" : 0, "text" : "milk", @@ -613,7 +622,7 @@ "ecobalyse_code" : "egg-indoor-code3", "id" : "en:egg", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 10.4166666666667, "percent_max" : 33.3333333333333, "percent_min" : 0, "text" : "eggs", @@ -626,12 +635,53 @@ "from_palm_oil" : "yes", "id" : "en:palm-oil", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 5.20833333333333, "percent_max" : 25, "percent_min" : 0, "text" : "palm oil", "vegan" : "yes", "vegetarian" : "yes" + }, + { + "id" : "en:colour", + "ingredients" : [ + { + "id" : "en:e100", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "curcumin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "coloring" + }, + { + "id" : "en:emulsifier", + "ingredients" : [ + { + "ciqual_food_code" : "42200", + "id" : "en:soya-lecithin", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "soy lecithin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "emulsifier" } ], "ingredients_analysis" : { @@ -658,12 +708,18 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], "ingredients_lc" : "en", - "ingredients_n" : 4, + "ingredients_n" : 8, "ingredients_n_tags" : [ - "4", + "8", "1-10" ], "ingredients_non_nutritive_sweeteners_n" : 0, @@ -671,7 +727,11 @@ "en:apple", "en:milk", "en:egg", - "en:palm-oil" + "en:palm-oil", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin" ], "ingredients_percent_analysis" : 1, "ingredients_sweeteners_n" : 0, @@ -685,23 +745,38 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], - "ingredients_text" : "apple, milk, eggs, palm oil", - "ingredients_text_en" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil", + "ingredients_text" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "ingredients_with_specified_percent_n" : 0, "ingredients_with_specified_percent_sum" : 0, - "ingredients_with_unspecified_percent_n" : 4, + "ingredients_with_unspecified_percent_n" : 6, "ingredients_with_unspecified_percent_sum" : 100, - "ingredients_without_ciqual_codes" : [], - "ingredients_without_ciqual_codes_n" : 0, - "ingredients_without_ecobalyse_ids" : [], - "ingredients_without_ecobalyse_ids_n" : 0, + "ingredients_without_ciqual_codes" : [ + "en:colour", + "en:e100", + "en:emulsifier" + ], + "ingredients_without_ciqual_codes_n" : 3, + "ingredients_without_ecobalyse_ids" : [ + "en:colour", + "en:e100", + "en:emulsifier", + "en:soya-lecithin" + ], + "ingredients_without_ecobalyse_ids_n" : 4, "interface_version_created" : "20150316.jqm2", "interface_version_modified" : "20150316.jqm2", - "known_ingredients_n" : 10, + "known_ingredients_n" : 16, "labels" : "organic", "labels_hierarchy" : [ "en:organic" @@ -743,9 +818,6 @@ "en:ecoscore-missing-data-warning", "en:forest-footprint-a", "en:forest-footprint-computed", - "en:nutriscore-2021-c-2023-c", - "en:nutriscore-2021-same-as-2023", - "en:nutriscore-computed", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", "en:nutriscore-missing-nutrition-data-fat", @@ -753,11 +825,11 @@ "en:nutriscore-missing-nutrition-data-saturated-fat", "en:nutriscore-missing-nutrition-data-sodium", "en:nutriscore-missing-nutrition-data-sugars", - "en:nutriscore-using-estimated-nutrition-facts", - "en:nutrition-all-nutriscore-values-known", + "en:nutriscore-not-computed", "en:nutrition-fruits-vegetables-legumes-estimate-from-ingredients", "en:nutrition-fruits-vegetables-nuts-estimate-from-ingredients", "en:nutrition-no-fiber", + "en:nutrition-no-fiber-or-fruits-vegetables-nuts", "en:nutrition-not-enough-data-to-compute-nutrition-score", "en:packagings-not-complete", "en:packagings-not-empty", @@ -765,259 +837,118 @@ "en:packagings-number-of-components-4", "en:main-countries-new-product" ], - "nova_group" : 3, + "nova_group" : 4, "nova_group_debug" : "", - "nova_groups" : "3", + "nova_groups" : "4", "nova_groups_markers" : { "3" : [ [ "categories", "en:sweet-snacks" ] + ], + "4" : [ + [ + "additives", + "en:e100" + ], + [ + "additives", + "en:e322" + ], + [ + "ingredients", + "en:colour" + ], + [ + "ingredients", + "en:emulsifier" + ] ] }, "nova_groups_tags" : [ - "en:3-processed-foods" + "en:4-ultra-processed-food-and-drink-products" ], "nucleotides_tags" : [], "nutrient_levels" : {}, "nutrient_levels_tags" : [], "nutriments" : { - "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 62.5, - "nova-group" : 3, - "nova-group_100g" : 3, - "nova-group_serving" : 3, - "nutrition-score-fr" : 3, - "nutrition-score-fr_100g" : 3 - }, - "nutriments_estimated" : { - "alcohol_100g" : 0, - "beta-carotene_100g" : 1.19375e-05, - "calcium_100g" : 0.0333875, - "carbohydrates_100g" : 7.6484375, - "cholesterol_100g" : 0.03778125, - "copper_100g" : 2.678125e-05, - "energy-kcal_100g" : 134.5875, - "energy-kj_100g" : 558.75, - "energy_100g" : 558.75, - "fat_100g" : 10.4134375, - "fiber_100g" : 0.8125, - "fructose_100g" : 3.77578125, - "galactose_100g" : 0, - "glucose_100g" : 2.0565625, - "iodine_100g" : 7.09375e-06, - "iron_100g" : 0.0002265625, - "lactose_100g" : 0.924375, - "magnesium_100g" : 0.00570625, - "maltose_100g" : 0.00703125, - "manganese_100g" : 2.73828125e-05, - "pantothenic-acid_100g" : 0.0002590625, - "phosphorus_100g" : 0.0445625, - "phylloquinone_100g" : 1.153125e-06, - "polyols_100g" : 0.36875, - "potassium_100g" : 0.09825, - "proteins_100g" : 1.974375, - "salt_100g" : 0.0496875, - "saturated-fat_100g" : 4.903125, - "selenium_100g" : 1.2290625e-06, - "sodium_100g" : 0.019725, - "starch_100g" : 0, - "sucrose_100g" : 0.51953125, - "sugars_100g" : 7.2621875, - "vitamin-a_100g" : 1.739625e-05, - "vitamin-b12_100g" : 2.278125e-07, - "vitamin-b1_100g" : 2.509375e-05, - "vitamin-b2_100g" : 9.34375e-05, - "vitamin-b6_100g" : 4.54375e-05, - "vitamin-b9_100g" : 4.10625e-06, - "vitamin-c_100g" : 0.00274375, - "vitamin-d_100g" : 1.903125e-07, - "vitamin-e_100g" : 0.001657625, - "vitamin-pp_100g" : 8.003125e-05, - "water_100g" : 78.365625, - "zinc_100g" : 0.0002046875 + "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 58.3333333333333, + "nova-group" : 4, + "nova-group_100g" : 4, + "nova-group_serving" : 4 }, "nutriscore" : { "2021" : { "category_available" : 1, "data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, + "energy" : null, + "fiber" : 0, + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 + "proteins" : null, + "saturated_fat" : null, + "sodium" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 3 + "nutriscore_computed" : 0 }, "2023" : { "category_available" : 1, "data" : { - "components" : { - "negative" : [ - { - "id" : "energy", - "points" : 1, - "points_max" : 10, - "unit" : "kJ", - "value" : 558.75 - }, - { - "id" : "sugars", - "points" : 2, - "points_max" : 15, - "unit" : "g", - "value" : 7.26 - }, - { - "id" : "saturated_fat", - "points" : 4, - "points_max" : 10, - "unit" : "g", - "value" : 4.9 - }, - { - "id" : "salt", - "points" : 0, - "points_max" : 20, - "unit" : "g", - "value" : 0.05 - } - ], - "positive" : [ - { - "id" : "proteins", - "points" : 0, - "points_max" : 7, - "unit" : "g", - "value" : 1.97 - }, - { - "id" : "fiber", - "points" : 0, - "points_max" : 5, - "unit" : "g", - "value" : 0.81 - }, - { - "id" : "fruits_vegetables_legumes", - "points" : 2, - "points_max" : 5, - "unit" : "%", - "value" : 62.5 - } - ] - }, - "count_proteins" : 1, - "count_proteins_reason" : "negative_points_less_than_11", + "energy" : null, + "fiber" : null, + "fruits_vegetables_legumes" : 58.3, "is_beverage" : 0, "is_cheese" : 0, "is_fat_oil_nuts_seeds" : 0, "is_red_meat_product" : 0, "is_water" : 0, - "negative_points" : 7, - "negative_points_max" : 55, - "positive_nutrients" : [ - "proteins", - "fiber", - "fruits_vegetables_legumes" - ], - "positive_points" : 2, - "positive_points_max" : 17 + "proteins" : null, + "salt" : null, + "saturated_fat" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 5 + "nutriscore_computed" : 0 } }, "nutriscore_2021_tags" : [ - "c" + "unknown" ], "nutriscore_2023_tags" : [ - "c" + "unknown" ], - "nutriscore_data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, - "grade" : "c", - "is_beverage" : 0, - "is_cheese" : 0, - "is_fat" : 0, - "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "score" : 3, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 - }, - "nutriscore_grade" : "c", - "nutriscore_score" : 3, - "nutriscore_score_opposite" : -3, + "nutriscore_grade" : "unknown", "nutriscore_tags" : [ - "c" + "unknown" ], "nutriscore_version" : "2021", "nutrition_data_per" : "100g", "nutrition_data_prepared_per" : "100g", - "nutrition_grade_fr" : "c", - "nutrition_grades" : "c", + "nutrition_grade_fr" : "unknown", + "nutrition_grades" : "unknown", "nutrition_grades_tags" : [ - "c" + "unknown" ], "nutrition_score_beverage" : 0, "nutrition_score_debug" : "missing energy_100g - missing fat_100g - missing saturated-fat_100g - missing sugars_100g - missing sodium_100g - missing proteins_100g", "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 58.3333333333333, "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 62.5, - "nutrition_score_warning_nutriments_estimated" : 1, + "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 58.3333333333333, + "nutrition_score_warning_no_fiber" : 1, "origin" : "france", "origin_en" : "france", "other_nutritional_substances_tags" : [], @@ -1124,10 +1055,10 @@ "serving_quantity" : "10", "serving_quantity_unit" : "g", "serving_size" : "10 g", - "states" : "en:to-be-completed, en:nutrition-facts-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", + "states" : "en:to-be-completed, en:nutrition-facts-to-be-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", "states_hierarchy" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", @@ -1142,7 +1073,7 @@ ], "states_tags" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product.json index 7863697d88b3c..f5bc7dcb8a78c 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product.json @@ -11,21 +11,30 @@ "tester" ], "added_countries_tags" : [], - "additives_n" : 0, - "additives_original_tags" : [], - "additives_tags" : [], + "additives_n" : 2, + "additives_original_tags" : [ + "en:e100", + "en:e322i" + ], + "additives_tags" : [ + "en:e100", + "en:e322", + "en:e322i" + ], "allergens" : "", - "allergens_from_ingredients" : "en:eggs, en:milk, apple, milk, eggs", + "allergens_from_ingredients" : "en:soybeans, en:eggs, en:milk, apple, milk, eggs", "allergens_from_user" : "(en) ", "allergens_hierarchy" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "allergens_tags" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "amino_acids_tags" : [], "categories" : "cookies", @@ -73,7 +82,7 @@ "4xxxxxxxxxxxx" ], "complete" : 0, - "completeness" : 0.5, + "completeness" : 0.4, "correctors_tags" : [], "created_t" : "--ignore--", "creator" : "tests", @@ -551,7 +560,7 @@ "en:biscuits-and-cakes" ], "forest_footprint_data" : { - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "grade" : "a", "ingredients" : [ { @@ -561,10 +570,10 @@ "en:organic" ] ], - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "matching_tag_id" : "en:egg", - "percent" : 9.375, - "percent_estimate" : 9.375, + "percent" : 10.4166666666667, + "percent_estimate" : 10.4166666666667, "processing_factor" : 1, "tag_id" : "en:egg", "tag_type" : "ingredients", @@ -589,9 +598,9 @@ "ecobalyse_code" : "apple-fr", "id" : "en:apple", "is_in_taxonomy" : 1, - "percent_estimate" : 62.5, + "percent_estimate" : 58.3333333333333, "percent_max" : 100, - "percent_min" : 25, + "percent_min" : 16.6666666666667, "text" : "apple", "vegan" : "yes", "vegetarian" : "yes" @@ -601,7 +610,7 @@ "ecobalyse_code" : "milk", "id" : "en:milk", "is_in_taxonomy" : 1, - "percent_estimate" : 18.75, + "percent_estimate" : 20.8333333333333, "percent_max" : 50, "percent_min" : 0, "text" : "milk", @@ -613,7 +622,7 @@ "ecobalyse_code" : "egg-indoor-code3", "id" : "en:egg", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 10.4166666666667, "percent_max" : 33.3333333333333, "percent_min" : 0, "text" : "eggs", @@ -626,12 +635,53 @@ "from_palm_oil" : "yes", "id" : "en:palm-oil", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 5.20833333333333, "percent_max" : 25, "percent_min" : 0, "text" : "palm oil", "vegan" : "yes", "vegetarian" : "yes" + }, + { + "id" : "en:colour", + "ingredients" : [ + { + "id" : "en:e100", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "curcumin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "coloring" + }, + { + "id" : "en:emulsifier", + "ingredients" : [ + { + "ciqual_food_code" : "42200", + "id" : "en:soya-lecithin", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "soy lecithin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "emulsifier" } ], "ingredients_analysis" : { @@ -658,12 +708,18 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], "ingredients_lc" : "en", - "ingredients_n" : 4, + "ingredients_n" : 8, "ingredients_n_tags" : [ - "4", + "8", "1-10" ], "ingredients_non_nutritive_sweeteners_n" : 0, @@ -671,7 +727,11 @@ "en:apple", "en:milk", "en:egg", - "en:palm-oil" + "en:palm-oil", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin" ], "ingredients_percent_analysis" : 1, "ingredients_sweeteners_n" : 0, @@ -685,23 +745,38 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], - "ingredients_text" : "apple, milk, eggs, palm oil", - "ingredients_text_en" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil", + "ingredients_text" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "ingredients_with_specified_percent_n" : 0, "ingredients_with_specified_percent_sum" : 0, - "ingredients_with_unspecified_percent_n" : 4, + "ingredients_with_unspecified_percent_n" : 6, "ingredients_with_unspecified_percent_sum" : 100, - "ingredients_without_ciqual_codes" : [], - "ingredients_without_ciqual_codes_n" : 0, - "ingredients_without_ecobalyse_ids" : [], - "ingredients_without_ecobalyse_ids_n" : 0, + "ingredients_without_ciqual_codes" : [ + "en:colour", + "en:e100", + "en:emulsifier" + ], + "ingredients_without_ciqual_codes_n" : 3, + "ingredients_without_ecobalyse_ids" : [ + "en:colour", + "en:e100", + "en:emulsifier", + "en:soya-lecithin" + ], + "ingredients_without_ecobalyse_ids_n" : 4, "interface_version_created" : "20150316.jqm2", "interface_version_modified" : "20150316.jqm2", - "known_ingredients_n" : 10, + "known_ingredients_n" : 16, "labels" : "organic", "labels_hierarchy" : [ "en:organic" @@ -743,9 +818,6 @@ "en:ecoscore-missing-data-warning", "en:forest-footprint-a", "en:forest-footprint-computed", - "en:nutriscore-2021-c-2023-c", - "en:nutriscore-2021-same-as-2023", - "en:nutriscore-computed", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", "en:nutriscore-missing-nutrition-data-fat", @@ -753,11 +825,11 @@ "en:nutriscore-missing-nutrition-data-saturated-fat", "en:nutriscore-missing-nutrition-data-sodium", "en:nutriscore-missing-nutrition-data-sugars", - "en:nutriscore-using-estimated-nutrition-facts", - "en:nutrition-all-nutriscore-values-known", + "en:nutriscore-not-computed", "en:nutrition-fruits-vegetables-legumes-estimate-from-ingredients", "en:nutrition-fruits-vegetables-nuts-estimate-from-ingredients", "en:nutrition-no-fiber", + "en:nutrition-no-fiber-or-fruits-vegetables-nuts", "en:nutrition-not-enough-data-to-compute-nutrition-score", "en:packagings-not-complete", "en:packagings-not-empty", @@ -765,259 +837,118 @@ "en:packagings-number-of-components-4", "en:main-countries-new-product" ], - "nova_group" : 3, + "nova_group" : 4, "nova_group_debug" : "", - "nova_groups" : "3", + "nova_groups" : "4", "nova_groups_markers" : { "3" : [ [ "categories", "en:sweet-snacks" ] + ], + "4" : [ + [ + "additives", + "en:e100" + ], + [ + "additives", + "en:e322" + ], + [ + "ingredients", + "en:colour" + ], + [ + "ingredients", + "en:emulsifier" + ] ] }, "nova_groups_tags" : [ - "en:3-processed-foods" + "en:4-ultra-processed-food-and-drink-products" ], "nucleotides_tags" : [], "nutrient_levels" : {}, "nutrient_levels_tags" : [], "nutriments" : { - "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 62.5, - "nova-group" : 3, - "nova-group_100g" : 3, - "nova-group_serving" : 3, - "nutrition-score-fr" : 3, - "nutrition-score-fr_100g" : 3 - }, - "nutriments_estimated" : { - "alcohol_100g" : 0, - "beta-carotene_100g" : 1.19375e-05, - "calcium_100g" : 0.0333875, - "carbohydrates_100g" : 7.6484375, - "cholesterol_100g" : 0.03778125, - "copper_100g" : 2.678125e-05, - "energy-kcal_100g" : 134.5875, - "energy-kj_100g" : 558.75, - "energy_100g" : 558.75, - "fat_100g" : 10.4134375, - "fiber_100g" : 0.8125, - "fructose_100g" : 3.77578125, - "galactose_100g" : 0, - "glucose_100g" : 2.0565625, - "iodine_100g" : 7.09375e-06, - "iron_100g" : 0.0002265625, - "lactose_100g" : 0.924375, - "magnesium_100g" : 0.00570625, - "maltose_100g" : 0.00703125, - "manganese_100g" : 2.73828125e-05, - "pantothenic-acid_100g" : 0.0002590625, - "phosphorus_100g" : 0.0445625, - "phylloquinone_100g" : 1.153125e-06, - "polyols_100g" : 0.36875, - "potassium_100g" : 0.09825, - "proteins_100g" : 1.974375, - "salt_100g" : 0.0496875, - "saturated-fat_100g" : 4.903125, - "selenium_100g" : 1.2290625e-06, - "sodium_100g" : 0.019725, - "starch_100g" : 0, - "sucrose_100g" : 0.51953125, - "sugars_100g" : 7.2621875, - "vitamin-a_100g" : 1.739625e-05, - "vitamin-b12_100g" : 2.278125e-07, - "vitamin-b1_100g" : 2.509375e-05, - "vitamin-b2_100g" : 9.34375e-05, - "vitamin-b6_100g" : 4.54375e-05, - "vitamin-b9_100g" : 4.10625e-06, - "vitamin-c_100g" : 0.00274375, - "vitamin-d_100g" : 1.903125e-07, - "vitamin-e_100g" : 0.001657625, - "vitamin-pp_100g" : 8.003125e-05, - "water_100g" : 78.365625, - "zinc_100g" : 0.0002046875 + "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 58.3333333333333, + "nova-group" : 4, + "nova-group_100g" : 4, + "nova-group_serving" : 4 }, "nutriscore" : { "2021" : { "category_available" : 1, "data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, + "energy" : null, + "fiber" : 0, + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 + "proteins" : null, + "saturated_fat" : null, + "sodium" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 3 + "nutriscore_computed" : 0 }, "2023" : { "category_available" : 1, "data" : { - "components" : { - "negative" : [ - { - "id" : "energy", - "points" : 1, - "points_max" : 10, - "unit" : "kJ", - "value" : 558.75 - }, - { - "id" : "sugars", - "points" : 2, - "points_max" : 15, - "unit" : "g", - "value" : 7.26 - }, - { - "id" : "saturated_fat", - "points" : 4, - "points_max" : 10, - "unit" : "g", - "value" : 4.9 - }, - { - "id" : "salt", - "points" : 0, - "points_max" : 20, - "unit" : "g", - "value" : 0.05 - } - ], - "positive" : [ - { - "id" : "proteins", - "points" : 0, - "points_max" : 7, - "unit" : "g", - "value" : 1.97 - }, - { - "id" : "fiber", - "points" : 0, - "points_max" : 5, - "unit" : "g", - "value" : 0.81 - }, - { - "id" : "fruits_vegetables_legumes", - "points" : 2, - "points_max" : 5, - "unit" : "%", - "value" : 62.5 - } - ] - }, - "count_proteins" : 1, - "count_proteins_reason" : "negative_points_less_than_11", + "energy" : null, + "fiber" : null, + "fruits_vegetables_legumes" : 58.3, "is_beverage" : 0, "is_cheese" : 0, "is_fat_oil_nuts_seeds" : 0, "is_red_meat_product" : 0, "is_water" : 0, - "negative_points" : 7, - "negative_points_max" : 55, - "positive_nutrients" : [ - "proteins", - "fiber", - "fruits_vegetables_legumes" - ], - "positive_points" : 2, - "positive_points_max" : 17 + "proteins" : null, + "salt" : null, + "saturated_fat" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 5 + "nutriscore_computed" : 0 } }, "nutriscore_2021_tags" : [ - "c" + "unknown" ], "nutriscore_2023_tags" : [ - "c" + "unknown" ], - "nutriscore_data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, - "grade" : "c", - "is_beverage" : 0, - "is_cheese" : 0, - "is_fat" : 0, - "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "score" : 3, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 - }, - "nutriscore_grade" : "c", - "nutriscore_score" : 3, - "nutriscore_score_opposite" : -3, + "nutriscore_grade" : "unknown", "nutriscore_tags" : [ - "c" + "unknown" ], "nutriscore_version" : "2021", "nutrition_data_per" : "100g", "nutrition_data_prepared_per" : "100g", - "nutrition_grade_fr" : "c", - "nutrition_grades" : "c", + "nutrition_grade_fr" : "unknown", + "nutrition_grades" : "unknown", "nutrition_grades_tags" : [ - "c" + "unknown" ], "nutrition_score_beverage" : 0, "nutrition_score_debug" : "missing energy_100g - missing fat_100g - missing saturated-fat_100g - missing sugars_100g - missing sodium_100g - missing proteins_100g", "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 58.3333333333333, "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 62.5, - "nutrition_score_warning_nutriments_estimated" : 1, + "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 58.3333333333333, + "nutrition_score_warning_no_fiber" : 1, "origin" : "france", "origin_en" : "france", "other_nutritional_substances_tags" : [], @@ -1124,10 +1055,10 @@ "serving_quantity" : "10", "serving_quantity_unit" : "g", "serving_size" : "10 g", - "states" : "en:to-be-completed, en:nutrition-facts-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", + "states" : "en:to-be-completed, en:nutrition-facts-to-be-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", "states_hierarchy" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", @@ -1142,7 +1073,7 @@ ], "states_tags" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-fields-all-knowledge-panels.json b/tests/integration/expected_test_results/api_v3_product_read/get-fields-all-knowledge-panels.json index b260a5928b714..72774e3bbabe7 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-fields-all-knowledge-panels.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-fields-all-knowledge-panels.json @@ -11,21 +11,30 @@ "tester" ], "added_countries_tags" : [], - "additives_n" : 0, - "additives_original_tags" : [], - "additives_tags" : [], + "additives_n" : 2, + "additives_original_tags" : [ + "en:e100", + "en:e322i" + ], + "additives_tags" : [ + "en:e100", + "en:e322", + "en:e322i" + ], "allergens" : "", - "allergens_from_ingredients" : "en:eggs, en:milk, apple, milk, eggs", + "allergens_from_ingredients" : "en:soybeans, en:eggs, en:milk, apple, milk, eggs", "allergens_from_user" : "(en) ", "allergens_hierarchy" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "allergens_tags" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "amino_acids_tags" : [], "categories" : "cookies", @@ -73,7 +82,7 @@ "4xxxxxxxxxxxx" ], "complete" : 0, - "completeness" : 0.5, + "completeness" : 0.4, "correctors_tags" : [], "created_t" : "--ignore--", "creator" : "tests", @@ -551,7 +560,7 @@ "en:biscuits-and-cakes" ], "forest_footprint_data" : { - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "grade" : "a", "ingredients" : [ { @@ -561,10 +570,10 @@ "en:organic" ] ], - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "matching_tag_id" : "en:egg", - "percent" : 9.375, - "percent_estimate" : 9.375, + "percent" : 10.4166666666667, + "percent_estimate" : 10.4166666666667, "processing_factor" : 1, "tag_id" : "en:egg", "tag_type" : "ingredients", @@ -589,9 +598,9 @@ "ecobalyse_code" : "apple-fr", "id" : "en:apple", "is_in_taxonomy" : 1, - "percent_estimate" : 62.5, + "percent_estimate" : 58.3333333333333, "percent_max" : 100, - "percent_min" : 25, + "percent_min" : 16.6666666666667, "text" : "apple", "vegan" : "yes", "vegetarian" : "yes" @@ -601,7 +610,7 @@ "ecobalyse_code" : "milk", "id" : "en:milk", "is_in_taxonomy" : 1, - "percent_estimate" : 18.75, + "percent_estimate" : 20.8333333333333, "percent_max" : 50, "percent_min" : 0, "text" : "milk", @@ -613,7 +622,7 @@ "ecobalyse_code" : "egg-indoor-code3", "id" : "en:egg", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 10.4166666666667, "percent_max" : 33.3333333333333, "percent_min" : 0, "text" : "eggs", @@ -626,12 +635,53 @@ "from_palm_oil" : "yes", "id" : "en:palm-oil", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 5.20833333333333, "percent_max" : 25, "percent_min" : 0, "text" : "palm oil", "vegan" : "yes", "vegetarian" : "yes" + }, + { + "id" : "en:colour", + "ingredients" : [ + { + "id" : "en:e100", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "curcumin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "coloring" + }, + { + "id" : "en:emulsifier", + "ingredients" : [ + { + "ciqual_food_code" : "42200", + "id" : "en:soya-lecithin", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "soy lecithin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "emulsifier" } ], "ingredients_analysis" : { @@ -658,12 +708,18 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], "ingredients_lc" : "en", - "ingredients_n" : 4, + "ingredients_n" : 8, "ingredients_n_tags" : [ - "4", + "8", "1-10" ], "ingredients_non_nutritive_sweeteners_n" : 0, @@ -671,7 +727,11 @@ "en:apple", "en:milk", "en:egg", - "en:palm-oil" + "en:palm-oil", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin" ], "ingredients_percent_analysis" : 1, "ingredients_sweeteners_n" : 0, @@ -685,23 +745,121 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], - "ingredients_text" : "apple, milk, eggs, palm oil", - "ingredients_text_en" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil", + "ingredients_text" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "ingredients_with_specified_percent_n" : 0, "ingredients_with_specified_percent_sum" : 0, - "ingredients_with_unspecified_percent_n" : 4, + "ingredients_with_unspecified_percent_n" : 6, "ingredients_with_unspecified_percent_sum" : 100, - "ingredients_without_ciqual_codes" : [], - "ingredients_without_ciqual_codes_n" : 0, - "ingredients_without_ecobalyse_ids" : [], - "ingredients_without_ecobalyse_ids_n" : 0, + "ingredients_without_ciqual_codes" : [ + "en:colour", + "en:e100", + "en:emulsifier" + ], + "ingredients_without_ciqual_codes_n" : 3, + "ingredients_without_ecobalyse_ids" : [ + "en:colour", + "en:e100", + "en:emulsifier", + "en:soya-lecithin" + ], + "ingredients_without_ecobalyse_ids_n" : 4, "interface_version_created" : "20150316.jqm2", "interface_version_modified" : "20150316.jqm2", "knowledge_panels" : { + "additive_en:e100" : { + "elements" : [], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E100 - Curcumin" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin: Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "English", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322 - Lecithins" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322i" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin: Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "English", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322i - Lecithin" + }, + "topics" : [ + "health" + ] + }, + "additives" : { + "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e100" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322i" + } + } + ], + "expanded" : true, + "level" : "info", + "topics" : [ + "health" + ], + "type" : "inline" + }, "carbon_footprint" : { "elements" : [ { @@ -1308,6 +1466,15 @@ "title" : "Food processing" } }, + { + "element_type" : "panel_group", + "panel_group_element" : { + "panel_ids" : [ + "additives" + ], + "title" : "Additives" + } + }, { "element_type" : "panel_group", "panel_group_element" : { @@ -1380,8 +1547,8 @@ "text_element" : { "edit_field_id" : "ingredients_text_en", "edit_field_type" : "ingredients_text", - "edit_field_value" : "apple, milk, eggs, palm oil", - "html" : "apple, milk, eggs, palm oil", + "edit_field_value" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "html" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "language" : "English", "lc" : "en" } @@ -1389,7 +1556,7 @@ { "element_type" : "text", "text_element" : { - "html" : "Allergens: \n Apple, Eggs, Milk\n " + "html" : "Allergens: \n Apple, Eggs, Milk, Soybeans\n " } } ], @@ -1400,7 +1567,7 @@ "title_element" : { "icon_color_from_evaluation" : true, "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/ingredients.svg", - "title" : "4 ingredients" + "title" : "8 ingredients" }, "topics" : [ "health" @@ -1445,13 +1612,13 @@ { "element_type" : "text", "text_element" : { - "html" : "en: apple, milk, eggs, palm oil" + "html" : "en: apple, milk, eggs, palm oil, coloring (curcumin), emulsifier (soy lecithin)" } }, { "element_type" : "text", "text_element" : { - "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 25 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
\n" + "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 16.6666666666667 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
  9. coloring -> en:colour - percent_min: 0 - percent_max: 20
      \n
    1. curcumin -> en:e100 - vegan: yes - vegetarian: yes - percent_min: 0 - percent_max: 20
    2. \n
    \n
  10. \n
  11. emulsifier -> en:emulsifier - percent_min: 0 - percent_max: 16.6666666666667
      \n
    1. soy lecithin -> en:soya-lecithin - vegan: yes - vegetarian: yes - ciqual_food_code: 42200 - percent_min: 0 - percent_max: 16.6666666666667
    2. \n
    \n
  12. \n
\n" } }, { @@ -1545,23 +1712,30 @@ }, "nova" : { "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "recommendation_ultra_processed_foods" + } + }, { "element_type" : "text", "text_element" : { - "html" : "\n\n \n \n

Elements that indicate the product is in the 3 - Processed foods group:

\n
    \n \n
  • Category: Sweet snacks
  • \n \n
\n \n \n\n" + "html" : "\n\n \n \n

Elements that indicate the product is in the 4 - Ultra processed food and drink products group:

\n
    \n \n
  • Additive: E100 - Curcumin
  • \n \n
  • Additive: E322 - Lecithins
  • \n \n
  • Ingredient: Colour
  • \n \n
  • Ingredient: Emulsifier
  • \n \n
\n \n \n\n" } }, { "element_type" : "text", "text_element" : { - "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" + "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra-processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" } } ], "level" : "info", "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", - "title" : "Processed foods" + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", + "subtitle" : "4 ultra-processing markers", + "title" : "Ultra-processed foods" }, "topics" : [ "health" @@ -1595,213 +1769,38 @@ { "element_type" : "text", "text_element" : { - "html" : "Warning: the nutrition facts are not specified. They have been estimated from the list of ingredients.\n ", + "html" : "The nutrition facts of the product must be specified in order to compute the Nutri-Score.

Missing nutrition facts: Energy, Fat, Proteins, Saturated fat, Sodium, Sugars

\n ", "type" : "warning" } }, { - "element_type" : "text", - "text_element" : { - "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 62\n ", - "type" : "warning" - } - }, - { - "element_type" : "panel", - "panel_element" : { - "panel_id" : "nutriscore_description" - } - }, - { - "element_type" : "panel_group", - "panel_group_element" : { - "evaluation" : "bad", - "icon_color_from_evaluation" : true, - "icon_size" : "small", - "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/circle-minus.svg", - "panel_ids" : [ - "nutriscore_component_energy", - "nutriscore_component_sugars", - "nutriscore_component_saturated_fat", - "nutriscore_component_salt" - ], - "title" : "Negative points: 7/55" - } - }, - { - "element_type" : "panel_group", - "panel_group_element" : { - "evaluation" : "good", - "icon_color_from_evaluation" : true, - "icon_size" : "small", - "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/circle-plus.svg", - "panel_ids" : [ - "nutriscore_component_proteins", - "nutriscore_component_fiber", - "nutriscore_component_fruits_vegetables_legumes" + "action_element" : { + "actions" : [ + "add_nutrition_facts" ], - "title" : "Positive points: 2/17" - } + "html" : "Could you add the information needed to compute the Nutri-Score?" + }, + "element_type" : "action" }, { "element_type" : "panel", "panel_element" : { - "panel_id" : "nutriscore_details" + "panel_id" : "nutriscore_description" } } ], "level" : "info", "title_element" : { - "grade" : "c", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-c-new-en.svg", - "subtitle" : "Average nutritional quality", - "title" : "Nutri-Score C", + "grade" : "unknown", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-unknown-new-en.svg", + "subtitle" : "Missing nutrition facts", + "title" : "Nutri-Score UNKNOWN", "type" : "grade" }, "topics" : [ "health" ] }, - "nutriscore_component_energy" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n Energy intakes above energy requirements are associated with increased risks of weight gain, overweight, obesity, and consequently risk of diet-related chronic diseases.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-1-10.svg", - "subtitle" : "1/10 points (558.75kJ)", - "title" : "Energy" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_fiber" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n Consuming foods rich in fiber (especially whole grain foods) reduces the risks of aerodigestive cancers, cardiovascular diseases, obesity and diabetes.\n \n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-0-5.svg", - "subtitle" : "0/5 points (0.81g)", - "title" : "Fiber" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_fruits_vegetables_legumes" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n Consuming foods rich in fruits, vegetables and legumes reduces the risks of aerodigestive cancers, cardiovascular diseases, obesity and diabetes.\n \n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-2-5.svg", - "subtitle" : "2/5 points (62.5%)", - "title" : "Fruits, vegetables and legumes" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_proteins" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n Foods that are rich in proteins are usually rich in calcium or iron which are essential minerals with numerous health benefits.\n \n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-0-7.svg", - "subtitle" : "0/7 points (1.97g)", - "title" : "Proteins" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_salt" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n A high consumption of salt (or sodium) can cause raised blood pressure, which can increase the risk of heart disease and stroke.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-0-20.svg", - "subtitle" : "0/20 points (0.05g)", - "title" : "Salt" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_saturated_fat" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n A high consumption of fat, especially saturated fats, can raise cholesterol, which increases the risk of heart diseases.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-4-10.svg", - "subtitle" : "4/10 points (4.9g)", - "title" : "Saturated fat" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_sugars" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n A high consumption of sugar can cause weight gain and tooth decay. It also augments the risk of type 2 diabetes and cardio-vascular diseases.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-2-15.svg", - "subtitle" : "2/15 points (7.26g)", - "title" : "Sugar" - }, - "topics" : [ - "health" - ] - }, "nutriscore_description" : { "elements" : [ { @@ -1829,40 +1828,6 @@ "health" ] }, - "nutriscore_details" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "Warning: the nutrition facts are not specified. They have been estimated from the list of ingredients.\n ", - "type" : "warning" - } - }, - { - "element_type" : "text", - "text_element" : { - "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 62\n ", - "type" : "warning" - } - }, - { - "element_type" : "text", - "text_element" : { - "html" : "\n\n

This product is not considered a beverage for the calculation of the Nutri-Score.

\n\n\n\n\n\n

Points for proteins are counted because the negative points are less than 11.

\n\n

\n Nutritional score: 5\n (7 - 2)\n

\n

Nutri-Score: C

\n " - } - } - ], - "level" : "info", - "title_element" : { - "icon_size" : "small", - "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/info.svg", - "title" : "Details of the calculation of the Nutri-Score", - "type" : "info" - }, - "topics" : [ - "health" - ] - }, "nutrition_facts_table" : { "elements" : [ { @@ -2004,10 +1969,10 @@ "text" : "Fruits‚ vegetables‚ nuts and rapeseed‚ walnut and olive oils (estimate from ingredients list analysis)" }, { - "text" : "62.5 %" + "text" : "58.333 %" }, { - "text" : "62.5 %" + "text" : "58.333 %" } ] } @@ -2259,6 +2224,32 @@ "environment" ] }, + "recommendation_ultra_processed_foods" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "\n Several studies have found that a high consumption of ultra-processed foods is associated with an increased risk of noncommunicable chronic diseases, such as obesity, hypertension and diabetes.\n ", + "source_language" : "en", + "source_text" : "Ultra-processed foods increase noncommunicable chronic disease risk", + "source_url" : "https://pubmed.ncbi.nlm.nih.gov/34798466/", + "type" : "quote" + } + } + ], + "evaluation" : "bad", + "level" : "recommendation", + "title_element" : { + "evaluation" : "bad", + "icon_color_from_evaluation" : true, + "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/arrow-bottom-right-thick.svg", + "subtitle" : "Ultra-processed foods increase noncommunicable chronic disease risk", + "title" : "Limit ultra-processed foods" + }, + "topics" : [ + "health" + ] + }, "report_problem_card" : { "elements" : [ { @@ -2318,7 +2309,7 @@ "type" : "inline" } }, - "known_ingredients_n" : 10, + "known_ingredients_n" : 16, "labels" : "organic", "labels_hierarchy" : [ "en:organic" @@ -2360,9 +2351,6 @@ "en:ecoscore-missing-data-warning", "en:forest-footprint-a", "en:forest-footprint-computed", - "en:nutriscore-2021-c-2023-c", - "en:nutriscore-2021-same-as-2023", - "en:nutriscore-computed", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", "en:nutriscore-missing-nutrition-data-fat", @@ -2370,11 +2358,11 @@ "en:nutriscore-missing-nutrition-data-saturated-fat", "en:nutriscore-missing-nutrition-data-sodium", "en:nutriscore-missing-nutrition-data-sugars", - "en:nutriscore-using-estimated-nutrition-facts", - "en:nutrition-all-nutriscore-values-known", + "en:nutriscore-not-computed", "en:nutrition-fruits-vegetables-legumes-estimate-from-ingredients", "en:nutrition-fruits-vegetables-nuts-estimate-from-ingredients", "en:nutrition-no-fiber", + "en:nutrition-no-fiber-or-fruits-vegetables-nuts", "en:nutrition-not-enough-data-to-compute-nutrition-score", "en:packagings-not-complete", "en:packagings-not-empty", @@ -2382,259 +2370,118 @@ "en:packagings-number-of-components-4", "en:main-countries-new-product" ], - "nova_group" : 3, + "nova_group" : 4, "nova_group_debug" : "", - "nova_groups" : "3", + "nova_groups" : "4", "nova_groups_markers" : { "3" : [ [ "categories", "en:sweet-snacks" ] + ], + "4" : [ + [ + "additives", + "en:e100" + ], + [ + "additives", + "en:e322" + ], + [ + "ingredients", + "en:colour" + ], + [ + "ingredients", + "en:emulsifier" + ] ] }, "nova_groups_tags" : [ - "en:3-processed-foods" + "en:4-ultra-processed-food-and-drink-products" ], "nucleotides_tags" : [], "nutrient_levels" : {}, "nutrient_levels_tags" : [], "nutriments" : { - "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 62.5, - "nova-group" : 3, - "nova-group_100g" : 3, - "nova-group_serving" : 3, - "nutrition-score-fr" : 3, - "nutrition-score-fr_100g" : 3 - }, - "nutriments_estimated" : { - "alcohol_100g" : 0, - "beta-carotene_100g" : 1.19375e-05, - "calcium_100g" : 0.0333875, - "carbohydrates_100g" : 7.6484375, - "cholesterol_100g" : 0.03778125, - "copper_100g" : 2.678125e-05, - "energy-kcal_100g" : 134.5875, - "energy-kj_100g" : 558.75, - "energy_100g" : 558.75, - "fat_100g" : 10.4134375, - "fiber_100g" : 0.8125, - "fructose_100g" : 3.77578125, - "galactose_100g" : 0, - "glucose_100g" : 2.0565625, - "iodine_100g" : 7.09375e-06, - "iron_100g" : 0.0002265625, - "lactose_100g" : 0.924375, - "magnesium_100g" : 0.00570625, - "maltose_100g" : 0.00703125, - "manganese_100g" : 2.73828125e-05, - "pantothenic-acid_100g" : 0.0002590625, - "phosphorus_100g" : 0.0445625, - "phylloquinone_100g" : 1.153125e-06, - "polyols_100g" : 0.36875, - "potassium_100g" : 0.09825, - "proteins_100g" : 1.974375, - "salt_100g" : 0.0496875, - "saturated-fat_100g" : 4.903125, - "selenium_100g" : 1.2290625e-06, - "sodium_100g" : 0.019725, - "starch_100g" : 0, - "sucrose_100g" : 0.51953125, - "sugars_100g" : 7.2621875, - "vitamin-a_100g" : 1.739625e-05, - "vitamin-b12_100g" : 2.278125e-07, - "vitamin-b1_100g" : 2.509375e-05, - "vitamin-b2_100g" : 9.34375e-05, - "vitamin-b6_100g" : 4.54375e-05, - "vitamin-b9_100g" : 4.10625e-06, - "vitamin-c_100g" : 0.00274375, - "vitamin-d_100g" : 1.903125e-07, - "vitamin-e_100g" : 0.001657625, - "vitamin-pp_100g" : 8.003125e-05, - "water_100g" : 78.365625, - "zinc_100g" : 0.0002046875 + "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 58.3333333333333, + "nova-group" : 4, + "nova-group_100g" : 4, + "nova-group_serving" : 4 }, "nutriscore" : { "2021" : { "category_available" : 1, "data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, + "energy" : null, + "fiber" : 0, + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 + "proteins" : null, + "saturated_fat" : null, + "sodium" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 3 + "nutriscore_computed" : 0 }, "2023" : { "category_available" : 1, "data" : { - "components" : { - "negative" : [ - { - "id" : "energy", - "points" : 1, - "points_max" : 10, - "unit" : "kJ", - "value" : 558.75 - }, - { - "id" : "sugars", - "points" : 2, - "points_max" : 15, - "unit" : "g", - "value" : 7.26 - }, - { - "id" : "saturated_fat", - "points" : 4, - "points_max" : 10, - "unit" : "g", - "value" : 4.9 - }, - { - "id" : "salt", - "points" : 0, - "points_max" : 20, - "unit" : "g", - "value" : 0.05 - } - ], - "positive" : [ - { - "id" : "proteins", - "points" : 0, - "points_max" : 7, - "unit" : "g", - "value" : 1.97 - }, - { - "id" : "fiber", - "points" : 0, - "points_max" : 5, - "unit" : "g", - "value" : 0.81 - }, - { - "id" : "fruits_vegetables_legumes", - "points" : 2, - "points_max" : 5, - "unit" : "%", - "value" : 62.5 - } - ] - }, - "count_proteins" : 1, - "count_proteins_reason" : "negative_points_less_than_11", + "energy" : null, + "fiber" : null, + "fruits_vegetables_legumes" : 58.3, "is_beverage" : 0, "is_cheese" : 0, "is_fat_oil_nuts_seeds" : 0, "is_red_meat_product" : 0, "is_water" : 0, - "negative_points" : 7, - "negative_points_max" : 55, - "positive_nutrients" : [ - "proteins", - "fiber", - "fruits_vegetables_legumes" - ], - "positive_points" : 2, - "positive_points_max" : 17 + "proteins" : null, + "salt" : null, + "saturated_fat" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 5 + "nutriscore_computed" : 0 } }, "nutriscore_2021_tags" : [ - "c" + "unknown" ], "nutriscore_2023_tags" : [ - "c" + "unknown" ], - "nutriscore_data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, - "grade" : "c", - "is_beverage" : 0, - "is_cheese" : 0, - "is_fat" : 0, - "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "score" : 3, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 - }, - "nutriscore_grade" : "c", - "nutriscore_score" : 3, - "nutriscore_score_opposite" : -3, + "nutriscore_grade" : "unknown", "nutriscore_tags" : [ - "c" + "unknown" ], "nutriscore_version" : "2021", "nutrition_data_per" : "100g", "nutrition_data_prepared_per" : "100g", - "nutrition_grade_fr" : "c", - "nutrition_grades" : "c", + "nutrition_grade_fr" : "unknown", + "nutrition_grades" : "unknown", "nutrition_grades_tags" : [ - "c" + "unknown" ], "nutrition_score_beverage" : 0, "nutrition_score_debug" : "missing energy_100g - missing fat_100g - missing saturated-fat_100g - missing sugars_100g - missing sodium_100g - missing proteins_100g", "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 58.3333333333333, "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 62.5, - "nutrition_score_warning_nutriments_estimated" : 1, + "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 58.3333333333333, + "nutrition_score_warning_no_fiber" : 1, "origin" : "france", "origin_en" : "france", "other_nutritional_substances_tags" : [], @@ -2741,10 +2588,10 @@ "serving_quantity" : 10, "serving_quantity_unit" : "g", "serving_size" : "10 g", - "states" : "en:to-be-completed, en:nutrition-facts-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", + "states" : "en:to-be-completed, en:nutrition-facts-to-be-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", "states_hierarchy" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", @@ -2759,7 +2606,7 @@ ], "states_tags" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-fields-all.json b/tests/integration/expected_test_results/api_v3_product_read/get-fields-all.json index 4adbddb8d6ca5..ad7e8bf13e0f0 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-fields-all.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-fields-all.json @@ -11,21 +11,30 @@ "tester" ], "added_countries_tags" : [], - "additives_n" : 0, - "additives_original_tags" : [], - "additives_tags" : [], + "additives_n" : 2, + "additives_original_tags" : [ + "en:e100", + "en:e322i" + ], + "additives_tags" : [ + "en:e100", + "en:e322", + "en:e322i" + ], "allergens" : "", - "allergens_from_ingredients" : "en:eggs, en:milk, apple, milk, eggs", + "allergens_from_ingredients" : "en:soybeans, en:eggs, en:milk, apple, milk, eggs", "allergens_from_user" : "(en) ", "allergens_hierarchy" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "allergens_tags" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "amino_acids_tags" : [], "categories" : "cookies", @@ -73,7 +82,7 @@ "4xxxxxxxxxxxx" ], "complete" : 0, - "completeness" : 0.5, + "completeness" : 0.4, "correctors_tags" : [], "created_t" : "--ignore--", "creator" : "tests", @@ -551,7 +560,7 @@ "en:biscuits-and-cakes" ], "forest_footprint_data" : { - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "grade" : "a", "ingredients" : [ { @@ -561,10 +570,10 @@ "en:organic" ] ], - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "matching_tag_id" : "en:egg", - "percent" : 9.375, - "percent_estimate" : 9.375, + "percent" : 10.4166666666667, + "percent_estimate" : 10.4166666666667, "processing_factor" : 1, "tag_id" : "en:egg", "tag_type" : "ingredients", @@ -589,9 +598,9 @@ "ecobalyse_code" : "apple-fr", "id" : "en:apple", "is_in_taxonomy" : 1, - "percent_estimate" : 62.5, + "percent_estimate" : 58.3333333333333, "percent_max" : 100, - "percent_min" : 25, + "percent_min" : 16.6666666666667, "text" : "apple", "vegan" : "yes", "vegetarian" : "yes" @@ -601,7 +610,7 @@ "ecobalyse_code" : "milk", "id" : "en:milk", "is_in_taxonomy" : 1, - "percent_estimate" : 18.75, + "percent_estimate" : 20.8333333333333, "percent_max" : 50, "percent_min" : 0, "text" : "milk", @@ -613,7 +622,7 @@ "ecobalyse_code" : "egg-indoor-code3", "id" : "en:egg", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 10.4166666666667, "percent_max" : 33.3333333333333, "percent_min" : 0, "text" : "eggs", @@ -626,12 +635,53 @@ "from_palm_oil" : "yes", "id" : "en:palm-oil", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 5.20833333333333, "percent_max" : 25, "percent_min" : 0, "text" : "palm oil", "vegan" : "yes", "vegetarian" : "yes" + }, + { + "id" : "en:colour", + "ingredients" : [ + { + "id" : "en:e100", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "curcumin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "coloring" + }, + { + "id" : "en:emulsifier", + "ingredients" : [ + { + "ciqual_food_code" : "42200", + "id" : "en:soya-lecithin", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "soy lecithin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "emulsifier" } ], "ingredients_analysis" : { @@ -658,12 +708,18 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], "ingredients_lc" : "en", - "ingredients_n" : 4, + "ingredients_n" : 8, "ingredients_n_tags" : [ - "4", + "8", "1-10" ], "ingredients_non_nutritive_sweeteners_n" : 0, @@ -671,7 +727,11 @@ "en:apple", "en:milk", "en:egg", - "en:palm-oil" + "en:palm-oil", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin" ], "ingredients_percent_analysis" : 1, "ingredients_sweeteners_n" : 0, @@ -685,23 +745,38 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], - "ingredients_text" : "apple, milk, eggs, palm oil", - "ingredients_text_en" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil", + "ingredients_text" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "ingredients_with_specified_percent_n" : 0, "ingredients_with_specified_percent_sum" : 0, - "ingredients_with_unspecified_percent_n" : 4, + "ingredients_with_unspecified_percent_n" : 6, "ingredients_with_unspecified_percent_sum" : 100, - "ingredients_without_ciqual_codes" : [], - "ingredients_without_ciqual_codes_n" : 0, - "ingredients_without_ecobalyse_ids" : [], - "ingredients_without_ecobalyse_ids_n" : 0, + "ingredients_without_ciqual_codes" : [ + "en:colour", + "en:e100", + "en:emulsifier" + ], + "ingredients_without_ciqual_codes_n" : 3, + "ingredients_without_ecobalyse_ids" : [ + "en:colour", + "en:e100", + "en:emulsifier", + "en:soya-lecithin" + ], + "ingredients_without_ecobalyse_ids_n" : 4, "interface_version_created" : "20150316.jqm2", "interface_version_modified" : "20150316.jqm2", - "known_ingredients_n" : 10, + "known_ingredients_n" : 16, "labels" : "organic", "labels_hierarchy" : [ "en:organic" @@ -743,9 +818,6 @@ "en:ecoscore-missing-data-warning", "en:forest-footprint-a", "en:forest-footprint-computed", - "en:nutriscore-2021-c-2023-c", - "en:nutriscore-2021-same-as-2023", - "en:nutriscore-computed", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", "en:nutriscore-missing-nutrition-data-fat", @@ -753,11 +825,11 @@ "en:nutriscore-missing-nutrition-data-saturated-fat", "en:nutriscore-missing-nutrition-data-sodium", "en:nutriscore-missing-nutrition-data-sugars", - "en:nutriscore-using-estimated-nutrition-facts", - "en:nutrition-all-nutriscore-values-known", + "en:nutriscore-not-computed", "en:nutrition-fruits-vegetables-legumes-estimate-from-ingredients", "en:nutrition-fruits-vegetables-nuts-estimate-from-ingredients", "en:nutrition-no-fiber", + "en:nutrition-no-fiber-or-fruits-vegetables-nuts", "en:nutrition-not-enough-data-to-compute-nutrition-score", "en:packagings-not-complete", "en:packagings-not-empty", @@ -765,259 +837,118 @@ "en:packagings-number-of-components-4", "en:main-countries-new-product" ], - "nova_group" : 3, + "nova_group" : 4, "nova_group_debug" : "", - "nova_groups" : "3", + "nova_groups" : "4", "nova_groups_markers" : { "3" : [ [ "categories", "en:sweet-snacks" ] + ], + "4" : [ + [ + "additives", + "en:e100" + ], + [ + "additives", + "en:e322" + ], + [ + "ingredients", + "en:colour" + ], + [ + "ingredients", + "en:emulsifier" + ] ] }, "nova_groups_tags" : [ - "en:3-processed-foods" + "en:4-ultra-processed-food-and-drink-products" ], "nucleotides_tags" : [], "nutrient_levels" : {}, "nutrient_levels_tags" : [], "nutriments" : { - "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 62.5, - "nova-group" : 3, - "nova-group_100g" : 3, - "nova-group_serving" : 3, - "nutrition-score-fr" : 3, - "nutrition-score-fr_100g" : 3 - }, - "nutriments_estimated" : { - "alcohol_100g" : 0, - "beta-carotene_100g" : 1.19375e-05, - "calcium_100g" : 0.0333875, - "carbohydrates_100g" : 7.6484375, - "cholesterol_100g" : 0.03778125, - "copper_100g" : 2.678125e-05, - "energy-kcal_100g" : 134.5875, - "energy-kj_100g" : 558.75, - "energy_100g" : 558.75, - "fat_100g" : 10.4134375, - "fiber_100g" : 0.8125, - "fructose_100g" : 3.77578125, - "galactose_100g" : 0, - "glucose_100g" : 2.0565625, - "iodine_100g" : 7.09375e-06, - "iron_100g" : 0.0002265625, - "lactose_100g" : 0.924375, - "magnesium_100g" : 0.00570625, - "maltose_100g" : 0.00703125, - "manganese_100g" : 2.73828125e-05, - "pantothenic-acid_100g" : 0.0002590625, - "phosphorus_100g" : 0.0445625, - "phylloquinone_100g" : 1.153125e-06, - "polyols_100g" : 0.36875, - "potassium_100g" : 0.09825, - "proteins_100g" : 1.974375, - "salt_100g" : 0.0496875, - "saturated-fat_100g" : 4.903125, - "selenium_100g" : 1.2290625e-06, - "sodium_100g" : 0.019725, - "starch_100g" : 0, - "sucrose_100g" : 0.51953125, - "sugars_100g" : 7.2621875, - "vitamin-a_100g" : 1.739625e-05, - "vitamin-b12_100g" : 2.278125e-07, - "vitamin-b1_100g" : 2.509375e-05, - "vitamin-b2_100g" : 9.34375e-05, - "vitamin-b6_100g" : 4.54375e-05, - "vitamin-b9_100g" : 4.10625e-06, - "vitamin-c_100g" : 0.00274375, - "vitamin-d_100g" : 1.903125e-07, - "vitamin-e_100g" : 0.001657625, - "vitamin-pp_100g" : 8.003125e-05, - "water_100g" : 78.365625, - "zinc_100g" : 0.0002046875 + "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 58.3333333333333, + "nova-group" : 4, + "nova-group_100g" : 4, + "nova-group_serving" : 4 }, "nutriscore" : { "2021" : { "category_available" : 1, "data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, + "energy" : null, + "fiber" : 0, + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 + "proteins" : null, + "saturated_fat" : null, + "sodium" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 3 + "nutriscore_computed" : 0 }, "2023" : { "category_available" : 1, "data" : { - "components" : { - "negative" : [ - { - "id" : "energy", - "points" : 1, - "points_max" : 10, - "unit" : "kJ", - "value" : 558.75 - }, - { - "id" : "sugars", - "points" : 2, - "points_max" : 15, - "unit" : "g", - "value" : 7.26 - }, - { - "id" : "saturated_fat", - "points" : 4, - "points_max" : 10, - "unit" : "g", - "value" : 4.9 - }, - { - "id" : "salt", - "points" : 0, - "points_max" : 20, - "unit" : "g", - "value" : 0.05 - } - ], - "positive" : [ - { - "id" : "proteins", - "points" : 0, - "points_max" : 7, - "unit" : "g", - "value" : 1.97 - }, - { - "id" : "fiber", - "points" : 0, - "points_max" : 5, - "unit" : "g", - "value" : 0.81 - }, - { - "id" : "fruits_vegetables_legumes", - "points" : 2, - "points_max" : 5, - "unit" : "%", - "value" : 62.5 - } - ] - }, - "count_proteins" : 1, - "count_proteins_reason" : "negative_points_less_than_11", + "energy" : null, + "fiber" : null, + "fruits_vegetables_legumes" : 58.3, "is_beverage" : 0, "is_cheese" : 0, "is_fat_oil_nuts_seeds" : 0, "is_red_meat_product" : 0, "is_water" : 0, - "negative_points" : 7, - "negative_points_max" : 55, - "positive_nutrients" : [ - "proteins", - "fiber", - "fruits_vegetables_legumes" - ], - "positive_points" : 2, - "positive_points_max" : 17 + "proteins" : null, + "salt" : null, + "saturated_fat" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 5 + "nutriscore_computed" : 0 } }, "nutriscore_2021_tags" : [ - "c" + "unknown" ], "nutriscore_2023_tags" : [ - "c" + "unknown" ], - "nutriscore_data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, - "grade" : "c", - "is_beverage" : 0, - "is_cheese" : 0, - "is_fat" : 0, - "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "score" : 3, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 - }, - "nutriscore_grade" : "c", - "nutriscore_score" : 3, - "nutriscore_score_opposite" : -3, + "nutriscore_grade" : "unknown", "nutriscore_tags" : [ - "c" + "unknown" ], "nutriscore_version" : "2021", "nutrition_data_per" : "100g", "nutrition_data_prepared_per" : "100g", - "nutrition_grade_fr" : "c", - "nutrition_grades" : "c", + "nutrition_grade_fr" : "unknown", + "nutrition_grades" : "unknown", "nutrition_grades_tags" : [ - "c" + "unknown" ], "nutrition_score_beverage" : 0, "nutrition_score_debug" : "missing energy_100g - missing fat_100g - missing saturated-fat_100g - missing sugars_100g - missing sodium_100g - missing proteins_100g", "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 58.3333333333333, "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 62.5, - "nutrition_score_warning_nutriments_estimated" : 1, + "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 58.3333333333333, + "nutrition_score_warning_no_fiber" : 1, "origin" : "france", "origin_en" : "france", "other_nutritional_substances_tags" : [], @@ -1124,10 +1055,10 @@ "serving_quantity" : "10", "serving_quantity_unit" : "g", "serving_size" : "10 g", - "states" : "en:to-be-completed, en:nutrition-facts-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", + "states" : "en:to-be-completed, en:nutrition-facts-to-be-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", "states_hierarchy" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", @@ -1142,7 +1073,7 @@ ], "states_tags" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-fields-attribute-groups-all-knowledge-panels.json b/tests/integration/expected_test_results/api_v3_product_read/get-fields-attribute-groups-all-knowledge-panels.json index 7322d3fe17edd..272ebaba84f71 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-fields-attribute-groups-all-knowledge-panels.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-fields-attribute-groups-all-knowledge-panels.json @@ -11,21 +11,30 @@ "tester" ], "added_countries_tags" : [], - "additives_n" : 0, - "additives_original_tags" : [], - "additives_tags" : [], + "additives_n" : 2, + "additives_original_tags" : [ + "en:e100", + "en:e322i" + ], + "additives_tags" : [ + "en:e100", + "en:e322", + "en:e322i" + ], "allergens" : "", - "allergens_from_ingredients" : "en:eggs, en:milk, apple, milk, eggs", + "allergens_from_ingredients" : "en:soybeans, en:eggs, en:milk, apple, milk, eggs", "allergens_from_user" : "(en) ", "allergens_hierarchy" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "allergens_tags" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "amino_acids_tags" : [], "attribute_groups" : [ @@ -33,15 +42,15 @@ "attributes" : [ { "description" : "", - "description_short" : "Average nutritional quality", - "grade" : "c", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-c-new-en.svg", + "description_short" : "Missing data to compute the Nutri-Score", + "grade" : "unknown", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-unknown-new-en.svg", "id" : "nutriscore", - "match" : 53.6666666666667, + "match" : 0, "name" : "Nutri-Score", "panel_id" : "nutriscore_2023", - "status" : "known", - "title" : "Nutri-Score C" + "status" : "unknown", + "title" : "Nutri-Score unknown" }, { "grade" : "unknown", @@ -86,7 +95,7 @@ { "attributes" : [ { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-gluten.svg", "id" : "allergens_no_gluten", @@ -116,7 +125,7 @@ "title" : "Contains: Eggs" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg", "id" : "allergens_no_nuts", @@ -126,7 +135,7 @@ "title" : "Does not contain: Nuts" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg", "id" : "allergens_no_peanuts", @@ -136,7 +145,7 @@ "title" : "Does not contain: Peanuts" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg", "id" : "allergens_no_sesame_seeds", @@ -146,17 +155,17 @@ "title" : "Does not contain: Sesame seeds" }, { - "debug" : "4 ingredients (0 unknown)", - "grade" : "a", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg", + "debug" : "en:soybeans in allergens", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/contains-soybeans.svg", "id" : "allergens_no_soybeans", - "match" : 100, + "match" : 0, "name" : "Soybeans", "status" : "known", - "title" : "Does not contain: Soybeans" + "title" : "Contains: Soybeans" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg", "id" : "allergens_no_celery", @@ -166,7 +175,7 @@ "title" : "Does not contain: Celery" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg", "id" : "allergens_no_mustard", @@ -176,7 +185,7 @@ "title" : "Does not contain: Mustard" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg", "id" : "allergens_no_lupin", @@ -186,7 +195,7 @@ "title" : "Does not contain: Lupin" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg", "id" : "allergens_no_fish", @@ -196,7 +205,7 @@ "title" : "Does not contain: Fish" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg", "id" : "allergens_no_crustaceans", @@ -206,7 +215,7 @@ "title" : "Does not contain: Crustaceans" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg", "id" : "allergens_no_molluscs", @@ -216,7 +225,7 @@ "title" : "Does not contain: Molluscs" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg", "id" : "allergens_no_sulphur_dioxide_and_sulphites", @@ -269,26 +278,25 @@ { "attributes" : [ { - "description" : "", - "description_short" : "Processed foods", - "grade" : "b", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", + "description_short" : "4 ultra-processing markers", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", "id" : "nova", - "match" : 75, + "match" : 0, "name" : "NOVA group", "panel_id" : "nova", "status" : "known", - "title" : "NOVA 3" + "title" : "Ultra-processed foods" }, { - "grade" : "a", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/0-additives.svg", + "grade" : "c", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg", "id" : "additives", - "match" : 100, + "match" : 60, "name" : "Additives", "panel_id" : "additives", "status" : "known", - "title" : "Without additives" + "title" : "2 additives" } ], "id" : "processing", @@ -314,7 +322,7 @@ "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg", "id" : "forest_footprint", - "match" : 99.9416666666667, + "match" : 99.9351851851852, "name" : "Forest footprint", "status" : "known", "title" : "Very small forest footprint" @@ -357,15 +365,15 @@ "attributes" : [ { "description" : "", - "description_short" : "Average nutritional quality", - "grade" : "c", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-c-new-en.svg", + "description_short" : "Missing data to compute the Nutri-Score", + "grade" : "unknown", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-unknown-new-en.svg", "id" : "nutriscore", - "match" : 53.6666666666667, + "match" : 0, "name" : "Nutri-Score", "panel_id" : "nutriscore_2023", - "status" : "known", - "title" : "Nutri-Score C" + "status" : "unknown", + "title" : "Nutri-Score unknown" }, { "grade" : "unknown", @@ -410,7 +418,7 @@ { "attributes" : [ { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-gluten.svg", "id" : "allergens_no_gluten", @@ -440,7 +448,7 @@ "title" : "Contains: Eggs" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg", "id" : "allergens_no_nuts", @@ -450,7 +458,7 @@ "title" : "Does not contain: Nuts" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg", "id" : "allergens_no_peanuts", @@ -460,7 +468,7 @@ "title" : "Does not contain: Peanuts" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg", "id" : "allergens_no_sesame_seeds", @@ -470,17 +478,17 @@ "title" : "Does not contain: Sesame seeds" }, { - "debug" : "4 ingredients (0 unknown)", - "grade" : "a", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg", + "debug" : "en:soybeans in allergens", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/contains-soybeans.svg", "id" : "allergens_no_soybeans", - "match" : 100, + "match" : 0, "name" : "Soybeans", "status" : "known", - "title" : "Does not contain: Soybeans" + "title" : "Contains: Soybeans" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg", "id" : "allergens_no_celery", @@ -490,7 +498,7 @@ "title" : "Does not contain: Celery" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg", "id" : "allergens_no_mustard", @@ -500,7 +508,7 @@ "title" : "Does not contain: Mustard" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg", "id" : "allergens_no_lupin", @@ -510,7 +518,7 @@ "title" : "Does not contain: Lupin" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg", "id" : "allergens_no_fish", @@ -520,7 +528,7 @@ "title" : "Does not contain: Fish" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg", "id" : "allergens_no_crustaceans", @@ -530,7 +538,7 @@ "title" : "Does not contain: Crustaceans" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg", "id" : "allergens_no_molluscs", @@ -540,7 +548,7 @@ "title" : "Does not contain: Molluscs" }, { - "debug" : "4 ingredients (0 unknown)", + "debug" : "8 ingredients (0 unknown)", "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg", "id" : "allergens_no_sulphur_dioxide_and_sulphites", @@ -593,26 +601,25 @@ { "attributes" : [ { - "description" : "", - "description_short" : "Processed foods", - "grade" : "b", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", + "description_short" : "4 ultra-processing markers", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", "id" : "nova", - "match" : 75, + "match" : 0, "name" : "NOVA group", "panel_id" : "nova", "status" : "known", - "title" : "NOVA 3" + "title" : "Ultra-processed foods" }, { - "grade" : "a", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/0-additives.svg", + "grade" : "c", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg", "id" : "additives", - "match" : 100, + "match" : 60, "name" : "Additives", "panel_id" : "additives", "status" : "known", - "title" : "Without additives" + "title" : "2 additives" } ], "id" : "processing", @@ -638,7 +645,7 @@ "grade" : "a", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg", "id" : "forest_footprint", - "match" : 99.9416666666667, + "match" : 99.9351851851852, "name" : "Forest footprint", "status" : "known", "title" : "Very small forest footprint" @@ -721,7 +728,7 @@ "4xxxxxxxxxxxx" ], "complete" : 0, - "completeness" : 0.5, + "completeness" : 0.4, "correctors_tags" : [], "created_t" : "--ignore--", "creator" : "tests", @@ -1199,7 +1206,7 @@ "en:biscuits-and-cakes" ], "forest_footprint_data" : { - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "grade" : "a", "ingredients" : [ { @@ -1209,10 +1216,10 @@ "en:organic" ] ], - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "matching_tag_id" : "en:egg", - "percent" : 9.375, - "percent_estimate" : 9.375, + "percent" : 10.4166666666667, + "percent_estimate" : 10.4166666666667, "processing_factor" : 1, "tag_id" : "en:egg", "tag_type" : "ingredients", @@ -1237,9 +1244,9 @@ "ecobalyse_code" : "apple-fr", "id" : "en:apple", "is_in_taxonomy" : 1, - "percent_estimate" : 62.5, + "percent_estimate" : 58.3333333333333, "percent_max" : 100, - "percent_min" : 25, + "percent_min" : 16.6666666666667, "text" : "apple", "vegan" : "yes", "vegetarian" : "yes" @@ -1249,7 +1256,7 @@ "ecobalyse_code" : "milk", "id" : "en:milk", "is_in_taxonomy" : 1, - "percent_estimate" : 18.75, + "percent_estimate" : 20.8333333333333, "percent_max" : 50, "percent_min" : 0, "text" : "milk", @@ -1261,7 +1268,7 @@ "ecobalyse_code" : "egg-indoor-code3", "id" : "en:egg", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 10.4166666666667, "percent_max" : 33.3333333333333, "percent_min" : 0, "text" : "eggs", @@ -1274,12 +1281,53 @@ "from_palm_oil" : "yes", "id" : "en:palm-oil", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 5.20833333333333, "percent_max" : 25, "percent_min" : 0, "text" : "palm oil", "vegan" : "yes", "vegetarian" : "yes" + }, + { + "id" : "en:colour", + "ingredients" : [ + { + "id" : "en:e100", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "curcumin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "coloring" + }, + { + "id" : "en:emulsifier", + "ingredients" : [ + { + "ciqual_food_code" : "42200", + "id" : "en:soya-lecithin", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "soy lecithin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "emulsifier" } ], "ingredients_analysis" : { @@ -1306,12 +1354,18 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], "ingredients_lc" : "en", - "ingredients_n" : 4, + "ingredients_n" : 8, "ingredients_n_tags" : [ - "4", + "8", "1-10" ], "ingredients_non_nutritive_sweeteners_n" : 0, @@ -1319,7 +1373,11 @@ "en:apple", "en:milk", "en:egg", - "en:palm-oil" + "en:palm-oil", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin" ], "ingredients_percent_analysis" : 1, "ingredients_sweeteners_n" : 0, @@ -1333,23 +1391,121 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], - "ingredients_text" : "apple, milk, eggs, palm oil", - "ingredients_text_en" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil", + "ingredients_text" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "ingredients_with_specified_percent_n" : 0, "ingredients_with_specified_percent_sum" : 0, - "ingredients_with_unspecified_percent_n" : 4, + "ingredients_with_unspecified_percent_n" : 6, "ingredients_with_unspecified_percent_sum" : 100, - "ingredients_without_ciqual_codes" : [], - "ingredients_without_ciqual_codes_n" : 0, - "ingredients_without_ecobalyse_ids" : [], - "ingredients_without_ecobalyse_ids_n" : 0, + "ingredients_without_ciqual_codes" : [ + "en:colour", + "en:e100", + "en:emulsifier" + ], + "ingredients_without_ciqual_codes_n" : 3, + "ingredients_without_ecobalyse_ids" : [ + "en:colour", + "en:e100", + "en:emulsifier", + "en:soya-lecithin" + ], + "ingredients_without_ecobalyse_ids_n" : 4, "interface_version_created" : "20150316.jqm2", "interface_version_modified" : "20150316.jqm2", "knowledge_panels" : { + "additive_en:e100" : { + "elements" : [], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E100 - Curcumin" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin: Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "English", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322 - Lecithins" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322i" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin: Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "English", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322i - Lecithin" + }, + "topics" : [ + "health" + ] + }, + "additives" : { + "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e100" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322i" + } + } + ], + "expanded" : true, + "level" : "info", + "topics" : [ + "health" + ], + "type" : "inline" + }, "carbon_footprint" : { "elements" : [ { @@ -1956,6 +2112,15 @@ "title" : "Food processing" } }, + { + "element_type" : "panel_group", + "panel_group_element" : { + "panel_ids" : [ + "additives" + ], + "title" : "Additives" + } + }, { "element_type" : "panel_group", "panel_group_element" : { @@ -2028,8 +2193,8 @@ "text_element" : { "edit_field_id" : "ingredients_text_en", "edit_field_type" : "ingredients_text", - "edit_field_value" : "apple, milk, eggs, palm oil", - "html" : "apple, milk, eggs, palm oil", + "edit_field_value" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "html" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "language" : "English", "lc" : "en" } @@ -2037,7 +2202,7 @@ { "element_type" : "text", "text_element" : { - "html" : "Allergens: \n Apple, Eggs, Milk\n " + "html" : "Allergens: \n Apple, Eggs, Milk, Soybeans\n " } } ], @@ -2048,7 +2213,7 @@ "title_element" : { "icon_color_from_evaluation" : true, "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/ingredients.svg", - "title" : "4 ingredients" + "title" : "8 ingredients" }, "topics" : [ "health" @@ -2093,13 +2258,13 @@ { "element_type" : "text", "text_element" : { - "html" : "en: apple, milk, eggs, palm oil" + "html" : "en: apple, milk, eggs, palm oil, coloring (curcumin), emulsifier (soy lecithin)" } }, { "element_type" : "text", "text_element" : { - "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 25 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
\n" + "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 16.6666666666667 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
  9. coloring -> en:colour - percent_min: 0 - percent_max: 20
      \n
    1. curcumin -> en:e100 - vegan: yes - vegetarian: yes - percent_min: 0 - percent_max: 20
    2. \n
    \n
  10. \n
  11. emulsifier -> en:emulsifier - percent_min: 0 - percent_max: 16.6666666666667
      \n
    1. soy lecithin -> en:soya-lecithin - vegan: yes - vegetarian: yes - ciqual_food_code: 42200 - percent_min: 0 - percent_max: 16.6666666666667
    2. \n
    \n
  12. \n
\n" } }, { @@ -2193,23 +2358,30 @@ }, "nova" : { "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "recommendation_ultra_processed_foods" + } + }, { "element_type" : "text", "text_element" : { - "html" : "\n\n \n \n

Elements that indicate the product is in the 3 - Processed foods group:

\n
    \n \n
  • Category: Sweet snacks
  • \n \n
\n \n \n\n" + "html" : "\n\n \n \n

Elements that indicate the product is in the 4 - Ultra processed food and drink products group:

\n
    \n \n
  • Additive: E100 - Curcumin
  • \n \n
  • Additive: E322 - Lecithins
  • \n \n
  • Ingredient: Colour
  • \n \n
  • Ingredient: Emulsifier
  • \n \n
\n \n \n\n" } }, { "element_type" : "text", "text_element" : { - "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" + "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra-processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" } } ], "level" : "info", "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", - "title" : "Processed foods" + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", + "subtitle" : "4 ultra-processing markers", + "title" : "Ultra-processed foods" }, "topics" : [ "health" @@ -2243,213 +2415,38 @@ { "element_type" : "text", "text_element" : { - "html" : "Warning: the nutrition facts are not specified. They have been estimated from the list of ingredients.\n ", - "type" : "warning" - } - }, - { - "element_type" : "text", - "text_element" : { - "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 62\n ", + "html" : "The nutrition facts of the product must be specified in order to compute the Nutri-Score.

Missing nutrition facts: Energy, Fat, Proteins, Saturated fat, Sodium, Sugars

\n ", "type" : "warning" } }, { - "element_type" : "panel", - "panel_element" : { - "panel_id" : "nutriscore_description" - } - }, - { - "element_type" : "panel_group", - "panel_group_element" : { - "evaluation" : "bad", - "icon_color_from_evaluation" : true, - "icon_size" : "small", - "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/circle-minus.svg", - "panel_ids" : [ - "nutriscore_component_energy", - "nutriscore_component_sugars", - "nutriscore_component_saturated_fat", - "nutriscore_component_salt" - ], - "title" : "Negative points: 7/55" - } - }, - { - "element_type" : "panel_group", - "panel_group_element" : { - "evaluation" : "good", - "icon_color_from_evaluation" : true, - "icon_size" : "small", - "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/circle-plus.svg", - "panel_ids" : [ - "nutriscore_component_proteins", - "nutriscore_component_fiber", - "nutriscore_component_fruits_vegetables_legumes" + "action_element" : { + "actions" : [ + "add_nutrition_facts" ], - "title" : "Positive points: 2/17" - } + "html" : "Could you add the information needed to compute the Nutri-Score?" + }, + "element_type" : "action" }, { "element_type" : "panel", "panel_element" : { - "panel_id" : "nutriscore_details" + "panel_id" : "nutriscore_description" } } ], "level" : "info", "title_element" : { - "grade" : "c", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-c-new-en.svg", - "subtitle" : "Average nutritional quality", - "title" : "Nutri-Score C", + "grade" : "unknown", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-unknown-new-en.svg", + "subtitle" : "Missing nutrition facts", + "title" : "Nutri-Score UNKNOWN", "type" : "grade" }, "topics" : [ "health" ] }, - "nutriscore_component_energy" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n Energy intakes above energy requirements are associated with increased risks of weight gain, overweight, obesity, and consequently risk of diet-related chronic diseases.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-1-10.svg", - "subtitle" : "1/10 points (558.75kJ)", - "title" : "Energy" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_fiber" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n Consuming foods rich in fiber (especially whole grain foods) reduces the risks of aerodigestive cancers, cardiovascular diseases, obesity and diabetes.\n \n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-0-5.svg", - "subtitle" : "0/5 points (0.81g)", - "title" : "Fiber" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_fruits_vegetables_legumes" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n Consuming foods rich in fruits, vegetables and legumes reduces the risks of aerodigestive cancers, cardiovascular diseases, obesity and diabetes.\n \n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-2-5.svg", - "subtitle" : "2/5 points (62.5%)", - "title" : "Fruits, vegetables and legumes" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_proteins" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n Foods that are rich in proteins are usually rich in calcium or iron which are essential minerals with numerous health benefits.\n \n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-0-7.svg", - "subtitle" : "0/7 points (1.97g)", - "title" : "Proteins" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_salt" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n A high consumption of salt (or sodium) can cause raised blood pressure, which can increase the risk of heart disease and stroke.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-0-20.svg", - "subtitle" : "0/20 points (0.05g)", - "title" : "Salt" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_saturated_fat" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n A high consumption of fat, especially saturated fats, can raise cholesterol, which increases the risk of heart diseases.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-4-10.svg", - "subtitle" : "4/10 points (4.9g)", - "title" : "Saturated fat" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_sugars" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n A high consumption of sugar can cause weight gain and tooth decay. It also augments the risk of type 2 diabetes and cardio-vascular diseases.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-2-15.svg", - "subtitle" : "2/15 points (7.26g)", - "title" : "Sugar" - }, - "topics" : [ - "health" - ] - }, "nutriscore_description" : { "elements" : [ { @@ -2477,40 +2474,6 @@ "health" ] }, - "nutriscore_details" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "Warning: the nutrition facts are not specified. They have been estimated from the list of ingredients.\n ", - "type" : "warning" - } - }, - { - "element_type" : "text", - "text_element" : { - "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 62\n ", - "type" : "warning" - } - }, - { - "element_type" : "text", - "text_element" : { - "html" : "\n\n

This product is not considered a beverage for the calculation of the Nutri-Score.

\n\n\n\n\n\n

Points for proteins are counted because the negative points are less than 11.

\n\n

\n Nutritional score: 5\n (7 - 2)\n

\n

Nutri-Score: C

\n " - } - } - ], - "level" : "info", - "title_element" : { - "icon_size" : "small", - "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/info.svg", - "title" : "Details of the calculation of the Nutri-Score", - "type" : "info" - }, - "topics" : [ - "health" - ] - }, "nutrition_facts_table" : { "elements" : [ { @@ -2652,10 +2615,10 @@ "text" : "Fruits‚ vegetables‚ nuts and rapeseed‚ walnut and olive oils (estimate from ingredients list analysis)" }, { - "text" : "62.5 %" + "text" : "58.333 %" }, { - "text" : "62.5 %" + "text" : "58.333 %" } ] } @@ -2907,6 +2870,32 @@ "environment" ] }, + "recommendation_ultra_processed_foods" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "\n Several studies have found that a high consumption of ultra-processed foods is associated with an increased risk of noncommunicable chronic diseases, such as obesity, hypertension and diabetes.\n ", + "source_language" : "en", + "source_text" : "Ultra-processed foods increase noncommunicable chronic disease risk", + "source_url" : "https://pubmed.ncbi.nlm.nih.gov/34798466/", + "type" : "quote" + } + } + ], + "evaluation" : "bad", + "level" : "recommendation", + "title_element" : { + "evaluation" : "bad", + "icon_color_from_evaluation" : true, + "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/arrow-bottom-right-thick.svg", + "subtitle" : "Ultra-processed foods increase noncommunicable chronic disease risk", + "title" : "Limit ultra-processed foods" + }, + "topics" : [ + "health" + ] + }, "report_problem_card" : { "elements" : [ { @@ -2966,7 +2955,7 @@ "type" : "inline" } }, - "known_ingredients_n" : 10, + "known_ingredients_n" : 16, "labels" : "organic", "labels_hierarchy" : [ "en:organic" @@ -3008,9 +2997,6 @@ "en:ecoscore-missing-data-warning", "en:forest-footprint-a", "en:forest-footprint-computed", - "en:nutriscore-2021-c-2023-c", - "en:nutriscore-2021-same-as-2023", - "en:nutriscore-computed", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", "en:nutriscore-missing-nutrition-data-fat", @@ -3018,11 +3004,11 @@ "en:nutriscore-missing-nutrition-data-saturated-fat", "en:nutriscore-missing-nutrition-data-sodium", "en:nutriscore-missing-nutrition-data-sugars", - "en:nutriscore-using-estimated-nutrition-facts", - "en:nutrition-all-nutriscore-values-known", + "en:nutriscore-not-computed", "en:nutrition-fruits-vegetables-legumes-estimate-from-ingredients", "en:nutrition-fruits-vegetables-nuts-estimate-from-ingredients", "en:nutrition-no-fiber", + "en:nutrition-no-fiber-or-fruits-vegetables-nuts", "en:nutrition-not-enough-data-to-compute-nutrition-score", "en:packagings-not-complete", "en:packagings-not-empty", @@ -3030,259 +3016,118 @@ "en:packagings-number-of-components-4", "en:main-countries-new-product" ], - "nova_group" : 3, + "nova_group" : 4, "nova_group_debug" : "", - "nova_groups" : "3", + "nova_groups" : "4", "nova_groups_markers" : { "3" : [ [ "categories", "en:sweet-snacks" ] + ], + "4" : [ + [ + "additives", + "en:e100" + ], + [ + "additives", + "en:e322" + ], + [ + "ingredients", + "en:colour" + ], + [ + "ingredients", + "en:emulsifier" + ] ] }, "nova_groups_tags" : [ - "en:3-processed-foods" + "en:4-ultra-processed-food-and-drink-products" ], "nucleotides_tags" : [], "nutrient_levels" : {}, "nutrient_levels_tags" : [], "nutriments" : { - "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 62.5, - "nova-group" : 3, - "nova-group_100g" : 3, - "nova-group_serving" : 3, - "nutrition-score-fr" : 3, - "nutrition-score-fr_100g" : 3 - }, - "nutriments_estimated" : { - "alcohol_100g" : 0, - "beta-carotene_100g" : 1.19375e-05, - "calcium_100g" : 0.0333875, - "carbohydrates_100g" : 7.6484375, - "cholesterol_100g" : 0.03778125, - "copper_100g" : 2.678125e-05, - "energy-kcal_100g" : 134.5875, - "energy-kj_100g" : 558.75, - "energy_100g" : 558.75, - "fat_100g" : 10.4134375, - "fiber_100g" : 0.8125, - "fructose_100g" : 3.77578125, - "galactose_100g" : 0, - "glucose_100g" : 2.0565625, - "iodine_100g" : 7.09375e-06, - "iron_100g" : 0.0002265625, - "lactose_100g" : 0.924375, - "magnesium_100g" : 0.00570625, - "maltose_100g" : 0.00703125, - "manganese_100g" : 2.73828125e-05, - "pantothenic-acid_100g" : 0.0002590625, - "phosphorus_100g" : 0.0445625, - "phylloquinone_100g" : 1.153125e-06, - "polyols_100g" : 0.36875, - "potassium_100g" : 0.09825, - "proteins_100g" : 1.974375, - "salt_100g" : 0.0496875, - "saturated-fat_100g" : 4.903125, - "selenium_100g" : 1.2290625e-06, - "sodium_100g" : 0.019725, - "starch_100g" : 0, - "sucrose_100g" : 0.51953125, - "sugars_100g" : 7.2621875, - "vitamin-a_100g" : 1.739625e-05, - "vitamin-b12_100g" : 2.278125e-07, - "vitamin-b1_100g" : 2.509375e-05, - "vitamin-b2_100g" : 9.34375e-05, - "vitamin-b6_100g" : 4.54375e-05, - "vitamin-b9_100g" : 4.10625e-06, - "vitamin-c_100g" : 0.00274375, - "vitamin-d_100g" : 1.903125e-07, - "vitamin-e_100g" : 0.001657625, - "vitamin-pp_100g" : 8.003125e-05, - "water_100g" : 78.365625, - "zinc_100g" : 0.0002046875 + "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 58.3333333333333, + "nova-group" : 4, + "nova-group_100g" : 4, + "nova-group_serving" : 4 }, "nutriscore" : { "2021" : { "category_available" : 1, "data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, + "energy" : null, + "fiber" : 0, + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 + "proteins" : null, + "saturated_fat" : null, + "sodium" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 3 + "nutriscore_computed" : 0 }, "2023" : { "category_available" : 1, "data" : { - "components" : { - "negative" : [ - { - "id" : "energy", - "points" : 1, - "points_max" : 10, - "unit" : "kJ", - "value" : 558.75 - }, - { - "id" : "sugars", - "points" : 2, - "points_max" : 15, - "unit" : "g", - "value" : 7.26 - }, - { - "id" : "saturated_fat", - "points" : 4, - "points_max" : 10, - "unit" : "g", - "value" : 4.9 - }, - { - "id" : "salt", - "points" : 0, - "points_max" : 20, - "unit" : "g", - "value" : 0.05 - } - ], - "positive" : [ - { - "id" : "proteins", - "points" : 0, - "points_max" : 7, - "unit" : "g", - "value" : 1.97 - }, - { - "id" : "fiber", - "points" : 0, - "points_max" : 5, - "unit" : "g", - "value" : 0.81 - }, - { - "id" : "fruits_vegetables_legumes", - "points" : 2, - "points_max" : 5, - "unit" : "%", - "value" : 62.5 - } - ] - }, - "count_proteins" : 1, - "count_proteins_reason" : "negative_points_less_than_11", + "energy" : null, + "fiber" : null, + "fruits_vegetables_legumes" : 58.3, "is_beverage" : 0, "is_cheese" : 0, "is_fat_oil_nuts_seeds" : 0, "is_red_meat_product" : 0, "is_water" : 0, - "negative_points" : 7, - "negative_points_max" : 55, - "positive_nutrients" : [ - "proteins", - "fiber", - "fruits_vegetables_legumes" - ], - "positive_points" : 2, - "positive_points_max" : 17 + "proteins" : null, + "salt" : null, + "saturated_fat" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 5 + "nutriscore_computed" : 0 } }, "nutriscore_2021_tags" : [ - "c" + "unknown" ], "nutriscore_2023_tags" : [ - "c" + "unknown" ], - "nutriscore_data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, - "grade" : "c", - "is_beverage" : 0, - "is_cheese" : 0, - "is_fat" : 0, - "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "score" : 3, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 - }, - "nutriscore_grade" : "c", - "nutriscore_score" : 3, - "nutriscore_score_opposite" : -3, + "nutriscore_grade" : "unknown", "nutriscore_tags" : [ - "c" + "unknown" ], "nutriscore_version" : "2021", "nutrition_data_per" : "100g", "nutrition_data_prepared_per" : "100g", - "nutrition_grade_fr" : "c", - "nutrition_grades" : "c", + "nutrition_grade_fr" : "unknown", + "nutrition_grades" : "unknown", "nutrition_grades_tags" : [ - "c" + "unknown" ], "nutrition_score_beverage" : 0, "nutrition_score_debug" : "missing energy_100g - missing fat_100g - missing saturated-fat_100g - missing sugars_100g - missing sodium_100g - missing proteins_100g", "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 58.3333333333333, "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 62.5, - "nutrition_score_warning_nutriments_estimated" : 1, + "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 58.3333333333333, + "nutrition_score_warning_no_fiber" : 1, "origin" : "france", "origin_en" : "france", "other_nutritional_substances_tags" : [], @@ -3389,10 +3234,10 @@ "serving_quantity" : 10, "serving_quantity_unit" : "g", "serving_size" : "10 g", - "states" : "en:to-be-completed, en:nutrition-facts-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", + "states" : "en:to-be-completed, en:nutrition-facts-to-be-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", "states_hierarchy" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", @@ -3407,7 +3252,7 @@ ], "states_tags" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-fields-knowledge-panels-knowledge-panels_excluded-environment_card.json b/tests/integration/expected_test_results/api_v3_product_read/get-fields-knowledge-panels-knowledge-panels_excluded-environment_card.json index 255506fec5a40..a3022c1dab43d 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-fields-knowledge-panels-knowledge-panels_excluded-environment_card.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-fields-knowledge-panels-knowledge-panels_excluded-environment_card.json @@ -3,6 +3,89 @@ "errors" : [], "product" : { "knowledge_panels" : { + "additive_en:e100" : { + "elements" : [], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E100 - Curcumin" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin: Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "English", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322 - Lecithins" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322i" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin: Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "English", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322i - Lecithin" + }, + "topics" : [ + "health" + ] + }, + "additives" : { + "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e100" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322i" + } + } + ], + "expanded" : true, + "level" : "info", + "topics" : [ + "health" + ], + "type" : "inline" + }, "health_card" : { "elements" : [ { @@ -46,6 +129,15 @@ "title" : "Food processing" } }, + { + "element_type" : "panel_group", + "panel_group_element" : { + "panel_ids" : [ + "additives" + ], + "title" : "Additives" + } + }, { "element_type" : "panel_group", "panel_group_element" : { @@ -118,8 +210,8 @@ "text_element" : { "edit_field_id" : "ingredients_text_en", "edit_field_type" : "ingredients_text", - "edit_field_value" : "apple, milk, eggs, palm oil", - "html" : "apple, milk, eggs, palm oil", + "edit_field_value" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "html" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "language" : "English", "lc" : "en" } @@ -127,7 +219,7 @@ { "element_type" : "text", "text_element" : { - "html" : "Allergens: \n Apple, Eggs, Milk\n " + "html" : "Allergens: \n Apple, Eggs, Milk, Soybeans\n " } } ], @@ -138,7 +230,7 @@ "title_element" : { "icon_color_from_evaluation" : true, "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/ingredients.svg", - "title" : "4 ingredients" + "title" : "8 ingredients" }, "topics" : [ "health" @@ -183,13 +275,13 @@ { "element_type" : "text", "text_element" : { - "html" : "en: apple, milk, eggs, palm oil" + "html" : "en: apple, milk, eggs, palm oil, coloring (curcumin), emulsifier (soy lecithin)" } }, { "element_type" : "text", "text_element" : { - "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 25 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
\n" + "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 16.6666666666667 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
  9. coloring -> en:colour - percent_min: 0 - percent_max: 20
      \n
    1. curcumin -> en:e100 - vegan: yes - vegetarian: yes - percent_min: 0 - percent_max: 20
    2. \n
    \n
  10. \n
  11. emulsifier -> en:emulsifier - percent_min: 0 - percent_max: 16.6666666666667
      \n
    1. soy lecithin -> en:soya-lecithin - vegan: yes - vegetarian: yes - ciqual_food_code: 42200 - percent_min: 0 - percent_max: 16.6666666666667
    2. \n
    \n
  12. \n
\n" } }, { @@ -286,20 +378,21 @@ { "element_type" : "text", "text_element" : { - "html" : "\n\n \n \n

Elements that indicate the product is in the 3 - Processed foods group:

\n
    \n \n
  • Category: Sweet snacks
  • \n \n
\n \n \n\n" + "html" : "\n\n \n \n

Elements that indicate the product is in the 4 - Ultra processed food and drink products group:

\n
    \n \n
  • Additive: E100 - Curcumin
  • \n \n
  • Additive: E322 - Lecithins
  • \n \n
  • Ingredient: Colour
  • \n \n
  • Ingredient: Emulsifier
  • \n \n
\n \n \n\n" } }, { "element_type" : "text", "text_element" : { - "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" + "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra-processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" } } ], "level" : "info", "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", - "title" : "Processed foods" + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", + "subtitle" : "4 ultra-processing markers", + "title" : "Ultra-processed foods" }, "topics" : [ "health" @@ -333,213 +426,38 @@ { "element_type" : "text", "text_element" : { - "html" : "Warning: the nutrition facts are not specified. They have been estimated from the list of ingredients.\n ", + "html" : "The nutrition facts of the product must be specified in order to compute the Nutri-Score.

Missing nutrition facts: Energy, Fat, Proteins, Saturated fat, Sodium, Sugars

\n ", "type" : "warning" } }, { - "element_type" : "text", - "text_element" : { - "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 62\n ", - "type" : "warning" - } - }, - { - "element_type" : "panel", - "panel_element" : { - "panel_id" : "nutriscore_description" - } - }, - { - "element_type" : "panel_group", - "panel_group_element" : { - "evaluation" : "bad", - "icon_color_from_evaluation" : true, - "icon_size" : "small", - "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/circle-minus.svg", - "panel_ids" : [ - "nutriscore_component_energy", - "nutriscore_component_sugars", - "nutriscore_component_saturated_fat", - "nutriscore_component_salt" - ], - "title" : "Negative points: 7/55" - } - }, - { - "element_type" : "panel_group", - "panel_group_element" : { - "evaluation" : "good", - "icon_color_from_evaluation" : true, - "icon_size" : "small", - "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/circle-plus.svg", - "panel_ids" : [ - "nutriscore_component_proteins", - "nutriscore_component_fiber", - "nutriscore_component_fruits_vegetables_legumes" + "action_element" : { + "actions" : [ + "add_nutrition_facts" ], - "title" : "Positive points: 2/17" - } + "html" : "Could you add the information needed to compute the Nutri-Score?" + }, + "element_type" : "action" }, { "element_type" : "panel", "panel_element" : { - "panel_id" : "nutriscore_details" + "panel_id" : "nutriscore_description" } } ], "level" : "info", "title_element" : { - "grade" : "c", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-c-new-en.svg", - "subtitle" : "Average nutritional quality", - "title" : "Nutri-Score C", + "grade" : "unknown", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-unknown-new-en.svg", + "subtitle" : "Missing nutrition facts", + "title" : "Nutri-Score UNKNOWN", "type" : "grade" }, "topics" : [ "health" ] }, - "nutriscore_component_energy" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n Energy intakes above energy requirements are associated with increased risks of weight gain, overweight, obesity, and consequently risk of diet-related chronic diseases.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-1-10.svg", - "subtitle" : "1/10 points (558.75kJ)", - "title" : "Energy" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_fiber" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n Consuming foods rich in fiber (especially whole grain foods) reduces the risks of aerodigestive cancers, cardiovascular diseases, obesity and diabetes.\n \n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-0-5.svg", - "subtitle" : "0/5 points (0.81g)", - "title" : "Fiber" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_fruits_vegetables_legumes" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n Consuming foods rich in fruits, vegetables and legumes reduces the risks of aerodigestive cancers, cardiovascular diseases, obesity and diabetes.\n \n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-2-5.svg", - "subtitle" : "2/5 points (62.5%)", - "title" : "Fruits, vegetables and legumes" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_proteins" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n Foods that are rich in proteins are usually rich in calcium or iron which are essential minerals with numerous health benefits.\n \n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-0-7.svg", - "subtitle" : "0/7 points (1.97g)", - "title" : "Proteins" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_salt" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n A high consumption of salt (or sodium) can cause raised blood pressure, which can increase the risk of heart disease and stroke.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-0-20.svg", - "subtitle" : "0/20 points (0.05g)", - "title" : "Salt" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_saturated_fat" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n A high consumption of fat, especially saturated fats, can raise cholesterol, which increases the risk of heart diseases.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-4-10.svg", - "subtitle" : "4/10 points (4.9g)", - "title" : "Saturated fat" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_sugars" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n A high consumption of sugar can cause weight gain and tooth decay. It also augments the risk of type 2 diabetes and cardio-vascular diseases.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-2-15.svg", - "subtitle" : "2/15 points (7.26g)", - "title" : "Sugar" - }, - "topics" : [ - "health" - ] - }, "nutriscore_description" : { "elements" : [ { @@ -567,40 +485,6 @@ "health" ] }, - "nutriscore_details" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "Warning: the nutrition facts are not specified. They have been estimated from the list of ingredients.\n ", - "type" : "warning" - } - }, - { - "element_type" : "text", - "text_element" : { - "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 62\n ", - "type" : "warning" - } - }, - { - "element_type" : "text", - "text_element" : { - "html" : "\n\n

This product is not considered a beverage for the calculation of the Nutri-Score.

\n\n\n\n\n\n

Points for proteins are counted because the negative points are less than 11.

\n\n

\n Nutritional score: 5\n (7 - 2)\n

\n

Nutri-Score: C

\n " - } - } - ], - "level" : "info", - "title_element" : { - "icon_size" : "small", - "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/info.svg", - "title" : "Details of the calculation of the Nutri-Score", - "type" : "info" - }, - "topics" : [ - "health" - ] - }, "nutrition_facts_table" : { "elements" : [ { @@ -742,10 +626,10 @@ "text" : "Fruits‚ vegetables‚ nuts and rapeseed‚ walnut and olive oils (estimate from ingredients list analysis)" }, { - "text" : "62.5 %" + "text" : "58.333 %" }, { - "text" : "62.5 %" + "text" : "58.333 %" } ] } diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-fields-knowledge-panels-knowledge-panels_included-health_card-environment_card.json b/tests/integration/expected_test_results/api_v3_product_read/get-fields-knowledge-panels-knowledge-panels_included-health_card-environment_card.json index 14c1e8d195acf..20d4436f96734 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-fields-knowledge-panels-knowledge-panels_included-health_card-environment_card.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-fields-knowledge-panels-knowledge-panels_included-health_card-environment_card.json @@ -3,6 +3,89 @@ "errors" : [], "product" : { "knowledge_panels" : { + "additive_en:e100" : { + "elements" : [], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E100 - Curcumin" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin: Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "English", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322 - Lecithins" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322i" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin: Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "English", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322i - Lecithin" + }, + "topics" : [ + "health" + ] + }, + "additives" : { + "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e100" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322i" + } + } + ], + "expanded" : true, + "level" : "info", + "topics" : [ + "health" + ], + "type" : "inline" + }, "carbon_footprint" : { "elements" : [ { @@ -609,6 +692,15 @@ "title" : "Food processing" } }, + { + "element_type" : "panel_group", + "panel_group_element" : { + "panel_ids" : [ + "additives" + ], + "title" : "Additives" + } + }, { "element_type" : "panel_group", "panel_group_element" : { @@ -636,8 +728,8 @@ "text_element" : { "edit_field_id" : "ingredients_text_en", "edit_field_type" : "ingredients_text", - "edit_field_value" : "apple, milk, eggs, palm oil", - "html" : "apple, milk, eggs, palm oil", + "edit_field_value" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "html" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "language" : "English", "lc" : "en" } @@ -645,7 +737,7 @@ { "element_type" : "text", "text_element" : { - "html" : "Allergens: \n Apple, Eggs, Milk\n " + "html" : "Allergens: \n Apple, Eggs, Milk, Soybeans\n " } } ], @@ -656,7 +748,7 @@ "title_element" : { "icon_color_from_evaluation" : true, "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/ingredients.svg", - "title" : "4 ingredients" + "title" : "8 ingredients" }, "topics" : [ "health" @@ -701,13 +793,13 @@ { "element_type" : "text", "text_element" : { - "html" : "en: apple, milk, eggs, palm oil" + "html" : "en: apple, milk, eggs, palm oil, coloring (curcumin), emulsifier (soy lecithin)" } }, { "element_type" : "text", "text_element" : { - "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 25 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
\n" + "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 16.6666666666667 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
  9. coloring -> en:colour - percent_min: 0 - percent_max: 20
      \n
    1. curcumin -> en:e100 - vegan: yes - vegetarian: yes - percent_min: 0 - percent_max: 20
    2. \n
    \n
  10. \n
  11. emulsifier -> en:emulsifier - percent_min: 0 - percent_max: 16.6666666666667
      \n
    1. soy lecithin -> en:soya-lecithin - vegan: yes - vegetarian: yes - ciqual_food_code: 42200 - percent_min: 0 - percent_max: 16.6666666666667
    2. \n
    \n
  12. \n
\n" } }, { @@ -801,23 +893,30 @@ }, "nova" : { "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "recommendation_ultra_processed_foods" + } + }, { "element_type" : "text", "text_element" : { - "html" : "\n\n \n \n

Elements that indicate the product is in the 3 - Processed foods group:

\n
    \n \n
  • Category: Sweet snacks
  • \n \n
\n \n \n\n" + "html" : "\n\n \n \n

Elements that indicate the product is in the 4 - Ultra processed food and drink products group:

\n
    \n \n
  • Additive: E100 - Curcumin
  • \n \n
  • Additive: E322 - Lecithins
  • \n \n
  • Ingredient: Colour
  • \n \n
  • Ingredient: Emulsifier
  • \n \n
\n \n \n\n" } }, { "element_type" : "text", "text_element" : { - "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" + "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra-processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" } } ], "level" : "info", "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", - "title" : "Processed foods" + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", + "subtitle" : "4 ultra-processing markers", + "title" : "Ultra-processed foods" }, "topics" : [ "health" @@ -851,213 +950,38 @@ { "element_type" : "text", "text_element" : { - "html" : "Warning: the nutrition facts are not specified. They have been estimated from the list of ingredients.\n ", - "type" : "warning" - } - }, - { - "element_type" : "text", - "text_element" : { - "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 62\n ", + "html" : "The nutrition facts of the product must be specified in order to compute the Nutri-Score.

Missing nutrition facts: Energy, Fat, Proteins, Saturated fat, Sodium, Sugars

\n ", "type" : "warning" } }, { - "element_type" : "panel", - "panel_element" : { - "panel_id" : "nutriscore_description" - } - }, - { - "element_type" : "panel_group", - "panel_group_element" : { - "evaluation" : "bad", - "icon_color_from_evaluation" : true, - "icon_size" : "small", - "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/circle-minus.svg", - "panel_ids" : [ - "nutriscore_component_energy", - "nutriscore_component_sugars", - "nutriscore_component_saturated_fat", - "nutriscore_component_salt" - ], - "title" : "Negative points: 7/55" - } - }, - { - "element_type" : "panel_group", - "panel_group_element" : { - "evaluation" : "good", - "icon_color_from_evaluation" : true, - "icon_size" : "small", - "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/circle-plus.svg", - "panel_ids" : [ - "nutriscore_component_proteins", - "nutriscore_component_fiber", - "nutriscore_component_fruits_vegetables_legumes" + "action_element" : { + "actions" : [ + "add_nutrition_facts" ], - "title" : "Positive points: 2/17" - } + "html" : "Could you add the information needed to compute the Nutri-Score?" + }, + "element_type" : "action" }, { "element_type" : "panel", "panel_element" : { - "panel_id" : "nutriscore_details" + "panel_id" : "nutriscore_description" } } ], "level" : "info", "title_element" : { - "grade" : "c", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-c-new-en.svg", - "subtitle" : "Average nutritional quality", - "title" : "Nutri-Score C", + "grade" : "unknown", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-unknown-new-en.svg", + "subtitle" : "Missing nutrition facts", + "title" : "Nutri-Score UNKNOWN", "type" : "grade" }, "topics" : [ "health" ] }, - "nutriscore_component_energy" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n Energy intakes above energy requirements are associated with increased risks of weight gain, overweight, obesity, and consequently risk of diet-related chronic diseases.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-1-10.svg", - "subtitle" : "1/10 points (558.75kJ)", - "title" : "Energy" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_fiber" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n Consuming foods rich in fiber (especially whole grain foods) reduces the risks of aerodigestive cancers, cardiovascular diseases, obesity and diabetes.\n \n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-0-5.svg", - "subtitle" : "0/5 points (0.81g)", - "title" : "Fiber" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_fruits_vegetables_legumes" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n Consuming foods rich in fruits, vegetables and legumes reduces the risks of aerodigestive cancers, cardiovascular diseases, obesity and diabetes.\n \n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-2-5.svg", - "subtitle" : "2/5 points (62.5%)", - "title" : "Fruits, vegetables and legumes" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_proteins" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n Foods that are rich in proteins are usually rich in calcium or iron which are essential minerals with numerous health benefits.\n \n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-0-7.svg", - "subtitle" : "0/7 points (1.97g)", - "title" : "Proteins" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_salt" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n A high consumption of salt (or sodium) can cause raised blood pressure, which can increase the risk of heart disease and stroke.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-0-20.svg", - "subtitle" : "0/20 points (0.05g)", - "title" : "Salt" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_saturated_fat" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n A high consumption of fat, especially saturated fats, can raise cholesterol, which increases the risk of heart diseases.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-4-10.svg", - "subtitle" : "4/10 points (4.9g)", - "title" : "Saturated fat" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_sugars" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n A high consumption of sugar can cause weight gain and tooth decay. It also augments the risk of type 2 diabetes and cardio-vascular diseases.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-2-15.svg", - "subtitle" : "2/15 points (7.26g)", - "title" : "Sugar" - }, - "topics" : [ - "health" - ] - }, "nutriscore_description" : { "elements" : [ { @@ -1085,40 +1009,6 @@ "health" ] }, - "nutriscore_details" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "Warning: the nutrition facts are not specified. They have been estimated from the list of ingredients.\n ", - "type" : "warning" - } - }, - { - "element_type" : "text", - "text_element" : { - "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 62\n ", - "type" : "warning" - } - }, - { - "element_type" : "text", - "text_element" : { - "html" : "\n\n

This product is not considered a beverage for the calculation of the Nutri-Score.

\n\n\n\n\n\n

Points for proteins are counted because the negative points are less than 11.

\n\n

\n Nutritional score: 5\n (7 - 2)\n

\n

Nutri-Score: C

\n " - } - } - ], - "level" : "info", - "title_element" : { - "icon_size" : "small", - "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/info.svg", - "title" : "Details of the calculation of the Nutri-Score", - "type" : "info" - }, - "topics" : [ - "health" - ] - }, "nutrition_facts_table" : { "elements" : [ { @@ -1260,10 +1150,10 @@ "text" : "Fruits‚ vegetables‚ nuts and rapeseed‚ walnut and olive oils (estimate from ingredients list analysis)" }, { - "text" : "62.5 %" + "text" : "58.333 %" }, { - "text" : "62.5 %" + "text" : "58.333 %" } ] } @@ -1515,6 +1405,32 @@ "environment" ] }, + "recommendation_ultra_processed_foods" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "\n Several studies have found that a high consumption of ultra-processed foods is associated with an increased risk of noncommunicable chronic diseases, such as obesity, hypertension and diabetes.\n ", + "source_language" : "en", + "source_text" : "Ultra-processed foods increase noncommunicable chronic disease risk", + "source_url" : "https://pubmed.ncbi.nlm.nih.gov/34798466/", + "type" : "quote" + } + } + ], + "evaluation" : "bad", + "level" : "recommendation", + "title_element" : { + "evaluation" : "bad", + "icon_color_from_evaluation" : true, + "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/arrow-bottom-right-thick.svg", + "subtitle" : "Ultra-processed foods increase noncommunicable chronic disease risk", + "title" : "Limit ultra-processed foods" + }, + "topics" : [ + "health" + ] + }, "root" : { "elements" : [ { diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-fields-raw.json b/tests/integration/expected_test_results/api_v3_product_read/get-fields-raw.json index 67b6788176774..bdd44c95f8617 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-fields-raw.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-fields-raw.json @@ -11,21 +11,30 @@ "tester" ], "added_countries_tags" : [], - "additives_n" : 0, - "additives_original_tags" : [], - "additives_tags" : [], + "additives_n" : 2, + "additives_original_tags" : [ + "en:e100", + "en:e322i" + ], + "additives_tags" : [ + "en:e100", + "en:e322", + "en:e322i" + ], "allergens" : "", - "allergens_from_ingredients" : "en:eggs, en:milk, apple, milk, eggs", + "allergens_from_ingredients" : "en:soybeans, en:eggs, en:milk, apple, milk, eggs", "allergens_from_user" : "(en) ", "allergens_hierarchy" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "allergens_tags" : [ "en:apple", "en:eggs", - "en:milk" + "en:milk", + "en:soybeans" ], "amino_acids_tags" : [], "categories" : "cookies", @@ -73,7 +82,7 @@ "4xxxxxxxxxxxx" ], "complete" : 0, - "completeness" : 0.5, + "completeness" : 0.4, "correctors_tags" : [], "created_t" : "--ignore--", "creator" : "tests", @@ -546,7 +555,7 @@ "en:biscuits-and-cakes" ], "forest_footprint_data" : { - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "grade" : "a", "ingredients" : [ { @@ -556,10 +565,10 @@ "en:organic" ] ], - "footprint_per_kg" : 0.00145833333333333, + "footprint_per_kg" : 0.00162037037037037, "matching_tag_id" : "en:egg", - "percent" : 9.375, - "percent_estimate" : 9.375, + "percent" : 10.4166666666667, + "percent_estimate" : 10.4166666666667, "processing_factor" : 1, "tag_id" : "en:egg", "tag_type" : "ingredients", @@ -584,9 +593,9 @@ "ecobalyse_code" : "apple-fr", "id" : "en:apple", "is_in_taxonomy" : 1, - "percent_estimate" : 62.5, + "percent_estimate" : 58.3333333333333, "percent_max" : 100, - "percent_min" : 25, + "percent_min" : 16.6666666666667, "text" : "apple", "vegan" : "yes", "vegetarian" : "yes" @@ -596,7 +605,7 @@ "ecobalyse_code" : "milk", "id" : "en:milk", "is_in_taxonomy" : 1, - "percent_estimate" : 18.75, + "percent_estimate" : 20.8333333333333, "percent_max" : 50, "percent_min" : 0, "text" : "milk", @@ -608,7 +617,7 @@ "ecobalyse_code" : "egg-indoor-code3", "id" : "en:egg", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 10.4166666666667, "percent_max" : 33.3333333333333, "percent_min" : 0, "text" : "eggs", @@ -621,12 +630,53 @@ "from_palm_oil" : "yes", "id" : "en:palm-oil", "is_in_taxonomy" : 1, - "percent_estimate" : 9.375, + "percent_estimate" : 5.20833333333333, "percent_max" : 25, "percent_min" : 0, "text" : "palm oil", "vegan" : "yes", "vegetarian" : "yes" + }, + { + "id" : "en:colour", + "ingredients" : [ + { + "id" : "en:e100", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "curcumin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "coloring" + }, + { + "id" : "en:emulsifier", + "ingredients" : [ + { + "ciqual_food_code" : "42200", + "id" : "en:soya-lecithin", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "soy lecithin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "emulsifier" } ], "ingredients_analysis" : { @@ -653,12 +703,18 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], "ingredients_lc" : "en", - "ingredients_n" : 4, + "ingredients_n" : 8, "ingredients_n_tags" : [ - "4", + "8", "1-10" ], "ingredients_non_nutritive_sweeteners_n" : 0, @@ -666,7 +722,11 @@ "en:apple", "en:milk", "en:egg", - "en:palm-oil" + "en:palm-oil", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin" ], "ingredients_percent_analysis" : 1, "ingredients_sweeteners_n" : 0, @@ -680,23 +740,38 @@ "en:palm-oil", "en:oil-and-fat", "en:vegetable-oil-and-fat", - "en:palm-oil-and-fat" + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" ], - "ingredients_text" : "apple, milk, eggs, palm oil", - "ingredients_text_en" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil", - "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil", + "ingredients_text" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "ingredients_with_specified_percent_n" : 0, "ingredients_with_specified_percent_sum" : 0, - "ingredients_with_unspecified_percent_n" : 4, + "ingredients_with_unspecified_percent_n" : 6, "ingredients_with_unspecified_percent_sum" : 100, - "ingredients_without_ciqual_codes" : [], - "ingredients_without_ciqual_codes_n" : 0, - "ingredients_without_ecobalyse_ids" : [], - "ingredients_without_ecobalyse_ids_n" : 0, + "ingredients_without_ciqual_codes" : [ + "en:colour", + "en:e100", + "en:emulsifier" + ], + "ingredients_without_ciqual_codes_n" : 3, + "ingredients_without_ecobalyse_ids" : [ + "en:colour", + "en:e100", + "en:emulsifier", + "en:soya-lecithin" + ], + "ingredients_without_ecobalyse_ids_n" : 4, "interface_version_created" : "20150316.jqm2", "interface_version_modified" : "20150316.jqm2", - "known_ingredients_n" : 10, + "known_ingredients_n" : 16, "labels" : "organic", "labels_hierarchy" : [ "en:organic" @@ -738,9 +813,6 @@ "en:ecoscore-missing-data-warning", "en:forest-footprint-a", "en:forest-footprint-computed", - "en:nutriscore-2021-c-2023-c", - "en:nutriscore-2021-same-as-2023", - "en:nutriscore-computed", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", "en:nutriscore-missing-nutrition-data-fat", @@ -748,11 +820,11 @@ "en:nutriscore-missing-nutrition-data-saturated-fat", "en:nutriscore-missing-nutrition-data-sodium", "en:nutriscore-missing-nutrition-data-sugars", - "en:nutriscore-using-estimated-nutrition-facts", - "en:nutrition-all-nutriscore-values-known", + "en:nutriscore-not-computed", "en:nutrition-fruits-vegetables-legumes-estimate-from-ingredients", "en:nutrition-fruits-vegetables-nuts-estimate-from-ingredients", "en:nutrition-no-fiber", + "en:nutrition-no-fiber-or-fruits-vegetables-nuts", "en:nutrition-not-enough-data-to-compute-nutrition-score", "en:packagings-not-complete", "en:packagings-not-empty", @@ -760,259 +832,118 @@ "en:packagings-number-of-components-4", "en:main-countries-new-product" ], - "nova_group" : 3, + "nova_group" : 4, "nova_group_debug" : "", - "nova_groups" : "3", + "nova_groups" : "4", "nova_groups_markers" : { "3" : [ [ "categories", "en:sweet-snacks" ] + ], + "4" : [ + [ + "additives", + "en:e100" + ], + [ + "additives", + "en:e322" + ], + [ + "ingredients", + "en:colour" + ], + [ + "ingredients", + "en:emulsifier" + ] ] }, "nova_groups_tags" : [ - "en:3-processed-foods" + "en:4-ultra-processed-food-and-drink-products" ], "nucleotides_tags" : [], "nutrient_levels" : {}, "nutrient_levels_tags" : [], "nutriments" : { - "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 62.5, - "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 62.5, - "nova-group" : 3, - "nova-group_100g" : 3, - "nova-group_serving" : 3, - "nutrition-score-fr" : 3, - "nutrition-score-fr_100g" : 3 - }, - "nutriments_estimated" : { - "alcohol_100g" : 0, - "beta-carotene_100g" : 1.19375e-05, - "calcium_100g" : 0.0333875, - "carbohydrates_100g" : 7.6484375, - "cholesterol_100g" : 0.03778125, - "copper_100g" : 2.678125e-05, - "energy-kcal_100g" : 134.5875, - "energy-kj_100g" : 558.75, - "energy_100g" : 558.75, - "fat_100g" : 10.4134375, - "fiber_100g" : 0.8125, - "fructose_100g" : 3.77578125, - "galactose_100g" : 0, - "glucose_100g" : 2.0565625, - "iodine_100g" : 7.09375e-06, - "iron_100g" : 0.0002265625, - "lactose_100g" : 0.924375, - "magnesium_100g" : 0.00570625, - "maltose_100g" : 0.00703125, - "manganese_100g" : 2.73828125e-05, - "pantothenic-acid_100g" : 0.0002590625, - "phosphorus_100g" : 0.0445625, - "phylloquinone_100g" : 1.153125e-06, - "polyols_100g" : 0.36875, - "potassium_100g" : 0.09825, - "proteins_100g" : 1.974375, - "salt_100g" : 0.0496875, - "saturated-fat_100g" : 4.903125, - "selenium_100g" : 1.2290625e-06, - "sodium_100g" : 0.019725, - "starch_100g" : 0, - "sucrose_100g" : 0.51953125, - "sugars_100g" : 7.2621875, - "vitamin-a_100g" : 1.739625e-05, - "vitamin-b12_100g" : 2.278125e-07, - "vitamin-b1_100g" : 2.509375e-05, - "vitamin-b2_100g" : 9.34375e-05, - "vitamin-b6_100g" : 4.54375e-05, - "vitamin-b9_100g" : 4.10625e-06, - "vitamin-c_100g" : 0.00274375, - "vitamin-d_100g" : 1.903125e-07, - "vitamin-e_100g" : 0.001657625, - "vitamin-pp_100g" : 8.003125e-05, - "water_100g" : 78.365625, - "zinc_100g" : 0.0002046875 + "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 58.3333333333333, + "nova-group" : 4, + "nova-group_100g" : 4, + "nova-group_serving" : 4 }, "nutriscore" : { "2021" : { "category_available" : 1, "data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, + "energy" : null, + "fiber" : 0, + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, "is_beverage" : 0, "is_cheese" : 0, "is_fat" : 0, "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 + "proteins" : null, + "saturated_fat" : null, + "sodium" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 3 + "nutriscore_computed" : 0 }, "2023" : { "category_available" : 1, "data" : { - "components" : { - "negative" : [ - { - "id" : "energy", - "points" : 1, - "points_max" : 10, - "unit" : "kJ", - "value" : 558.75 - }, - { - "id" : "sugars", - "points" : 2, - "points_max" : 15, - "unit" : "g", - "value" : 7.26 - }, - { - "id" : "saturated_fat", - "points" : 4, - "points_max" : 10, - "unit" : "g", - "value" : 4.9 - }, - { - "id" : "salt", - "points" : 0, - "points_max" : 20, - "unit" : "g", - "value" : 0.05 - } - ], - "positive" : [ - { - "id" : "proteins", - "points" : 0, - "points_max" : 7, - "unit" : "g", - "value" : 1.97 - }, - { - "id" : "fiber", - "points" : 0, - "points_max" : 5, - "unit" : "g", - "value" : 0.81 - }, - { - "id" : "fruits_vegetables_legumes", - "points" : 2, - "points_max" : 5, - "unit" : "%", - "value" : 62.5 - } - ] - }, - "count_proteins" : 1, - "count_proteins_reason" : "negative_points_less_than_11", + "energy" : null, + "fiber" : null, + "fruits_vegetables_legumes" : 58.3, "is_beverage" : 0, "is_cheese" : 0, "is_fat_oil_nuts_seeds" : 0, "is_red_meat_product" : 0, "is_water" : 0, - "negative_points" : 7, - "negative_points_max" : 55, - "positive_nutrients" : [ - "proteins", - "fiber", - "fruits_vegetables_legumes" - ], - "positive_points" : 2, - "positive_points_max" : 17 + "proteins" : null, + "salt" : null, + "saturated_fat" : null, + "sugars" : null }, - "grade" : "c", - "nutrients_available" : 1, + "grade" : "unknown", + "nutrients_available" : 0, "nutriscore_applicable" : 1, - "nutriscore_computed" : 1, - "score" : 5 + "nutriscore_computed" : 0 } }, "nutriscore_2021_tags" : [ - "c" + "unknown" ], "nutriscore_2023_tags" : [ - "c" + "unknown" ], - "nutriscore_data" : { - "energy" : 558.75, - "energy_points" : 1, - "energy_value" : 558.8, - "fiber" : 0.8125, - "fiber_points" : 0, - "fiber_value" : 0.81, - "fruits_vegetables_nuts_colza_walnut_olive_oils" : 62.5, - "fruits_vegetables_nuts_colza_walnut_olive_oils_points" : 2, - "fruits_vegetables_nuts_colza_walnut_olive_oils_value" : 62.5, - "grade" : "c", - "is_beverage" : 0, - "is_cheese" : 0, - "is_fat" : 0, - "is_water" : 0, - "negative_points" : 6, - "positive_points" : 3, - "proteins" : 1.974375, - "proteins_points" : 1, - "proteins_value" : 1.97, - "saturated_fat" : 4.903125, - "saturated_fat_points" : 4, - "saturated_fat_value" : 4.9, - "score" : 3, - "sodium" : 19.725, - "sodium_points" : 0, - "sodium_value" : 19.7, - "sugars" : 7.2621875, - "sugars_points" : 1, - "sugars_value" : 7.26 - }, - "nutriscore_grade" : "c", - "nutriscore_score" : 3, - "nutriscore_score_opposite" : -3, + "nutriscore_grade" : "unknown", "nutriscore_tags" : [ - "c" + "unknown" ], "nutriscore_version" : "2021", "nutrition_data_per" : "100g", "nutrition_data_prepared_per" : "100g", - "nutrition_grade_fr" : "c", - "nutrition_grades" : "c", + "nutrition_grade_fr" : "unknown", + "nutrition_grades" : "unknown", "nutrition_grades_tags" : [ - "c" + "unknown" ], "nutrition_score_beverage" : 0, "nutrition_score_debug" : "missing energy_100g - missing fat_100g - missing saturated-fat_100g - missing sugars_100g - missing sodium_100g - missing proteins_100g", "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 62.5, + "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 58.3333333333333, "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients" : 1, - "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 62.5, - "nutrition_score_warning_nutriments_estimated" : 1, + "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 58.3333333333333, + "nutrition_score_warning_no_fiber" : 1, "origin" : "france", "origin_en" : "france", "other_nutritional_substances_tags" : [], @@ -1095,10 +1026,10 @@ "serving_quantity" : "10", "serving_quantity_unit" : "g", "serving_size" : "10 g", - "states" : "en:to-be-completed, en:nutrition-facts-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", + "states" : "en:to-be-completed, en:nutrition-facts-to-be-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", "states_hierarchy" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", @@ -1113,7 +1044,7 @@ ], "states_tags" : [ "en:to-be-completed", - "en:nutrition-facts-completed", + "en:nutrition-facts-to-be-completed", "en:ingredients-completed", "en:expiration-date-to-be-completed", "en:packaging-code-to-be-completed", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-knowledge-panels-fr.json b/tests/integration/expected_test_results/api_v3_product_read/get-knowledge-panels-fr.json index 33a70337e3561..569e475b813d4 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-knowledge-panels-fr.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-knowledge-panels-fr.json @@ -3,6 +3,96 @@ "errors" : [], "product" : { "knowledge_panels" : { + "additive_en:e100" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "

La curcumine ne présente pas de risques connus pour la santé.

" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E100 - Curcumine" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin : Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "Anglais", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322 - Lécithines" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322i" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin : Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "Anglais", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322i - Lécithine" + }, + "topics" : [ + "health" + ] + }, + "additives" : { + "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e100" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322i" + } + } + ], + "expanded" : true, + "level" : "info", + "topics" : [ + "health" + ], + "type" : "inline" + }, "carbon_footprint" : { "elements" : [ { @@ -609,6 +699,15 @@ "title" : "Transformation des aliments" } }, + { + "element_type" : "panel_group", + "panel_group_element" : { + "panel_ids" : [ + "additives" + ], + "title" : "Additifs" + } + }, { "element_type" : "panel_group", "panel_group_element" : { @@ -681,8 +780,8 @@ "text_element" : { "edit_field_id" : "ingredients_text_en", "edit_field_type" : "ingredients_text", - "edit_field_value" : "apple, milk, eggs, palm oil", - "html" : "apple, milk, eggs, palm oil", + "edit_field_value" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "html" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "language" : "Anglais", "lc" : "en" } @@ -690,7 +789,7 @@ { "element_type" : "text", "text_element" : { - "html" : "Allergènes : \n en:Apple, Œufs, Lait\n " + "html" : "Allergènes : \n en:Apple, Œufs, Lait, Soja\n " } } ], @@ -701,7 +800,7 @@ "title_element" : { "icon_color_from_evaluation" : true, "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/ingredients.svg", - "title" : "4 ingrédients" + "title" : "8 ingrédients" }, "topics" : [ "health" @@ -746,13 +845,13 @@ { "element_type" : "text", "text_element" : { - "html" : "en: apple, milk, eggs, palm oil" + "html" : "en: apple, milk, eggs, palm oil, coloring (curcumin), emulsifier (soy lecithin)" } }, { "element_type" : "text", "text_element" : { - "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 25 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
\n" + "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 16.6666666666667 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
  9. coloring -> en:colour - percent_min: 0 - percent_max: 20
      \n
    1. curcumin -> en:e100 - vegan: yes - vegetarian: yes - percent_min: 0 - percent_max: 20
    2. \n
    \n
  10. \n
  11. emulsifier -> en:emulsifier - percent_min: 0 - percent_max: 16.6666666666667
      \n
    1. soy lecithin -> en:soya-lecithin - vegan: yes - vegetarian: yes - ciqual_food_code: 42200 - percent_min: 0 - percent_max: 16.6666666666667
    2. \n
    \n
  12. \n
\n" } }, { @@ -846,10 +945,16 @@ }, "nova" : { "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "recommendation_ultra_processed_foods" + } + }, { "element_type" : "text", "text_element" : { - "html" : "\n\n \n \n

Éléments qui indiquent que le produit est dans le groupe 3 - Aliments transformés :

\n
    \n \n
  • Catégorie : Snacks sucrés
  • \n \n
\n \n \n\n" + "html" : "\n\n \n \n

Éléments qui indiquent que le produit est dans le groupe 4 - Produits alimentaires et boissons ultra-transformés :

\n
    \n \n
  • Additif : E100 - Curcumine
  • \n \n
  • Additif : E322 - Lécithines
  • \n \n
  • Ingrédient : Colorant
  • \n \n
  • Ingrédient : Émulsifiant
  • \n \n
\n \n \n\n" } }, { @@ -861,8 +966,9 @@ ], "level" : "info", "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", - "title" : "Aliments transformés" + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", + "subtitle" : "4 marqueurs d'ultra-transformation", + "title" : "Aliments ultra-transformés" }, "topics" : [ "health" @@ -896,213 +1002,38 @@ { "element_type" : "text", "text_element" : { - "html" : "Attention : les valeurs nutritionnelles ne sont pas précisées. Elles ont été estimées à partir de la liste des ingrédients.\n ", + "html" : "Les données nutritionnelles du produit doivent être spécifiées afin de calculer le Nutri-Score.

Informations nutritionnelles manquantes : Énergie, Matières grasses, Protéines, Acides gras saturés, Sodium, Sucres

\n ", "type" : "warning" } }, { - "element_type" : "text", - "text_element" : { - "html" : "Avertissement : Le taux de fruits, légumes et noix n'est pas indiqué sur l'étiquette, il a été estimé en fonction de la liste des ingrédients : 62\n ", - "type" : "warning" - } - }, - { - "element_type" : "panel", - "panel_element" : { - "panel_id" : "nutriscore_description" - } - }, - { - "element_type" : "panel_group", - "panel_group_element" : { - "evaluation" : "bad", - "icon_color_from_evaluation" : true, - "icon_size" : "small", - "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/circle-minus.svg", - "panel_ids" : [ - "nutriscore_component_energy", - "nutriscore_component_sugars", - "nutriscore_component_saturated_fat", - "nutriscore_component_salt" - ], - "title" : "Points négatifs : 7/55" - } - }, - { - "element_type" : "panel_group", - "panel_group_element" : { - "evaluation" : "good", - "icon_color_from_evaluation" : true, - "icon_size" : "small", - "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/circle-plus.svg", - "panel_ids" : [ - "nutriscore_component_proteins", - "nutriscore_component_fiber", - "nutriscore_component_fruits_vegetables_legumes" + "action_element" : { + "actions" : [ + "add_nutrition_facts" ], - "title" : "Points positifs : 2/17" - } + "html" : "Pourriez-vous ajouter les informations nécessaires pour calculer le Nutri-Score ?" + }, + "element_type" : "action" }, { "element_type" : "panel", "panel_element" : { - "panel_id" : "nutriscore_details" + "panel_id" : "nutriscore_description" } } ], "level" : "info", "title_element" : { - "grade" : "c", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-c-new-fr.svg", - "subtitle" : "Qualité nutritionnelle moyenne", - "title" : "Nutri-Score C", + "grade" : "unknown", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-unknown-new-fr.svg", + "subtitle" : "Données nutritionnelles manquantes", + "title" : "Nutri-Score UNKNOWN", "type" : "grade" }, "topics" : [ "health" ] }, - "nutriscore_component_energy" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n Les apports énergétiques supérieurs aux besoins énergétiques sont associés à des risques accrus de prise de poids, de surpoids, d'obésité et, par conséquent, à un risque de maladies chroniques liées à l'alimentation.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-1-10.svg", - "subtitle" : "1/10 points (558.75kJ)", - "title" : "Énergie" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_fiber" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n Consommer des aliments riches en fibres (notamment les aliments à grains entiers) réduit les risques de cancers aérodigestifs, de maladies cardiovasculaires, d’obésité et de diabète.\n \n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-0-5.svg", - "subtitle" : "0/5 points (0.81g)", - "title" : "Fibre" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_fruits_vegetables_legumes" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n Consommer des aliments riches en fruits, légumes et légumes secs réduit les risques de cancers aérodigestifs, de maladies cardiovasculaires, d’obésité et de diabète.\n \n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-2-5.svg", - "subtitle" : "2/5 points (62.5%)", - "title" : "Fruits, légumes et légumes secs" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_proteins" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n Les aliments riches en protéines sont généralement riches en calcium ou en fer, des minéraux essentiels aux nombreux bienfaits pour la santé.\n \n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-0-7.svg", - "subtitle" : "0/7 points (1.97g)", - "title" : "Protéines" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_salt" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n Une forte consommation de sel (ou de sodium) peut entraîner une augmentation de la pression artérielle, ce qui peut augmenter le risque de maladie cardiaque et d'accident vasculaire cérébral.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-0-20.svg", - "subtitle" : "0/20 points (0.05g)", - "title" : "Sel" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_saturated_fat" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n Une consommation élevée de matières grasses, en particulier d'acides gras saturés, peut augmenter le cholestérol, ce qui augmente le risque de maladies cardiaques.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-4-10.svg", - "subtitle" : "4/10 points (4.9g)", - "title" : "Acides gras saturés" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_sugars" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n Une forte consommation de sucre peut entraîner une prise de poids et des caries dentaires. Il augmente également le risque de diabète de type 2 et de maladies cardio-vasculaires.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-2-15.svg", - "subtitle" : "2/15 points (7.26g)", - "title" : "Sucres" - }, - "topics" : [ - "health" - ] - }, "nutriscore_description" : { "elements" : [ { @@ -1130,40 +1061,6 @@ "health" ] }, - "nutriscore_details" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "Attention : les valeurs nutritionnelles ne sont pas précisées. Elles ont été estimées à partir de la liste des ingrédients.\n ", - "type" : "warning" - } - }, - { - "element_type" : "text", - "text_element" : { - "html" : "Avertissement : Le taux de fruits, légumes et noix n'est pas indiqué sur l'étiquette, il a été estimé en fonction de la liste des ingrédients : 62\n ", - "type" : "warning" - } - }, - { - "element_type" : "text", - "text_element" : { - "html" : "\n\n

Ce produit n'est pas considéré comme une boisson pour le calcul du Nutri-Score.

\n\n\n\n\n\n

Les points pour les protéines sont comptés car les points négatifs sont inférieurs à 11.

\n\n

\n Score nutritionnel : 5\n (7 - 2)\n

\n

Nutri-Score : C

\n " - } - } - ], - "level" : "info", - "title_element" : { - "icon_size" : "small", - "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/info.svg", - "title" : "Détail du calcul du Nutri-Score", - "type" : "info" - }, - "topics" : [ - "health" - ] - }, "nutrition_facts_table" : { "elements" : [ { @@ -1305,10 +1202,10 @@ "text" : "Fruits‚ légumes‚ noix et huiles de colza‚ noix et olive (estimation par analyse de la liste des ingrédients)" }, { - "text" : "62,5 %" + "text" : "58,333 %" }, { - "text" : "62,5 %" + "text" : "58,333 %" } ] } @@ -1560,6 +1457,32 @@ "environment" ] }, + "recommendation_ultra_processed_foods" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "\n Plusieurs études ont montré qu'une consommation élevée d'aliments ultra-transformés est associée à un risque accru de maladies chroniques non transmissibles, telles que l'obésité, l'hypertension et le diabète.\n ", + "source_language" : "en", + "source_text" : "Ultra-processed foods increase noncommunicable chronic disease risk", + "source_url" : "https://pubmed.ncbi.nlm.nih.gov/34798466/", + "type" : "quote" + } + } + ], + "evaluation" : "bad", + "level" : "recommendation", + "title_element" : { + "evaluation" : "bad", + "icon_color_from_evaluation" : true, + "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/arrow-bottom-right-thick.svg", + "subtitle" : "Les aliments ultra-transformés augmentent le risque de maladies chroniques", + "title" : "Limiter les aliments ultra-transformés" + }, + "topics" : [ + "health" + ] + }, "report_problem_card" : { "elements" : [ { diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-knowledge-panels.json b/tests/integration/expected_test_results/api_v3_product_read/get-knowledge-panels.json index ab111f13f562b..a42200a7ab95f 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-knowledge-panels.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-knowledge-panels.json @@ -3,6 +3,89 @@ "errors" : [], "product" : { "knowledge_panels" : { + "additive_en:e100" : { + "elements" : [], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E100 - Curcumin" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin: Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "English", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322 - Lecithins" + }, + "topics" : [ + "health" + ] + }, + "additive_en:e322i" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "Lecithin: Lecithin -UK: , US: , from the Greek lekithos, \"egg yolk\"- is a generic term to designate any group of yellow-brownish fatty substances occurring in animal and plant tissues, which are amphiphilic – they attract both water and fatty substances -and so are both hydrophilic and lipophilic-, and are used for smoothing food textures, dissolving powders -emulsifying-, homogenizing liquid mixtures, and repelling sticking materials.Lecithins are mixtures of glycerophospholipids including phosphatidylcholine, phosphatidylethanolamine, phosphatidylinositol, phosphatidylserine, and phosphatidic acid.Lecithin was first isolated in 1845 by the French chemist and pharmacist Theodore Gobley. In 1850, he named the phosphatidylcholine lécithine. Gobley originally isolated lecithin from egg yolk—λέκιθος lekithos is \"egg yolk\" in Ancient Greek—and established the complete chemical formula of phosphatidylcholine in 1874; in between, he had demonstrated the presence of lecithin in a variety of biological matters, including venous blood, in human lungs, bile, human brain tissue, fish eggs, fish roe, and chicken and sheep brain. Lecithin can easily be extracted chemically using solvents such as hexane, ethanol, acetone, petroleum ether, benzene, etc., or extraction can be done mechanically. It is usually available from sources such as soybeans, eggs, milk, marine sources, rapeseed, cottonseed, and sunflower. It has low solubility in water, but is an excellent emulsifier. In aqueous solution, its phospholipids can form either liposomes, bilayer sheets, micelles, or lamellar structures, depending on hydration and temperature. This results in a type of surfactant that usually is classified as amphipathic. Lecithin is sold as a food additive and dietary supplement. In cooking, it is sometimes used as an emulsifier and to prevent sticking, for example in nonstick cooking spray.", + "source_language" : "English", + "source_lc" : "en", + "source_text" : "Wikipedia", + "source_url" : "https://en.wikipedia.org/wiki/Lecithin" + } + } + ], + "level" : "info", + "size" : "small", + "title_element" : { + "title" : "E322i - Lecithin" + }, + "topics" : [ + "health" + ] + }, + "additives" : { + "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e100" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322" + } + }, + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "additive_en:e322i" + } + } + ], + "expanded" : true, + "level" : "info", + "topics" : [ + "health" + ], + "type" : "inline" + }, "carbon_footprint" : { "elements" : [ { @@ -609,6 +692,15 @@ "title" : "Food processing" } }, + { + "element_type" : "panel_group", + "panel_group_element" : { + "panel_ids" : [ + "additives" + ], + "title" : "Additives" + } + }, { "element_type" : "panel_group", "panel_group_element" : { @@ -681,8 +773,8 @@ "text_element" : { "edit_field_id" : "ingredients_text_en", "edit_field_type" : "ingredients_text", - "edit_field_value" : "apple, milk, eggs, palm oil", - "html" : "apple, milk, eggs, palm oil", + "edit_field_value" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "html" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", "language" : "English", "lc" : "en" } @@ -690,7 +782,7 @@ { "element_type" : "text", "text_element" : { - "html" : "Allergens: \n Apple, Eggs, Milk\n " + "html" : "Allergens: \n Apple, Eggs, Milk, Soybeans\n " } } ], @@ -701,7 +793,7 @@ "title_element" : { "icon_color_from_evaluation" : true, "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/ingredients.svg", - "title" : "4 ingredients" + "title" : "8 ingredients" }, "topics" : [ "health" @@ -746,13 +838,13 @@ { "element_type" : "text", "text_element" : { - "html" : "en: apple, milk, eggs, palm oil" + "html" : "en: apple, milk, eggs, palm oil, coloring (curcumin), emulsifier (soy lecithin)" } }, { "element_type" : "text", "text_element" : { - "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 25 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
\n" + "html" : "
    \n
  1. apple -> en:apple - vegan: yes - vegetarian: yes - ciqual_food_code: 13050 - percent_min: 16.6666666666667 - percent_max: 100
  2. \n
  3. milk -> en:milk - vegan: no - vegetarian: yes - ciqual_proxy_food_code: 19051 - percent_min: 0 - percent_max: 50
  4. \n
  5. eggs -> en:egg - vegan: no - vegetarian: yes - ciqual_food_code: 22000 - percent_min: 0 - percent_max: 33.3333333333333
  6. \n
  7. palm oil -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 0 - percent_max: 25
  8. \n
  9. coloring -> en:colour - percent_min: 0 - percent_max: 20
      \n
    1. curcumin -> en:e100 - vegan: yes - vegetarian: yes - percent_min: 0 - percent_max: 20
    2. \n
    \n
  10. \n
  11. emulsifier -> en:emulsifier - percent_min: 0 - percent_max: 16.6666666666667
      \n
    1. soy lecithin -> en:soya-lecithin - vegan: yes - vegetarian: yes - ciqual_food_code: 42200 - percent_min: 0 - percent_max: 16.6666666666667
    2. \n
    \n
  12. \n
\n" } }, { @@ -846,23 +938,30 @@ }, "nova" : { "elements" : [ + { + "element_type" : "panel", + "panel_element" : { + "panel_id" : "recommendation_ultra_processed_foods" + } + }, { "element_type" : "text", "text_element" : { - "html" : "\n\n \n \n

Elements that indicate the product is in the 3 - Processed foods group:

\n
    \n \n
  • Category: Sweet snacks
  • \n \n
\n \n \n\n" + "html" : "\n\n \n \n

Elements that indicate the product is in the 4 - Ultra processed food and drink products group:

\n
    \n \n
  • Additive: E100 - Curcumin
  • \n \n
  • Additive: E322 - Lecithins
  • \n \n
  • Ingredient: Colour
  • \n \n
  • Ingredient: Emulsifier
  • \n \n
\n \n \n\n" } }, { "element_type" : "text", "text_element" : { - "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" + "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra-processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" } } ], "level" : "info", "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", - "title" : "Processed foods" + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", + "subtitle" : "4 ultra-processing markers", + "title" : "Ultra-processed foods" }, "topics" : [ "health" @@ -896,213 +995,38 @@ { "element_type" : "text", "text_element" : { - "html" : "Warning: the nutrition facts are not specified. They have been estimated from the list of ingredients.\n ", - "type" : "warning" - } - }, - { - "element_type" : "text", - "text_element" : { - "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 62\n ", + "html" : "The nutrition facts of the product must be specified in order to compute the Nutri-Score.

Missing nutrition facts: Energy, Fat, Proteins, Saturated fat, Sodium, Sugars

\n ", "type" : "warning" } }, { - "element_type" : "panel", - "panel_element" : { - "panel_id" : "nutriscore_description" - } - }, - { - "element_type" : "panel_group", - "panel_group_element" : { - "evaluation" : "bad", - "icon_color_from_evaluation" : true, - "icon_size" : "small", - "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/circle-minus.svg", - "panel_ids" : [ - "nutriscore_component_energy", - "nutriscore_component_sugars", - "nutriscore_component_saturated_fat", - "nutriscore_component_salt" - ], - "title" : "Negative points: 7/55" - } - }, - { - "element_type" : "panel_group", - "panel_group_element" : { - "evaluation" : "good", - "icon_color_from_evaluation" : true, - "icon_size" : "small", - "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/circle-plus.svg", - "panel_ids" : [ - "nutriscore_component_proteins", - "nutriscore_component_fiber", - "nutriscore_component_fruits_vegetables_legumes" + "action_element" : { + "actions" : [ + "add_nutrition_facts" ], - "title" : "Positive points: 2/17" - } + "html" : "Could you add the information needed to compute the Nutri-Score?" + }, + "element_type" : "action" }, { "element_type" : "panel", "panel_element" : { - "panel_id" : "nutriscore_details" + "panel_id" : "nutriscore_description" } } ], "level" : "info", "title_element" : { - "grade" : "c", - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-c-new-en.svg", - "subtitle" : "Average nutritional quality", - "title" : "Nutri-Score C", + "grade" : "unknown", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-unknown-new-en.svg", + "subtitle" : "Missing nutrition facts", + "title" : "Nutri-Score UNKNOWN", "type" : "grade" }, "topics" : [ "health" ] }, - "nutriscore_component_energy" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n Energy intakes above energy requirements are associated with increased risks of weight gain, overweight, obesity, and consequently risk of diet-related chronic diseases.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-1-10.svg", - "subtitle" : "1/10 points (558.75kJ)", - "title" : "Energy" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_fiber" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n Consuming foods rich in fiber (especially whole grain foods) reduces the risks of aerodigestive cancers, cardiovascular diseases, obesity and diabetes.\n \n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-0-5.svg", - "subtitle" : "0/5 points (0.81g)", - "title" : "Fiber" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_fruits_vegetables_legumes" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n Consuming foods rich in fruits, vegetables and legumes reduces the risks of aerodigestive cancers, cardiovascular diseases, obesity and diabetes.\n \n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-2-5.svg", - "subtitle" : "2/5 points (62.5%)", - "title" : "Fruits, vegetables and legumes" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_proteins" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n Foods that are rich in proteins are usually rich in calcium or iron which are essential minerals with numerous health benefits.\n \n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-positive-0-7.svg", - "subtitle" : "0/7 points (1.97g)", - "title" : "Proteins" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_salt" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n A high consumption of salt (or sodium) can cause raised blood pressure, which can increase the risk of heart disease and stroke.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-0-20.svg", - "subtitle" : "0/20 points (0.05g)", - "title" : "Salt" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_saturated_fat" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n A high consumption of fat, especially saturated fats, can raise cholesterol, which increases the risk of heart diseases.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-4-10.svg", - "subtitle" : "4/10 points (4.9g)", - "title" : "Saturated fat" - }, - "topics" : [ - "health" - ] - }, - "nutriscore_component_sugars" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "\n

\n \n A high consumption of sugar can cause weight gain and tooth decay. It also augments the risk of type 2 diabetes and cardio-vascular diseases.\n

\n " - } - } - ], - "level" : "info", - "size" : "small", - "title_element" : { - "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/points-negative-2-15.svg", - "subtitle" : "2/15 points (7.26g)", - "title" : "Sugar" - }, - "topics" : [ - "health" - ] - }, "nutriscore_description" : { "elements" : [ { @@ -1130,40 +1054,6 @@ "health" ] }, - "nutriscore_details" : { - "elements" : [ - { - "element_type" : "text", - "text_element" : { - "html" : "Warning: the nutrition facts are not specified. They have been estimated from the list of ingredients.\n ", - "type" : "warning" - } - }, - { - "element_type" : "text", - "text_element" : { - "html" : "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 62\n ", - "type" : "warning" - } - }, - { - "element_type" : "text", - "text_element" : { - "html" : "\n\n

This product is not considered a beverage for the calculation of the Nutri-Score.

\n\n\n\n\n\n

Points for proteins are counted because the negative points are less than 11.

\n\n

\n Nutritional score: 5\n (7 - 2)\n

\n

Nutri-Score: C

\n " - } - } - ], - "level" : "info", - "title_element" : { - "icon_size" : "small", - "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/info.svg", - "title" : "Details of the calculation of the Nutri-Score", - "type" : "info" - }, - "topics" : [ - "health" - ] - }, "nutrition_facts_table" : { "elements" : [ { @@ -1305,10 +1195,10 @@ "text" : "Fruits‚ vegetables‚ nuts and rapeseed‚ walnut and olive oils (estimate from ingredients list analysis)" }, { - "text" : "62.5 %" + "text" : "58.333 %" }, { - "text" : "62.5 %" + "text" : "58.333 %" } ] } @@ -1560,6 +1450,32 @@ "environment" ] }, + "recommendation_ultra_processed_foods" : { + "elements" : [ + { + "element_type" : "text", + "text_element" : { + "html" : "\n Several studies have found that a high consumption of ultra-processed foods is associated with an increased risk of noncommunicable chronic diseases, such as obesity, hypertension and diabetes.\n ", + "source_language" : "en", + "source_text" : "Ultra-processed foods increase noncommunicable chronic disease risk", + "source_url" : "https://pubmed.ncbi.nlm.nih.gov/34798466/", + "type" : "quote" + } + } + ], + "evaluation" : "bad", + "level" : "recommendation", + "title_element" : { + "evaluation" : "bad", + "icon_color_from_evaluation" : true, + "icon_url" : "http://static.openfoodfacts.localhost/images/icons/dist/arrow-bottom-right-thick.svg", + "subtitle" : "Ultra-processed foods increase noncommunicable chronic disease risk", + "title" : "Limit ultra-processed foods" + }, + "topics" : [ + "health" + ] + }, "report_problem_card" : { "elements" : [ { diff --git a/tests/integration/expected_test_results/api_v3_product_write/patch-request-fields-updated-attribute-groups-knowledge-panels.json b/tests/integration/expected_test_results/api_v3_product_write/patch-request-fields-updated-attribute-groups-knowledge-panels.json index 694c28c58e299..8c926e63a72e0 100644 --- a/tests/integration/expected_test_results/api_v3_product_write/patch-request-fields-updated-attribute-groups-knowledge-panels.json +++ b/tests/integration/expected_test_results/api_v3_product_write/patch-request-fields-updated-attribute-groups-knowledge-panels.json @@ -525,7 +525,7 @@ { "element_type" : "text", "text_element" : { - "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" + "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra-processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" } }, { diff --git a/tests/integration/expected_test_results/data_quality_knowledge_panel/data-quality.json b/tests/integration/expected_test_results/data_quality_knowledge_panel/data-quality.json index 1ebb2ca5d90dd..5062231ee3506 100644 --- a/tests/integration/expected_test_results/data_quality_knowledge_panel/data-quality.json +++ b/tests/integration/expected_test_results/data_quality_knowledge_panel/data-quality.json @@ -566,7 +566,7 @@ { "element_type" : "text", "text_element" : { - "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" + "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra-processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" } } ], diff --git a/tests/integration/expected_test_results/data_quality_knowledge_panel/no-data-quality.json b/tests/integration/expected_test_results/data_quality_knowledge_panel/no-data-quality.json index 4e6f3ce36ddf6..2e9509107faf6 100644 --- a/tests/integration/expected_test_results/data_quality_knowledge_panel/no-data-quality.json +++ b/tests/integration/expected_test_results/data_quality_knowledge_panel/no-data-quality.json @@ -528,7 +528,7 @@ { "element_type" : "text", "text_element" : { - "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" + "html" : "\n

Food products are classified into 4 groups according to their degree of processing:

\n
    \n
  1. Unprocessed or minimally processed foods
  2. \n
  3. Processed culinary ingredients
  4. \n
  5. Processed foods
  6. \n
  7. Ultra-processed foods
  8. \n
\n
\n

The determination of the group is based on the category of the product and on the ingredients it contains.

\n

Learn more about the NOVA classification

\n" } } ], diff --git a/tests/integration/expected_test_results/page_crawler/crawler-access-category-facet-page.html b/tests/integration/expected_test_results/page_crawler/crawler-access-category-facet-page.html index 70c0abae4037c..b8cf76d4dae46 100644 --- a/tests/integration/expected_test_results/page_crawler/crawler-access-category-facet-page.html +++ b/tests/integration/expected_test_results/page_crawler/crawler-access-category-facet-page.html @@ -936,8 +936,6 @@

Discover the project

{ "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -945,7 +943,7 @@

Discover the project

"name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"a", diff --git a/tests/integration/expected_test_results/page_crawler/crawler-access-product-page.html b/tests/integration/expected_test_results/page_crawler/crawler-access-product-page.html index 6d35aff61bcf2..456f76a9d1968 100644 --- a/tests/integration/expected_test_results/page_crawler/crawler-access-product-page.html +++ b/tests/integration/expected_test_results/page_crawler/crawler-access-product-page.html @@ -1422,7 +1422,7 @@

Food processing

  • Unprocessed or minimally processed foods
  • Processed culinary ingredients
  • Processed foods
  • -
  • Ultra processed foods
  • +
  • Ultra-processed foods

  • The determination of the group is based on the category of the product and on the ingredients it contains.

    @@ -3810,7 +3810,7 @@

    Discover the project

    var page_type = "product"; var default_preferences = {"ecoscore":"important","nova":"important","nutriscore":"very_important"}; var preferences_text = "Classify products according to your preferences"; -var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Missing data to compute the Nutri-Score","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-unknown-new-en.svg","id":"nutriscore","match":0,"name":"Nutri-Score","panel_id":"nutriscore_2023","status":"unknown","title":"Nutri-Score unknown"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Missing nutrition facts","name":"Salt","status":"unknown","title":"Salt in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Missing nutrition facts","name":"Fat","status":"unknown","title":"Fat in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Missing nutrition facts","name":"Sugars","status":"unknown","title":"Sugars in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Missing nutrition facts","name":"Saturated fat","status":"unknown","title":"Saturated fat in unknown quantity"}],"id":"nutritional_quality","name":"Nutritional quality"},{"attributes":[{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/gluten-content-unknown.svg","id":"allergens_no_gluten","name":"Gluten","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Gluten"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/milk-content-unknown.svg","id":"allergens_no_milk","name":"Milk","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Milk"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/eggs-content-unknown.svg","id":"allergens_no_eggs","name":"Eggs","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Eggs"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nuts-content-unknown.svg","id":"allergens_no_nuts","name":"Nuts","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Nuts"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/peanuts-content-unknown.svg","id":"allergens_no_peanuts","name":"Peanuts","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Peanuts"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/sesame-seeds-content-unknown.svg","id":"allergens_no_sesame_seeds","name":"Sesame seeds","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Sesame seeds"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/soybeans-content-unknown.svg","id":"allergens_no_soybeans","name":"Soybeans","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Soybeans"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/celery-content-unknown.svg","id":"allergens_no_celery","name":"Celery","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Celery"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/mustard-content-unknown.svg","id":"allergens_no_mustard","name":"Mustard","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Mustard"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/lupin-content-unknown.svg","id":"allergens_no_lupin","name":"Lupin","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Lupin"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fish-content-unknown.svg","id":"allergens_no_fish","name":"Fish","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Fish"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/crustaceans-content-unknown.svg","id":"allergens_no_crustaceans","name":"Crustaceans","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Crustaceans"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/molluscs-content-unknown.svg","id":"allergens_no_molluscs","name":"Molluscs","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Molluscs"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/sulphur-dioxide-and-sulphites-content-unknown.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","name":"Sulphur dioxide and sulphites","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Sulphur dioxide and sulphites"}],"id":"allergens","name":"Allergens","warning":"There is always a possibility that data about allergens may be missing, incomplete, incorrect or that the product's composition has changed. If you are allergic, always check the information on the actual product packaging."},{"attributes":[{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegan-status-unknown.svg","id":"vegan","name":"Vegan","panel_id":"ingredients_analysis_en:vegan-status-unknown","status":"unknown","title":"Vegan status unknown"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian-status-unknown.svg","id":"vegetarian","name":"Vegetarian","panel_id":"ingredients_analysis_en:vegetarian-status-unknown","status":"unknown","title":"Vegetarian status unknown"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/palm-oil-content-unknown.svg","id":"palm_oil_free","name":"Palm oil free","panel_id":"ingredients_analysis_en:palm-oil-content-unknown","status":"unknown","title":"Palm oil content unknown"}],"id":"ingredients_analysis","name":"Ingredients"},{"attributes":[{"description":"","description_short":"Processed foods","grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"NOVA group","panel_id":"nova","status":"known","title":"NOVA 3"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/0-additives.svg","id":"additives","match":100,"name":"Additives","panel_id":"additives","status":"known","title":"Without additives"}],"id":"processing","name":"Food processing"},{"attributes":[{"description":"","description_short":"High environmental impact","grade":"d","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-d.svg","id":"ecoscore","match":31,"name":"Eco-Score","panel_id":"ecoscore","status":"known","title":"Eco-Score D"},{"description":"","description_short":"Currently only for products with chicken or eggs","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-not-computed.svg","id":"forest_footprint","match":0,"name":"Forest footprint","status":"known","title":"Forest footprint not computed"}],"id":"environment","name":"Environment"},{"attributes":[{"description":"Organic farming aims to protect the environment and to conserve biodiversity by prohibiting or limiting the use of synthetic fertilizers, pesticides and food additives.","description_short":"Organic products promote ecological sustainability and biodiversity.","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/organic-unknown.svg","id":"labels_organic","name":"Organic farming","status":"unknown","title":"Missing information: organic product?"},{"description":"When you buy fair trade products, producers in developing countries are paid an higher and fairer price, which helps them improve and sustain higher social and often environmental standards.","description_short":"Fair trade products help producers in developing countries.","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fair-trade-unknown.svg","id":"labels_fair_trade","name":"Fair trade","status":"unknown","title":"Missing information: fair trade product?"}],"id":"labels","name":"Labels"}]}; +var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Missing data to compute the Nutri-Score","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-unknown-new-en.svg","id":"nutriscore","match":0,"name":"Nutri-Score","panel_id":"nutriscore_2023","status":"unknown","title":"Nutri-Score unknown"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Missing nutrition facts","name":"Salt","status":"unknown","title":"Salt in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Missing nutrition facts","name":"Fat","status":"unknown","title":"Fat in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Missing nutrition facts","name":"Sugars","status":"unknown","title":"Sugars in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Missing nutrition facts","name":"Saturated fat","status":"unknown","title":"Saturated fat in unknown quantity"}],"id":"nutritional_quality","name":"Nutritional quality"},{"attributes":[{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/gluten-content-unknown.svg","id":"allergens_no_gluten","name":"Gluten","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Gluten"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/milk-content-unknown.svg","id":"allergens_no_milk","name":"Milk","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Milk"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/eggs-content-unknown.svg","id":"allergens_no_eggs","name":"Eggs","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Eggs"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nuts-content-unknown.svg","id":"allergens_no_nuts","name":"Nuts","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Nuts"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/peanuts-content-unknown.svg","id":"allergens_no_peanuts","name":"Peanuts","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Peanuts"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/sesame-seeds-content-unknown.svg","id":"allergens_no_sesame_seeds","name":"Sesame seeds","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Sesame seeds"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/soybeans-content-unknown.svg","id":"allergens_no_soybeans","name":"Soybeans","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Soybeans"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/celery-content-unknown.svg","id":"allergens_no_celery","name":"Celery","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Celery"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/mustard-content-unknown.svg","id":"allergens_no_mustard","name":"Mustard","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Mustard"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/lupin-content-unknown.svg","id":"allergens_no_lupin","name":"Lupin","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Lupin"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fish-content-unknown.svg","id":"allergens_no_fish","name":"Fish","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Fish"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/crustaceans-content-unknown.svg","id":"allergens_no_crustaceans","name":"Crustaceans","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Crustaceans"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/molluscs-content-unknown.svg","id":"allergens_no_molluscs","name":"Molluscs","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Molluscs"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/sulphur-dioxide-and-sulphites-content-unknown.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","name":"Sulphur dioxide and sulphites","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Sulphur dioxide and sulphites"}],"id":"allergens","name":"Allergens","warning":"There is always a possibility that data about allergens may be missing, incomplete, incorrect or that the product's composition has changed. If you are allergic, always check the information on the actual product packaging."},{"attributes":[{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegan-status-unknown.svg","id":"vegan","name":"Vegan","panel_id":"ingredients_analysis_en:vegan-status-unknown","status":"unknown","title":"Vegan status unknown"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian-status-unknown.svg","id":"vegetarian","name":"Vegetarian","panel_id":"ingredients_analysis_en:vegetarian-status-unknown","status":"unknown","title":"Vegetarian status unknown"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/palm-oil-content-unknown.svg","id":"palm_oil_free","name":"Palm oil free","panel_id":"ingredients_analysis_en:palm-oil-content-unknown","status":"unknown","title":"Palm oil content unknown"}],"id":"ingredients_analysis","name":"Ingredients"},{"attributes":[{"grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"NOVA group","panel_id":"nova","status":"known","title":"Processed foods"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/0-additives.svg","id":"additives","match":100,"name":"Additives","panel_id":"additives","status":"known","title":"Without additives"}],"id":"processing","name":"Food processing"},{"attributes":[{"description":"","description_short":"High environmental impact","grade":"d","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-d.svg","id":"ecoscore","match":31,"name":"Eco-Score","panel_id":"ecoscore","status":"known","title":"Eco-Score D"},{"description":"","description_short":"Currently only for products with chicken or eggs","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-not-computed.svg","id":"forest_footprint","match":0,"name":"Forest footprint","status":"known","title":"Forest footprint not computed"}],"id":"environment","name":"Environment"},{"attributes":[{"description":"Organic farming aims to protect the environment and to conserve biodiversity by prohibiting or limiting the use of synthetic fertilizers, pesticides and food additives.","description_short":"Organic products promote ecological sustainability and biodiversity.","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/organic-unknown.svg","id":"labels_organic","name":"Organic farming","status":"unknown","title":"Missing information: organic product?"},{"description":"When you buy fair trade products, producers in developing countries are paid an higher and fairer price, which helps them improve and sustain higher social and often environmental standards.","description_short":"Fair trade products help producers in developing countries.","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fair-trade-unknown.svg","id":"labels_fair_trade","name":"Fair trade","status":"unknown","title":"Missing information: fair trade product?"}],"id":"labels","name":"Labels"}]}; diff --git a/tests/integration/expected_test_results/page_crawler/crawler-does-not-get-facet-knowledge-panels.html b/tests/integration/expected_test_results/page_crawler/crawler-does-not-get-facet-knowledge-panels.html index 9ab97a5769692..c6e235be61566 100644 --- a/tests/integration/expected_test_results/page_crawler/crawler-does-not-get-facet-knowledge-panels.html +++ b/tests/integration/expected_test_results/page_crawler/crawler-does-not-get-facet-knowledge-panels.html @@ -999,8 +999,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -1008,7 +1006,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"a", diff --git a/tests/integration/expected_test_results/page_crawler/normal-user-access-category-facet-page.html b/tests/integration/expected_test_results/page_crawler/normal-user-access-category-facet-page.html index 5e7908dc8d543..25af522c9273f 100644 --- a/tests/integration/expected_test_results/page_crawler/normal-user-access-category-facet-page.html +++ b/tests/integration/expected_test_results/page_crawler/normal-user-access-category-facet-page.html @@ -977,8 +977,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -986,7 +984,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"a", diff --git a/tests/integration/expected_test_results/page_crawler/normal-user-access-nested-facet-page.html b/tests/integration/expected_test_results/page_crawler/normal-user-access-nested-facet-page.html index 2f03a62fba360..f6c7763ef7c4c 100644 --- a/tests/integration/expected_test_results/page_crawler/normal-user-access-nested-facet-page.html +++ b/tests/integration/expected_test_results/page_crawler/normal-user-access-nested-facet-page.html @@ -972,8 +972,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -981,7 +979,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"a", diff --git a/tests/integration/expected_test_results/page_crawler/normal-user-access-product-page.html b/tests/integration/expected_test_results/page_crawler/normal-user-access-product-page.html index 6d35aff61bcf2..456f76a9d1968 100644 --- a/tests/integration/expected_test_results/page_crawler/normal-user-access-product-page.html +++ b/tests/integration/expected_test_results/page_crawler/normal-user-access-product-page.html @@ -1422,7 +1422,7 @@

    Food processing

  • Unprocessed or minimally processed foods
  • Processed culinary ingredients
  • Processed foods
  • -
  • Ultra processed foods
  • +
  • Ultra-processed foods

  • The determination of the group is based on the category of the product and on the ingredients it contains.

    @@ -3810,7 +3810,7 @@

    Discover the project

    var page_type = "product"; var default_preferences = {"ecoscore":"important","nova":"important","nutriscore":"very_important"}; var preferences_text = "Classify products according to your preferences"; -var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Missing data to compute the Nutri-Score","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-unknown-new-en.svg","id":"nutriscore","match":0,"name":"Nutri-Score","panel_id":"nutriscore_2023","status":"unknown","title":"Nutri-Score unknown"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Missing nutrition facts","name":"Salt","status":"unknown","title":"Salt in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Missing nutrition facts","name":"Fat","status":"unknown","title":"Fat in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Missing nutrition facts","name":"Sugars","status":"unknown","title":"Sugars in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Missing nutrition facts","name":"Saturated fat","status":"unknown","title":"Saturated fat in unknown quantity"}],"id":"nutritional_quality","name":"Nutritional quality"},{"attributes":[{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/gluten-content-unknown.svg","id":"allergens_no_gluten","name":"Gluten","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Gluten"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/milk-content-unknown.svg","id":"allergens_no_milk","name":"Milk","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Milk"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/eggs-content-unknown.svg","id":"allergens_no_eggs","name":"Eggs","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Eggs"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nuts-content-unknown.svg","id":"allergens_no_nuts","name":"Nuts","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Nuts"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/peanuts-content-unknown.svg","id":"allergens_no_peanuts","name":"Peanuts","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Peanuts"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/sesame-seeds-content-unknown.svg","id":"allergens_no_sesame_seeds","name":"Sesame seeds","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Sesame seeds"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/soybeans-content-unknown.svg","id":"allergens_no_soybeans","name":"Soybeans","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Soybeans"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/celery-content-unknown.svg","id":"allergens_no_celery","name":"Celery","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Celery"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/mustard-content-unknown.svg","id":"allergens_no_mustard","name":"Mustard","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Mustard"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/lupin-content-unknown.svg","id":"allergens_no_lupin","name":"Lupin","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Lupin"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fish-content-unknown.svg","id":"allergens_no_fish","name":"Fish","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Fish"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/crustaceans-content-unknown.svg","id":"allergens_no_crustaceans","name":"Crustaceans","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Crustaceans"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/molluscs-content-unknown.svg","id":"allergens_no_molluscs","name":"Molluscs","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Molluscs"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/sulphur-dioxide-and-sulphites-content-unknown.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","name":"Sulphur dioxide and sulphites","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Sulphur dioxide and sulphites"}],"id":"allergens","name":"Allergens","warning":"There is always a possibility that data about allergens may be missing, incomplete, incorrect or that the product's composition has changed. If you are allergic, always check the information on the actual product packaging."},{"attributes":[{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegan-status-unknown.svg","id":"vegan","name":"Vegan","panel_id":"ingredients_analysis_en:vegan-status-unknown","status":"unknown","title":"Vegan status unknown"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian-status-unknown.svg","id":"vegetarian","name":"Vegetarian","panel_id":"ingredients_analysis_en:vegetarian-status-unknown","status":"unknown","title":"Vegetarian status unknown"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/palm-oil-content-unknown.svg","id":"palm_oil_free","name":"Palm oil free","panel_id":"ingredients_analysis_en:palm-oil-content-unknown","status":"unknown","title":"Palm oil content unknown"}],"id":"ingredients_analysis","name":"Ingredients"},{"attributes":[{"description":"","description_short":"Processed foods","grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"NOVA group","panel_id":"nova","status":"known","title":"NOVA 3"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/0-additives.svg","id":"additives","match":100,"name":"Additives","panel_id":"additives","status":"known","title":"Without additives"}],"id":"processing","name":"Food processing"},{"attributes":[{"description":"","description_short":"High environmental impact","grade":"d","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-d.svg","id":"ecoscore","match":31,"name":"Eco-Score","panel_id":"ecoscore","status":"known","title":"Eco-Score D"},{"description":"","description_short":"Currently only for products with chicken or eggs","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-not-computed.svg","id":"forest_footprint","match":0,"name":"Forest footprint","status":"known","title":"Forest footprint not computed"}],"id":"environment","name":"Environment"},{"attributes":[{"description":"Organic farming aims to protect the environment and to conserve biodiversity by prohibiting or limiting the use of synthetic fertilizers, pesticides and food additives.","description_short":"Organic products promote ecological sustainability and biodiversity.","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/organic-unknown.svg","id":"labels_organic","name":"Organic farming","status":"unknown","title":"Missing information: organic product?"},{"description":"When you buy fair trade products, producers in developing countries are paid an higher and fairer price, which helps them improve and sustain higher social and often environmental standards.","description_short":"Fair trade products help producers in developing countries.","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fair-trade-unknown.svg","id":"labels_fair_trade","name":"Fair trade","status":"unknown","title":"Missing information: fair trade product?"}],"id":"labels","name":"Labels"}]}; +var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Missing data to compute the Nutri-Score","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-unknown-new-en.svg","id":"nutriscore","match":0,"name":"Nutri-Score","panel_id":"nutriscore_2023","status":"unknown","title":"Nutri-Score unknown"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Missing nutrition facts","name":"Salt","status":"unknown","title":"Salt in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Missing nutrition facts","name":"Fat","status":"unknown","title":"Fat in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Missing nutrition facts","name":"Sugars","status":"unknown","title":"Sugars in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Missing nutrition facts","name":"Saturated fat","status":"unknown","title":"Saturated fat in unknown quantity"}],"id":"nutritional_quality","name":"Nutritional quality"},{"attributes":[{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/gluten-content-unknown.svg","id":"allergens_no_gluten","name":"Gluten","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Gluten"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/milk-content-unknown.svg","id":"allergens_no_milk","name":"Milk","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Milk"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/eggs-content-unknown.svg","id":"allergens_no_eggs","name":"Eggs","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Eggs"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nuts-content-unknown.svg","id":"allergens_no_nuts","name":"Nuts","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Nuts"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/peanuts-content-unknown.svg","id":"allergens_no_peanuts","name":"Peanuts","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Peanuts"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/sesame-seeds-content-unknown.svg","id":"allergens_no_sesame_seeds","name":"Sesame seeds","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Sesame seeds"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/soybeans-content-unknown.svg","id":"allergens_no_soybeans","name":"Soybeans","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Soybeans"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/celery-content-unknown.svg","id":"allergens_no_celery","name":"Celery","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Celery"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/mustard-content-unknown.svg","id":"allergens_no_mustard","name":"Mustard","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Mustard"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/lupin-content-unknown.svg","id":"allergens_no_lupin","name":"Lupin","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Lupin"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fish-content-unknown.svg","id":"allergens_no_fish","name":"Fish","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Fish"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/crustaceans-content-unknown.svg","id":"allergens_no_crustaceans","name":"Crustaceans","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Crustaceans"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/molluscs-content-unknown.svg","id":"allergens_no_molluscs","name":"Molluscs","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Molluscs"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/sulphur-dioxide-and-sulphites-content-unknown.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","name":"Sulphur dioxide and sulphites","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Sulphur dioxide and sulphites"}],"id":"allergens","name":"Allergens","warning":"There is always a possibility that data about allergens may be missing, incomplete, incorrect or that the product's composition has changed. If you are allergic, always check the information on the actual product packaging."},{"attributes":[{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegan-status-unknown.svg","id":"vegan","name":"Vegan","panel_id":"ingredients_analysis_en:vegan-status-unknown","status":"unknown","title":"Vegan status unknown"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian-status-unknown.svg","id":"vegetarian","name":"Vegetarian","panel_id":"ingredients_analysis_en:vegetarian-status-unknown","status":"unknown","title":"Vegetarian status unknown"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/palm-oil-content-unknown.svg","id":"palm_oil_free","name":"Palm oil free","panel_id":"ingredients_analysis_en:palm-oil-content-unknown","status":"unknown","title":"Palm oil content unknown"}],"id":"ingredients_analysis","name":"Ingredients"},{"attributes":[{"grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"NOVA group","panel_id":"nova","status":"known","title":"Processed foods"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/0-additives.svg","id":"additives","match":100,"name":"Additives","panel_id":"additives","status":"known","title":"Without additives"}],"id":"processing","name":"Food processing"},{"attributes":[{"description":"","description_short":"High environmental impact","grade":"d","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-d.svg","id":"ecoscore","match":31,"name":"Eco-Score","panel_id":"ecoscore","status":"known","title":"Eco-Score D"},{"description":"","description_short":"Currently only for products with chicken or eggs","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-not-computed.svg","id":"forest_footprint","match":0,"name":"Forest footprint","status":"known","title":"Forest footprint not computed"}],"id":"environment","name":"Environment"},{"attributes":[{"description":"Organic farming aims to protect the environment and to conserve biodiversity by prohibiting or limiting the use of synthetic fertilizers, pesticides and food additives.","description_short":"Organic products promote ecological sustainability and biodiversity.","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/organic-unknown.svg","id":"labels_organic","name":"Organic farming","status":"unknown","title":"Missing information: organic product?"},{"description":"When you buy fair trade products, producers in developing countries are paid an higher and fairer price, which helps them improve and sustain higher social and often environmental standards.","description_short":"Fair trade products help producers in developing countries.","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fair-trade-unknown.svg","id":"labels_fair_trade","name":"Fair trade","status":"unknown","title":"Missing information: fair trade product?"}],"id":"labels","name":"Labels"}]}; diff --git a/tests/integration/expected_test_results/page_crawler/normal-user-get-facet-knowledge-panels.html b/tests/integration/expected_test_results/page_crawler/normal-user-get-facet-knowledge-panels.html index f06b39dced36d..3bcabcbe3b37b 100644 --- a/tests/integration/expected_test_results/page_crawler/normal-user-get-facet-knowledge-panels.html +++ b/tests/integration/expected_test_results/page_crawler/normal-user-get-facet-knowledge-panels.html @@ -1040,8 +1040,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -1049,7 +1047,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"a", diff --git a/tests/integration/expected_test_results/product_read/get-existing-product.html b/tests/integration/expected_test_results/product_read/get-existing-product.html index 580100666e95f..c766bcc02d8e1 100644 --- a/tests/integration/expected_test_results/product_read/get-existing-product.html +++ b/tests/integration/expected_test_results/product_read/get-existing-product.html @@ -2102,7 +2102,7 @@

    Food processing

  • Unprocessed or minimally processed foods
  • Processed culinary ingredients
  • Processed foods
  • -
  • Ultra processed foods
  • +
  • Ultra-processed foods

  • The determination of the group is based on the category of the product and on the ingredients it contains.

    @@ -4986,7 +4986,7 @@

    Discover the project

    var page_type = "product"; var default_preferences = {"ecoscore":"important","nova":"important","nutriscore":"very_important"}; var preferences_text = "Classify products according to your preferences"; -var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Average nutritional quality","grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-c-new-en.svg","id":"nutriscore","match":53.6666666666667,"name":"Nutri-Score","panel_id":"nutriscore_2023","status":"known","title":"Nutri-Score C"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Missing nutrition facts","name":"Salt","status":"unknown","title":"Salt in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Missing nutrition facts","name":"Fat","status":"unknown","title":"Fat in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Missing nutrition facts","name":"Sugars","status":"unknown","title":"Sugars in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Missing nutrition facts","name":"Saturated fat","status":"unknown","title":"Saturated fat in unknown quantity"}],"id":"nutritional_quality","name":"Nutritional quality"},{"attributes":[{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-gluten.svg","id":"allergens_no_gluten","match":100,"name":"Gluten","status":"known","title":"Does not contain: Gluten"},{"debug":"en:milk in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-milk.svg","id":"allergens_no_milk","match":0,"name":"Milk","status":"known","title":"Contains: Milk"},{"debug":"en:eggs in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-eggs.svg","id":"allergens_no_eggs","match":0,"name":"Eggs","status":"known","title":"Contains: Eggs"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg","id":"allergens_no_nuts","match":100,"name":"Nuts","status":"known","title":"Does not contain: Nuts"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg","id":"allergens_no_peanuts","match":100,"name":"Peanuts","status":"known","title":"Does not contain: Peanuts"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg","id":"allergens_no_sesame_seeds","match":100,"name":"Sesame seeds","status":"known","title":"Does not contain: Sesame seeds"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg","id":"allergens_no_soybeans","match":100,"name":"Soybeans","status":"known","title":"Does not contain: Soybeans"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg","id":"allergens_no_celery","match":100,"name":"Celery","status":"known","title":"Does not contain: Celery"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg","id":"allergens_no_mustard","match":100,"name":"Mustard","status":"known","title":"Does not contain: Mustard"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg","id":"allergens_no_lupin","match":100,"name":"Lupin","status":"known","title":"Does not contain: Lupin"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg","id":"allergens_no_fish","match":100,"name":"Fish","status":"known","title":"Does not contain: Fish"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg","id":"allergens_no_crustaceans","match":100,"name":"Crustaceans","status":"known","title":"Does not contain: Crustaceans"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg","id":"allergens_no_molluscs","match":100,"name":"Molluscs","status":"known","title":"Does not contain: Molluscs"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","match":100,"name":"Sulphur dioxide and sulphites","status":"known","title":"Does not contain: Sulphur dioxide and sulphites"}],"id":"allergens","name":"Allergens","warning":"There is always a possibility that data about allergens may be missing, incomplete, incorrect or that the product's composition has changed. If you are allergic, always check the information on the actual product packaging."},{"attributes":[{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/non-vegan.svg","id":"vegan","match":0,"name":"Vegan","panel_id":"ingredients_analysis_en:non-vegan","status":"known","title":"Non-vegan"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian.svg","id":"vegetarian","match":100,"name":"Vegetarian","panel_id":"ingredients_analysis_en:vegetarian","status":"known","title":"Vegetarian"},{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-palm-oil.svg","id":"palm_oil_free","match":0,"name":"Palm oil free","panel_id":"ingredients_analysis_en:palm-oil","status":"known","title":"Palm oil"}],"id":"ingredients_analysis","name":"Ingredients"},{"attributes":[{"description":"","description_short":"Processed foods","grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"NOVA group","panel_id":"nova","status":"known","title":"NOVA 3"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/0-additives.svg","id":"additives","match":100,"name":"Additives","panel_id":"additives","status":"known","title":"Without additives"}],"id":"processing","name":"Food processing"},{"attributes":[{"description":"","description_short":"Moderate environmental impact","grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg","id":"ecoscore","match":47,"name":"Eco-Score","panel_id":"ecoscore","status":"known","title":"Eco-Score C"},{"description":"","description_short":"Almost no risk of deforestation","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg","id":"forest_footprint","match":99.9416666666667,"name":"Forest footprint","status":"known","title":"Very small forest footprint"}],"id":"environment","name":"Environment"},{"attributes":[{"description":"Organic farming aims to protect the environment and to conserve biodiversity by prohibiting or limiting the use of synthetic fertilizers, pesticides and food additives.","description_short":"Promotes ecological sustainability and biodiversity.","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/organic.svg","id":"labels_organic","match":100,"name":"Organic farming","status":"known","title":"Organic product"},{"description":"When you buy fair trade products, producers in developing countries are paid an higher and fairer price, which helps them improve and sustain higher social and often environmental standards.","description_short":"Fair trade products help producers in developing countries.","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/not-fair-trade.svg","id":"labels_fair_trade","match":0,"name":"Fair trade","status":"known","title":"Not a fair trade product"}],"id":"labels","name":"Labels"}]}; +var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Average nutritional quality","grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-c-new-en.svg","id":"nutriscore","match":53.6666666666667,"name":"Nutri-Score","panel_id":"nutriscore_2023","status":"known","title":"Nutri-Score C"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Missing nutrition facts","name":"Salt","status":"unknown","title":"Salt in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Missing nutrition facts","name":"Fat","status":"unknown","title":"Fat in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Missing nutrition facts","name":"Sugars","status":"unknown","title":"Sugars in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Missing nutrition facts","name":"Saturated fat","status":"unknown","title":"Saturated fat in unknown quantity"}],"id":"nutritional_quality","name":"Nutritional quality"},{"attributes":[{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-gluten.svg","id":"allergens_no_gluten","match":100,"name":"Gluten","status":"known","title":"Does not contain: Gluten"},{"debug":"en:milk in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-milk.svg","id":"allergens_no_milk","match":0,"name":"Milk","status":"known","title":"Contains: Milk"},{"debug":"en:eggs in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-eggs.svg","id":"allergens_no_eggs","match":0,"name":"Eggs","status":"known","title":"Contains: Eggs"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg","id":"allergens_no_nuts","match":100,"name":"Nuts","status":"known","title":"Does not contain: Nuts"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg","id":"allergens_no_peanuts","match":100,"name":"Peanuts","status":"known","title":"Does not contain: Peanuts"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg","id":"allergens_no_sesame_seeds","match":100,"name":"Sesame seeds","status":"known","title":"Does not contain: Sesame seeds"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg","id":"allergens_no_soybeans","match":100,"name":"Soybeans","status":"known","title":"Does not contain: Soybeans"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg","id":"allergens_no_celery","match":100,"name":"Celery","status":"known","title":"Does not contain: Celery"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg","id":"allergens_no_mustard","match":100,"name":"Mustard","status":"known","title":"Does not contain: Mustard"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg","id":"allergens_no_lupin","match":100,"name":"Lupin","status":"known","title":"Does not contain: Lupin"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg","id":"allergens_no_fish","match":100,"name":"Fish","status":"known","title":"Does not contain: Fish"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg","id":"allergens_no_crustaceans","match":100,"name":"Crustaceans","status":"known","title":"Does not contain: Crustaceans"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg","id":"allergens_no_molluscs","match":100,"name":"Molluscs","status":"known","title":"Does not contain: Molluscs"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","match":100,"name":"Sulphur dioxide and sulphites","status":"known","title":"Does not contain: Sulphur dioxide and sulphites"}],"id":"allergens","name":"Allergens","warning":"There is always a possibility that data about allergens may be missing, incomplete, incorrect or that the product's composition has changed. If you are allergic, always check the information on the actual product packaging."},{"attributes":[{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/non-vegan.svg","id":"vegan","match":0,"name":"Vegan","panel_id":"ingredients_analysis_en:non-vegan","status":"known","title":"Non-vegan"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian.svg","id":"vegetarian","match":100,"name":"Vegetarian","panel_id":"ingredients_analysis_en:vegetarian","status":"known","title":"Vegetarian"},{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-palm-oil.svg","id":"palm_oil_free","match":0,"name":"Palm oil free","panel_id":"ingredients_analysis_en:palm-oil","status":"known","title":"Palm oil"}],"id":"ingredients_analysis","name":"Ingredients"},{"attributes":[{"grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"NOVA group","panel_id":"nova","status":"known","title":"Processed foods"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/0-additives.svg","id":"additives","match":100,"name":"Additives","panel_id":"additives","status":"known","title":"Without additives"}],"id":"processing","name":"Food processing"},{"attributes":[{"description":"","description_short":"Moderate environmental impact","grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg","id":"ecoscore","match":47,"name":"Eco-Score","panel_id":"ecoscore","status":"known","title":"Eco-Score C"},{"description":"","description_short":"Almost no risk of deforestation","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg","id":"forest_footprint","match":99.9416666666667,"name":"Forest footprint","status":"known","title":"Very small forest footprint"}],"id":"environment","name":"Environment"},{"attributes":[{"description":"Organic farming aims to protect the environment and to conserve biodiversity by prohibiting or limiting the use of synthetic fertilizers, pesticides and food additives.","description_short":"Promotes ecological sustainability and biodiversity.","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/organic.svg","id":"labels_organic","match":100,"name":"Organic farming","status":"known","title":"Organic product"},{"description":"When you buy fair trade products, producers in developing countries are paid an higher and fairer price, which helps them improve and sustain higher social and often environmental standards.","description_short":"Fair trade products help producers in developing countries.","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/not-fair-trade.svg","id":"labels_fair_trade","match":0,"name":"Fair trade","status":"known","title":"Not a fair trade product"}],"id":"labels","name":"Labels"}]}; diff --git a/tests/integration/expected_test_results/unknown_tags/country-france-exists.html b/tests/integration/expected_test_results/unknown_tags/country-france-exists.html index febe8a334ee31..b0398d0af1912 100644 --- a/tests/integration/expected_test_results/unknown_tags/country-france-exists.html +++ b/tests/integration/expected_test_results/unknown_tags/country-france-exists.html @@ -968,8 +968,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Unprocessed or minimally processed foods", "grade":"a", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-1.svg", "id":"nova", @@ -977,7 +975,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 1" + "title":"Unprocessed or minimally processed foods" }, { "grade":"a", diff --git a/tests/integration/expected_test_results/unknown_tags/ingredient-apple-exists.html b/tests/integration/expected_test_results/unknown_tags/ingredient-apple-exists.html index 4b4339e3863bb..0cd32507815f7 100644 --- a/tests/integration/expected_test_results/unknown_tags/ingredient-apple-exists.html +++ b/tests/integration/expected_test_results/unknown_tags/ingredient-apple-exists.html @@ -1029,8 +1029,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Unprocessed or minimally processed foods", "grade":"a", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-1.svg", "id":"nova", @@ -1038,7 +1036,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 1" + "title":"Unprocessed or minimally processed foods" }, { "grade":"a", diff --git a/tests/integration/expected_test_results/unknown_tags/ingredient-someunknowningredient-does-not-exist-but-not-empty.html b/tests/integration/expected_test_results/unknown_tags/ingredient-someunknowningredient-does-not-exist-but-not-empty.html index d54a3c5128905..9282fe9f19559 100644 --- a/tests/integration/expected_test_results/unknown_tags/ingredient-someunknowningredient-does-not-exist-but-not-empty.html +++ b/tests/integration/expected_test_results/unknown_tags/ingredient-someunknowningredient-does-not-exist-but-not-empty.html @@ -968,8 +968,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Unprocessed or minimally processed foods", "grade":"a", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-1.svg", "id":"nova", @@ -977,7 +975,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 1" + "title":"Unprocessed or minimally processed foods" }, { "grade":"a", diff --git a/tests/integration/expected_test_results/web_html/fr-categories.html b/tests/integration/expected_test_results/web_html/fr-categories.html index 0ac6af779d0f0..6e09ee5471b75 100644 --- a/tests/integration/expected_test_results/web_html/fr-categories.html +++ b/tests/integration/expected_test_results/web_html/fr-categories.html @@ -1064,8 +1064,6 @@

    Découvrez le projet

    { "attributes":[ { - "description":"", - "description_short":"Aliments transformés", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -1073,7 +1071,7 @@

    Découvrez le projet

    "name":"Groupe NOVA", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Aliments transformés" }, { "grade":"c", @@ -1394,8 +1392,6 @@

    Découvrez le projet

    { "attributes":[ { - "description":"", - "description_short":"Aliments transformés", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -1403,7 +1399,7 @@

    Découvrez le projet

    "name":"Groupe NOVA", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Aliments transformés" }, { "grade":"c", @@ -1723,8 +1719,6 @@

    Découvrez le projet

    { "attributes":[ { - "description":"", - "description_short":"Aliments transformés", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -1732,7 +1726,7 @@

    Découvrez le projet

    "name":"Groupe NOVA", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Aliments transformés" }, { "grade":"a", diff --git a/tests/integration/expected_test_results/web_html/fr-index.html b/tests/integration/expected_test_results/web_html/fr-index.html index 35b86483b93ff..a69336d5758d6 100644 --- a/tests/integration/expected_test_results/web_html/fr-index.html +++ b/tests/integration/expected_test_results/web_html/fr-index.html @@ -1054,8 +1054,6 @@

    Découvrez le projet

    { "attributes":[ { - "description":"", - "description_short":"Aliments transformés", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -1063,7 +1061,7 @@

    Découvrez le projet

    "name":"Groupe NOVA", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Aliments transformés" }, { "grade":"c", @@ -1383,8 +1381,6 @@

    Découvrez le projet

    { "attributes":[ { - "description":"", - "description_short":"Aliments ultra-transformés", "grade":"e", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", "id":"nova", @@ -1392,7 +1388,7 @@

    Découvrez le projet

    "name":"Groupe NOVA", "panel_id":"nova", "status":"known", - "title":"NOVA 4" + "title":"Aliments ultra-transformés" }, { "grade":"b", @@ -1712,8 +1708,6 @@

    Découvrez le projet

    { "attributes":[ { - "description":"", - "description_short":"Aliments non transformés ou minimalement transformés", "grade":"a", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-1.svg", "id":"nova", @@ -1721,7 +1715,7 @@

    Découvrez le projet

    "name":"Groupe NOVA", "panel_id":"nova", "status":"known", - "title":"NOVA 1" + "title":"Aliments non transformés ou minimalement transformés" }, { "grade":"a", @@ -2041,8 +2035,6 @@

    Découvrez le projet

    { "attributes":[ { - "description":"", - "description_short":"Aliments non transformés ou minimalement transformés", "grade":"a", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-1.svg", "id":"nova", @@ -2050,7 +2042,7 @@

    Découvrez le projet

    "name":"Groupe NOVA", "panel_id":"nova", "status":"known", - "title":"NOVA 1" + "title":"Aliments non transformés ou minimalement transformés" }, { "grade":"a", @@ -2370,8 +2362,6 @@

    Découvrez le projet

    { "attributes":[ { - "description":"", - "description_short":"Aliments transformés", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -2379,7 +2369,7 @@

    Découvrez le projet

    "name":"Groupe NOVA", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Aliments transformés" }, { "grade":"a", @@ -2699,8 +2689,6 @@

    Découvrez le projet

    { "attributes":[ { - "description":"", - "description_short":"Aliments transformés", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -2708,7 +2696,7 @@

    Découvrez le projet

    "name":"Groupe NOVA", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Aliments transformés" }, { "grade":"a", @@ -3028,8 +3016,6 @@

    Découvrez le projet

    { "attributes":[ { - "description":"", - "description_short":"Aliments transformés", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -3037,7 +3023,7 @@

    Découvrez le projet

    "name":"Groupe NOVA", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Aliments transformés" }, { "grade":"c", diff --git a/tests/integration/expected_test_results/web_html/fr-product-2.html b/tests/integration/expected_test_results/web_html/fr-product-2.html index de9ca85a6ce95..487757a09de17 100644 --- a/tests/integration/expected_test_results/web_html/fr-product-2.html +++ b/tests/integration/expected_test_results/web_html/fr-product-2.html @@ -4030,7 +4030,7 @@

    Découvrez le projet

    var page_type = "product"; var default_preferences = {"ecoscore":"important","nova":"important","nutriscore":"very_important"}; var preferences_text = "Classer les produits suivant vos préférences"; -var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Mauvaise qualité nutritionnelle","grade":"d","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-d.svg","id":"nutriscore","match":35.7777777777778,"name":"Nutri-Score","panel_id":"nutriscore","status":"known","title":"Nutri-Score D"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Données nutritionnelles manquantes","name":"Sel","status":"unknown","title":"Sel en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Données nutritionnelles manquantes","name":"Matières grasses","status":"unknown","title":"Matières grasses en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Données nutritionnelles manquantes","name":"Sucres","status":"unknown","title":"Sucres en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Données nutritionnelles manquantes","name":"Acides gras saturés","status":"unknown","title":"Acides gras saturés en quantité inconnue"}],"id":"nutritional_quality","name":"Qualité nutritionnelle"},{"attributes":[{"debug":"en:gluten in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-gluten.svg","id":"allergens_no_gluten","match":0,"name":"Gluten","status":"known","title":"Contient : Gluten"},{"debug":"en:milk in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-milk.svg","id":"allergens_no_milk","match":0,"name":"Lait","status":"known","title":"Contient : Lait"},{"debug":"en:eggs in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-eggs.svg","id":"allergens_no_eggs","match":0,"name":"Œufs","status":"known","title":"Contient : Œufs"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg","id":"allergens_no_nuts","match":100,"name":"Fruits à coque","status":"known","title":"Ne contient pas : Fruits à coque"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg","id":"allergens_no_peanuts","match":100,"name":"Arachides","status":"known","title":"Ne contient pas : Arachides"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg","id":"allergens_no_sesame_seeds","match":100,"name":"Graines de sésame","status":"known","title":"Ne contient pas : Graines de sésame"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg","id":"allergens_no_soybeans","match":100,"name":"Soja","status":"known","title":"Ne contient pas : Soja"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg","id":"allergens_no_celery","match":100,"name":"Céleri","status":"known","title":"Ne contient pas : Céleri"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg","id":"allergens_no_mustard","match":100,"name":"Moutarde","status":"known","title":"Ne contient pas : Moutarde"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg","id":"allergens_no_lupin","match":100,"name":"Lupin","status":"known","title":"Ne contient pas : Lupin"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg","id":"allergens_no_fish","match":100,"name":"Poisson","status":"known","title":"Ne contient pas : Poisson"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg","id":"allergens_no_crustaceans","match":100,"name":"Crustacés","status":"known","title":"Ne contient pas : Crustacés"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg","id":"allergens_no_molluscs","match":100,"name":"Mollusques","status":"known","title":"Ne contient pas : Mollusques"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","match":100,"name":"Anhydride sulfureux et sulfites","status":"known","title":"Ne contient pas : Anhydride sulfureux et sulfites"}],"id":"allergens","name":"Allergènes","warning":"Il est toujours possible que les données sur les allergènes soient manquantes, incomplètes, incorrectes ou que la composition du produit ait changé. Si vous êtes allergique, vérifiez toujours les informations sur l'emballage réel du produit."},{"attributes":[{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/non-vegan.svg","id":"vegan","match":0,"name":"Végétalien","panel_id":"ingredients_analysis_en:non-vegan","status":"known","title":"Non végétalien"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian.svg","id":"vegetarian","match":100,"name":"Végétarien","panel_id":"ingredients_analysis_en:vegetarian","status":"known","title":"Végétarien"},{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-palm-oil.svg","id":"palm_oil_free","match":0,"name":"Sans huile de palme","panel_id":"ingredients_analysis_en:palm-oil","status":"known","title":"Huile de palme"}],"id":"ingredients_analysis","name":"Ingrédients"},{"attributes":[{"description":"","description_short":"Aliments transformés","grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"Groupe NOVA","panel_id":"nova","status":"known","title":"NOVA 3"},{"grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg","id":"additives","match":60,"name":"Additifs","panel_id":"additives","status":"known","title":"2 additifs"}],"id":"processing","name":"Transformation des aliments"},{"attributes":[{"description":"","description_short":"Faible impact environnemental","grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg","id":"ecoscore","match":60,"name":"Eco-Score","panel_id":"ecoscore","status":"known","title":"Eco-Score B"},{"description":"","description_short":"Pas de risque de déforestation","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg","id":"forest_footprint","match":99.9766666666667,"name":"Empreinte forêt","status":"known","title":"Très petite empreinte forêt"}],"id":"environment","name":"Environnement"},{"attributes":[{"description":"L'agriculture biologique vise à protéger l'environnement et à conserver la biodiversité en prohibant ou limitant l'utilisation d'engrais synthétiques, de pesticides et d'additifs alimentaires.","description_short":"Encourage la durabilité écologique et la biodiversité.","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/organic.svg","id":"labels_organic","match":100,"name":"Agriculture biologique","status":"known","title":"Produit bio"},{"description":"Quand vous achetez des produits du commerce équitable, les producteurs dans les pays en développement sont payés un prix plus haut et plus équitable, ce qui les aide à atteindre des plus hauts standards sociaux et environnementaux et à les conserver.","description_short":"Aide les producteurs des pays en développement.","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fair-trade.svg","id":"labels_fair_trade","match":100,"name":"Commerce équitable","status":"known","title":"Produit du commerce équitable"}],"id":"labels","name":"Labels"}]}; +var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Mauvaise qualité nutritionnelle","grade":"d","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-d.svg","id":"nutriscore","match":35.7777777777778,"name":"Nutri-Score","panel_id":"nutriscore","status":"known","title":"Nutri-Score D"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Données nutritionnelles manquantes","name":"Sel","status":"unknown","title":"Sel en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Données nutritionnelles manquantes","name":"Matières grasses","status":"unknown","title":"Matières grasses en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Données nutritionnelles manquantes","name":"Sucres","status":"unknown","title":"Sucres en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Données nutritionnelles manquantes","name":"Acides gras saturés","status":"unknown","title":"Acides gras saturés en quantité inconnue"}],"id":"nutritional_quality","name":"Qualité nutritionnelle"},{"attributes":[{"debug":"en:gluten in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-gluten.svg","id":"allergens_no_gluten","match":0,"name":"Gluten","status":"known","title":"Contient : Gluten"},{"debug":"en:milk in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-milk.svg","id":"allergens_no_milk","match":0,"name":"Lait","status":"known","title":"Contient : Lait"},{"debug":"en:eggs in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-eggs.svg","id":"allergens_no_eggs","match":0,"name":"Œufs","status":"known","title":"Contient : Œufs"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg","id":"allergens_no_nuts","match":100,"name":"Fruits à coque","status":"known","title":"Ne contient pas : Fruits à coque"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg","id":"allergens_no_peanuts","match":100,"name":"Arachides","status":"known","title":"Ne contient pas : Arachides"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg","id":"allergens_no_sesame_seeds","match":100,"name":"Graines de sésame","status":"known","title":"Ne contient pas : Graines de sésame"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg","id":"allergens_no_soybeans","match":100,"name":"Soja","status":"known","title":"Ne contient pas : Soja"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg","id":"allergens_no_celery","match":100,"name":"Céleri","status":"known","title":"Ne contient pas : Céleri"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg","id":"allergens_no_mustard","match":100,"name":"Moutarde","status":"known","title":"Ne contient pas : Moutarde"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg","id":"allergens_no_lupin","match":100,"name":"Lupin","status":"known","title":"Ne contient pas : Lupin"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg","id":"allergens_no_fish","match":100,"name":"Poisson","status":"known","title":"Ne contient pas : Poisson"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg","id":"allergens_no_crustaceans","match":100,"name":"Crustacés","status":"known","title":"Ne contient pas : Crustacés"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg","id":"allergens_no_molluscs","match":100,"name":"Mollusques","status":"known","title":"Ne contient pas : Mollusques"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","match":100,"name":"Anhydride sulfureux et sulfites","status":"known","title":"Ne contient pas : Anhydride sulfureux et sulfites"}],"id":"allergens","name":"Allergènes","warning":"Il est toujours possible que les données sur les allergènes soient manquantes, incomplètes, incorrectes ou que la composition du produit ait changé. Si vous êtes allergique, vérifiez toujours les informations sur l'emballage réel du produit."},{"attributes":[{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/non-vegan.svg","id":"vegan","match":0,"name":"Végétalien","panel_id":"ingredients_analysis_en:non-vegan","status":"known","title":"Non végétalien"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian.svg","id":"vegetarian","match":100,"name":"Végétarien","panel_id":"ingredients_analysis_en:vegetarian","status":"known","title":"Végétarien"},{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-palm-oil.svg","id":"palm_oil_free","match":0,"name":"Sans huile de palme","panel_id":"ingredients_analysis_en:palm-oil","status":"known","title":"Huile de palme"}],"id":"ingredients_analysis","name":"Ingrédients"},{"attributes":[{"grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"Groupe NOVA","panel_id":"nova","status":"known","title":"Aliments transformés"},{"grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg","id":"additives","match":60,"name":"Additifs","panel_id":"additives","status":"known","title":"2 additifs"}],"id":"processing","name":"Transformation des aliments"},{"attributes":[{"description":"","description_short":"Faible impact environnemental","grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg","id":"ecoscore","match":60,"name":"Eco-Score","panel_id":"ecoscore","status":"known","title":"Eco-Score B"},{"description":"","description_short":"Pas de risque de déforestation","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg","id":"forest_footprint","match":99.9766666666667,"name":"Empreinte forêt","status":"known","title":"Très petite empreinte forêt"}],"id":"environment","name":"Environnement"},{"attributes":[{"description":"L'agriculture biologique vise à protéger l'environnement et à conserver la biodiversité en prohibant ou limitant l'utilisation d'engrais synthétiques, de pesticides et d'additifs alimentaires.","description_short":"Encourage la durabilité écologique et la biodiversité.","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/organic.svg","id":"labels_organic","match":100,"name":"Agriculture biologique","status":"known","title":"Produit bio"},{"description":"Quand vous achetez des produits du commerce équitable, les producteurs dans les pays en développement sont payés un prix plus haut et plus équitable, ce qui les aide à atteindre des plus hauts standards sociaux et environnementaux et à les conserver.","description_short":"Aide les producteurs des pays en développement.","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fair-trade.svg","id":"labels_fair_trade","match":100,"name":"Commerce équitable","status":"known","title":"Produit du commerce équitable"}],"id":"labels","name":"Labels"}]}; diff --git a/tests/integration/expected_test_results/web_html/fr-product.html b/tests/integration/expected_test_results/web_html/fr-product.html index 82c15dc2dc112..1ceb6e5db2ddd 100644 --- a/tests/integration/expected_test_results/web_html/fr-product.html +++ b/tests/integration/expected_test_results/web_html/fr-product.html @@ -4044,7 +4044,7 @@

    Découvrez le projet

    var page_type = "product"; var default_preferences = {"ecoscore":"important","nova":"important","nutriscore":"very_important"}; var preferences_text = "Classer les produits suivant vos préférences"; -var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Mauvaise qualité nutritionnelle","grade":"d","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-d.svg","id":"nutriscore","match":37.8888888888889,"name":"Nutri-Score","panel_id":"nutriscore","status":"known","title":"Nutri-Score D"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Données nutritionnelles manquantes","name":"Sel","status":"unknown","title":"Sel en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Données nutritionnelles manquantes","name":"Matières grasses","status":"unknown","title":"Matières grasses en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Données nutritionnelles manquantes","name":"Sucres","status":"unknown","title":"Sucres en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Données nutritionnelles manquantes","name":"Acides gras saturés","status":"unknown","title":"Acides gras saturés en quantité inconnue"}],"id":"nutritional_quality","name":"Qualité nutritionnelle"},{"attributes":[{"debug":"en:gluten in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-gluten.svg","id":"allergens_no_gluten","match":0,"name":"Gluten","status":"known","title":"Contient : Gluten"},{"debug":"en:milk in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-milk.svg","id":"allergens_no_milk","match":0,"name":"Lait","status":"known","title":"Contient : Lait"},{"debug":"en:eggs in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-eggs.svg","id":"allergens_no_eggs","match":0,"name":"Œufs","status":"known","title":"Contient : Œufs"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg","id":"allergens_no_nuts","match":100,"name":"Fruits à coque","status":"known","title":"Ne contient pas : Fruits à coque"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg","id":"allergens_no_peanuts","match":100,"name":"Arachides","status":"known","title":"Ne contient pas : Arachides"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg","id":"allergens_no_sesame_seeds","match":100,"name":"Graines de sésame","status":"known","title":"Ne contient pas : Graines de sésame"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg","id":"allergens_no_soybeans","match":100,"name":"Soja","status":"known","title":"Ne contient pas : Soja"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg","id":"allergens_no_celery","match":100,"name":"Céleri","status":"known","title":"Ne contient pas : Céleri"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg","id":"allergens_no_mustard","match":100,"name":"Moutarde","status":"known","title":"Ne contient pas : Moutarde"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg","id":"allergens_no_lupin","match":100,"name":"Lupin","status":"known","title":"Ne contient pas : Lupin"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg","id":"allergens_no_fish","match":100,"name":"Poisson","status":"known","title":"Ne contient pas : Poisson"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg","id":"allergens_no_crustaceans","match":100,"name":"Crustacés","status":"known","title":"Ne contient pas : Crustacés"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg","id":"allergens_no_molluscs","match":100,"name":"Mollusques","status":"known","title":"Ne contient pas : Mollusques"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","match":100,"name":"Anhydride sulfureux et sulfites","status":"known","title":"Ne contient pas : Anhydride sulfureux et sulfites"}],"id":"allergens","name":"Allergènes","warning":"Il est toujours possible que les données sur les allergènes soient manquantes, incomplètes, incorrectes ou que la composition du produit ait changé. Si vous êtes allergique, vérifiez toujours les informations sur l'emballage réel du produit."},{"attributes":[{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/non-vegan.svg","id":"vegan","match":0,"name":"Végétalien","panel_id":"ingredients_analysis_en:non-vegan","status":"known","title":"Non végétalien"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian.svg","id":"vegetarian","match":100,"name":"Végétarien","panel_id":"ingredients_analysis_en:vegetarian","status":"known","title":"Végétarien"},{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-palm-oil.svg","id":"palm_oil_free","match":0,"name":"Sans huile de palme","panel_id":"ingredients_analysis_en:palm-oil","status":"known","title":"Huile de palme"}],"id":"ingredients_analysis","name":"Ingrédients"},{"attributes":[{"description":"","description_short":"Aliments transformés","grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"Groupe NOVA","panel_id":"nova","status":"known","title":"NOVA 3"},{"grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg","id":"additives","match":60,"name":"Additifs","panel_id":"additives","status":"known","title":"2 additifs"}],"id":"processing","name":"Transformation des aliments"},{"attributes":[{"description":"","description_short":"Faible impact environnemental","grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg","id":"ecoscore","match":60,"name":"Eco-Score","panel_id":"ecoscore","status":"known","title":"Eco-Score B"},{"description":"","description_short":"Pas de risque de déforestation","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg","id":"forest_footprint","match":99.9118518518518,"name":"Empreinte forêt","status":"known","title":"Très petite empreinte forêt"}],"id":"environment","name":"Environnement"},{"attributes":[{"description":"L'agriculture biologique vise à protéger l'environnement et à conserver la biodiversité en prohibant ou limitant l'utilisation d'engrais synthétiques, de pesticides et d'additifs alimentaires.","description_short":"Les produits bios encouragent la durabilité écologique et la biodiversité.","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/not-organic.svg","id":"labels_organic","match":0,"name":"Agriculture biologique","status":"known","title":"Pas un produit bio"},{"description":"Quand vous achetez des produits du commerce équitable, les producteurs dans les pays en développement sont payés un prix plus haut et plus équitable, ce qui les aide à atteindre des plus hauts standards sociaux et environnementaux et à les conserver.","description_short":"Aide les producteurs des pays en développement.","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fair-trade.svg","id":"labels_fair_trade","match":100,"name":"Commerce équitable","status":"known","title":"Produit du commerce équitable"}],"id":"labels","name":"Labels"}]}; +var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Mauvaise qualité nutritionnelle","grade":"d","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-d.svg","id":"nutriscore","match":37.8888888888889,"name":"Nutri-Score","panel_id":"nutriscore","status":"known","title":"Nutri-Score D"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Données nutritionnelles manquantes","name":"Sel","status":"unknown","title":"Sel en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Données nutritionnelles manquantes","name":"Matières grasses","status":"unknown","title":"Matières grasses en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Données nutritionnelles manquantes","name":"Sucres","status":"unknown","title":"Sucres en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Données nutritionnelles manquantes","name":"Acides gras saturés","status":"unknown","title":"Acides gras saturés en quantité inconnue"}],"id":"nutritional_quality","name":"Qualité nutritionnelle"},{"attributes":[{"debug":"en:gluten in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-gluten.svg","id":"allergens_no_gluten","match":0,"name":"Gluten","status":"known","title":"Contient : Gluten"},{"debug":"en:milk in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-milk.svg","id":"allergens_no_milk","match":0,"name":"Lait","status":"known","title":"Contient : Lait"},{"debug":"en:eggs in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-eggs.svg","id":"allergens_no_eggs","match":0,"name":"Œufs","status":"known","title":"Contient : Œufs"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg","id":"allergens_no_nuts","match":100,"name":"Fruits à coque","status":"known","title":"Ne contient pas : Fruits à coque"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg","id":"allergens_no_peanuts","match":100,"name":"Arachides","status":"known","title":"Ne contient pas : Arachides"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg","id":"allergens_no_sesame_seeds","match":100,"name":"Graines de sésame","status":"known","title":"Ne contient pas : Graines de sésame"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg","id":"allergens_no_soybeans","match":100,"name":"Soja","status":"known","title":"Ne contient pas : Soja"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg","id":"allergens_no_celery","match":100,"name":"Céleri","status":"known","title":"Ne contient pas : Céleri"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg","id":"allergens_no_mustard","match":100,"name":"Moutarde","status":"known","title":"Ne contient pas : Moutarde"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg","id":"allergens_no_lupin","match":100,"name":"Lupin","status":"known","title":"Ne contient pas : Lupin"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg","id":"allergens_no_fish","match":100,"name":"Poisson","status":"known","title":"Ne contient pas : Poisson"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg","id":"allergens_no_crustaceans","match":100,"name":"Crustacés","status":"known","title":"Ne contient pas : Crustacés"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg","id":"allergens_no_molluscs","match":100,"name":"Mollusques","status":"known","title":"Ne contient pas : Mollusques"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","match":100,"name":"Anhydride sulfureux et sulfites","status":"known","title":"Ne contient pas : Anhydride sulfureux et sulfites"}],"id":"allergens","name":"Allergènes","warning":"Il est toujours possible que les données sur les allergènes soient manquantes, incomplètes, incorrectes ou que la composition du produit ait changé. Si vous êtes allergique, vérifiez toujours les informations sur l'emballage réel du produit."},{"attributes":[{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/non-vegan.svg","id":"vegan","match":0,"name":"Végétalien","panel_id":"ingredients_analysis_en:non-vegan","status":"known","title":"Non végétalien"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian.svg","id":"vegetarian","match":100,"name":"Végétarien","panel_id":"ingredients_analysis_en:vegetarian","status":"known","title":"Végétarien"},{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-palm-oil.svg","id":"palm_oil_free","match":0,"name":"Sans huile de palme","panel_id":"ingredients_analysis_en:palm-oil","status":"known","title":"Huile de palme"}],"id":"ingredients_analysis","name":"Ingrédients"},{"attributes":[{"grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"Groupe NOVA","panel_id":"nova","status":"known","title":"Aliments transformés"},{"grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg","id":"additives","match":60,"name":"Additifs","panel_id":"additives","status":"known","title":"2 additifs"}],"id":"processing","name":"Transformation des aliments"},{"attributes":[{"description":"","description_short":"Faible impact environnemental","grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg","id":"ecoscore","match":60,"name":"Eco-Score","panel_id":"ecoscore","status":"known","title":"Eco-Score B"},{"description":"","description_short":"Pas de risque de déforestation","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg","id":"forest_footprint","match":99.9118518518518,"name":"Empreinte forêt","status":"known","title":"Très petite empreinte forêt"}],"id":"environment","name":"Environnement"},{"attributes":[{"description":"L'agriculture biologique vise à protéger l'environnement et à conserver la biodiversité en prohibant ou limitant l'utilisation d'engrais synthétiques, de pesticides et d'additifs alimentaires.","description_short":"Les produits bios encouragent la durabilité écologique et la biodiversité.","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/not-organic.svg","id":"labels_organic","match":0,"name":"Agriculture biologique","status":"known","title":"Pas un produit bio"},{"description":"Quand vous achetez des produits du commerce équitable, les producteurs dans les pays en développement sont payés un prix plus haut et plus équitable, ce qui les aide à atteindre des plus hauts standards sociaux et environnementaux et à les conserver.","description_short":"Aide les producteurs des pays en développement.","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fair-trade.svg","id":"labels_fair_trade","match":100,"name":"Commerce équitable","status":"known","title":"Produit du commerce équitable"}],"id":"labels","name":"Labels"}]}; diff --git a/tests/integration/expected_test_results/web_html/fr-search-results-cached.html b/tests/integration/expected_test_results/web_html/fr-search-results-cached.html index 58900558deb85..47c765e4bec46 100644 --- a/tests/integration/expected_test_results/web_html/fr-search-results-cached.html +++ b/tests/integration/expected_test_results/web_html/fr-search-results-cached.html @@ -917,8 +917,6 @@

    Découvrez le projet

    { "attributes":[ { - "description":"", - "description_short":"Aliments transformés", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -926,7 +924,7 @@

    Découvrez le projet

    "name":"Groupe NOVA", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Aliments transformés" }, { "grade":"c", @@ -1245,8 +1243,6 @@

    Découvrez le projet

    { "attributes":[ { - "description":"", - "description_short":"Aliments transformés", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -1254,7 +1250,7 @@

    Découvrez le projet

    "name":"Groupe NOVA", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Aliments transformés" }, { "grade":"c", diff --git a/tests/integration/expected_test_results/web_html/fr-search-results-no-cache.html b/tests/integration/expected_test_results/web_html/fr-search-results-no-cache.html index 084d7203dc697..1e676799d226e 100644 --- a/tests/integration/expected_test_results/web_html/fr-search-results-no-cache.html +++ b/tests/integration/expected_test_results/web_html/fr-search-results-no-cache.html @@ -917,8 +917,6 @@

    Découvrez le projet

    { "attributes":[ { - "description":"", - "description_short":"Aliments transformés", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -926,7 +924,7 @@

    Découvrez le projet

    "name":"Groupe NOVA", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Aliments transformés" }, { "grade":"c", @@ -1246,8 +1244,6 @@

    Découvrez le projet

    { "attributes":[ { - "description":"", - "description_short":"Aliments transformés", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -1255,7 +1251,7 @@

    Découvrez le projet

    "name":"Groupe NOVA", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Aliments transformés" }, { "grade":"c", diff --git a/tests/integration/expected_test_results/web_html/fr-search-results.html b/tests/integration/expected_test_results/web_html/fr-search-results.html index 58900558deb85..47c765e4bec46 100644 --- a/tests/integration/expected_test_results/web_html/fr-search-results.html +++ b/tests/integration/expected_test_results/web_html/fr-search-results.html @@ -917,8 +917,6 @@

    Découvrez le projet

    { "attributes":[ { - "description":"", - "description_short":"Aliments transformés", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -926,7 +924,7 @@

    Découvrez le projet

    "name":"Groupe NOVA", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Aliments transformés" }, { "grade":"c", @@ -1245,8 +1243,6 @@

    Découvrez le projet

    { "attributes":[ { - "description":"", - "description_short":"Aliments transformés", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -1254,7 +1250,7 @@

    Découvrez le projet

    "name":"Groupe NOVA", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Aliments transformés" }, { "grade":"c", diff --git a/tests/integration/expected_test_results/web_html/world-categories.html b/tests/integration/expected_test_results/web_html/world-categories.html index 44ba6dc77d9aa..e356ab662c55a 100644 --- a/tests/integration/expected_test_results/web_html/world-categories.html +++ b/tests/integration/expected_test_results/web_html/world-categories.html @@ -1190,8 +1190,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -1199,7 +1197,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"c", @@ -1520,8 +1518,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -1529,7 +1525,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"c", @@ -1849,8 +1845,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -1858,7 +1852,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"c", @@ -2178,8 +2172,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Ultra processed foods", "grade":"e", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", "id":"nova", @@ -2187,7 +2179,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 4" + "title":"Ultra-processed foods" }, { "grade":"e", @@ -2507,8 +2499,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -2516,7 +2506,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"a", @@ -2836,8 +2826,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -2845,7 +2833,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"c", diff --git a/tests/integration/expected_test_results/web_html/world-index-signedin.html b/tests/integration/expected_test_results/web_html/world-index-signedin.html index 77cd0730af659..28d036bb8f56c 100644 --- a/tests/integration/expected_test_results/web_html/world-index-signedin.html +++ b/tests/integration/expected_test_results/web_html/world-index-signedin.html @@ -1091,8 +1091,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -1100,7 +1098,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"c", @@ -1421,8 +1419,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -1430,7 +1426,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"a", @@ -1749,8 +1745,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Ultra processed foods", "grade":"e", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", "id":"nova", @@ -1758,7 +1752,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 4" + "title":"Ultra-processed foods" }, { "grade":"b", @@ -2078,8 +2072,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Ultra processed foods", "grade":"e", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", "id":"nova", @@ -2087,7 +2079,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 4" + "title":"Ultra-processed foods" }, { "grade":"a", @@ -2407,8 +2399,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -2416,7 +2406,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"c", @@ -2736,8 +2726,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Unprocessed or minimally processed foods", "grade":"a", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-1.svg", "id":"nova", @@ -2745,7 +2733,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 1" + "title":"Unprocessed or minimally processed foods" }, { "grade":"a", @@ -3065,8 +3053,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Unprocessed or minimally processed foods", "grade":"a", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-1.svg", "id":"nova", @@ -3074,7 +3060,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 1" + "title":"Unprocessed or minimally processed foods" }, { "grade":"a", @@ -3394,8 +3380,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -3403,7 +3387,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"a", @@ -3723,8 +3707,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -3732,7 +3714,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"a", @@ -4052,8 +4034,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Ultra processed foods", "grade":"e", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", "id":"nova", @@ -4061,7 +4041,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 4" + "title":"Ultra-processed foods" }, { "grade":"e", @@ -4381,8 +4361,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -4390,7 +4368,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"a", @@ -4710,8 +4688,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -4719,7 +4695,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"c", @@ -5039,8 +5015,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -5048,7 +5022,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"c", diff --git a/tests/integration/expected_test_results/web_html/world-index.html b/tests/integration/expected_test_results/web_html/world-index.html index 9a96d3013e93a..5d4f19d54d77c 100644 --- a/tests/integration/expected_test_results/web_html/world-index.html +++ b/tests/integration/expected_test_results/web_html/world-index.html @@ -1068,8 +1068,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -1077,7 +1075,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"c", @@ -1398,8 +1396,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -1407,7 +1403,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"a", @@ -1726,8 +1722,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Ultra processed foods", "grade":"e", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", "id":"nova", @@ -1735,7 +1729,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 4" + "title":"Ultra-processed foods" }, { "grade":"b", @@ -2055,8 +2049,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Ultra processed foods", "grade":"e", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", "id":"nova", @@ -2064,7 +2056,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 4" + "title":"Ultra-processed foods" }, { "grade":"a", @@ -2384,8 +2376,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -2393,7 +2383,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"c", @@ -2713,8 +2703,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Unprocessed or minimally processed foods", "grade":"a", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-1.svg", "id":"nova", @@ -2722,7 +2710,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 1" + "title":"Unprocessed or minimally processed foods" }, { "grade":"a", @@ -3042,8 +3030,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Unprocessed or minimally processed foods", "grade":"a", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-1.svg", "id":"nova", @@ -3051,7 +3037,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 1" + "title":"Unprocessed or minimally processed foods" }, { "grade":"a", @@ -3371,8 +3357,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -3380,7 +3364,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"a", @@ -3700,8 +3684,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -3709,7 +3691,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"a", @@ -4029,8 +4011,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Ultra processed foods", "grade":"e", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", "id":"nova", @@ -4038,7 +4018,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 4" + "title":"Ultra-processed foods" }, { "grade":"e", @@ -4358,8 +4338,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -4367,7 +4345,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"a", @@ -4687,8 +4665,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -4696,7 +4672,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"c", @@ -5016,8 +4992,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -5025,7 +4999,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"c", diff --git a/tests/integration/expected_test_results/web_html/world-label-organic.html b/tests/integration/expected_test_results/web_html/world-label-organic.html index 7798ea65ec040..3bd464eb7ffc8 100644 --- a/tests/integration/expected_test_results/web_html/world-label-organic.html +++ b/tests/integration/expected_test_results/web_html/world-label-organic.html @@ -1180,8 +1180,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -1189,7 +1187,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"c", @@ -1510,8 +1508,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -1519,7 +1515,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"c", @@ -1839,8 +1835,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Unprocessed or minimally processed foods", "grade":"a", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-1.svg", "id":"nova", @@ -1848,7 +1842,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 1" + "title":"Unprocessed or minimally processed foods" }, { "grade":"a", @@ -2168,8 +2162,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Unprocessed or minimally processed foods", "grade":"a", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-1.svg", "id":"nova", @@ -2177,7 +2169,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 1" + "title":"Unprocessed or minimally processed foods" }, { "grade":"a", @@ -2497,8 +2489,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -2506,7 +2496,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"a", diff --git a/tests/integration/expected_test_results/web_html/world-product.html b/tests/integration/expected_test_results/web_html/world-product.html index 0f40a38546ffb..a88c7860806a7 100644 --- a/tests/integration/expected_test_results/web_html/world-product.html +++ b/tests/integration/expected_test_results/web_html/world-product.html @@ -2052,7 +2052,7 @@

    Food processing

  • Unprocessed or minimally processed foods
  • Processed culinary ingredients
  • Processed foods
  • -
  • Ultra processed foods
  • +
  • Ultra-processed foods

  • The determination of the group is based on the category of the product and on the ingredients it contains.

    @@ -4541,7 +4541,7 @@

    Discover the project

    var page_type = "product"; var default_preferences = {"ecoscore":"important","nova":"important","nutriscore":"very_important"}; var preferences_text = "Classify products according to your preferences"; -var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Poor nutritional quality","grade":"d","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-d-new-en.svg","id":"nutriscore","match":27.3333333333333,"name":"Nutri-Score","panel_id":"nutriscore_2023","status":"known","title":"Nutri-Score D"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Missing nutrition facts","name":"Salt","status":"unknown","title":"Salt in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Missing nutrition facts","name":"Fat","status":"unknown","title":"Fat in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Missing nutrition facts","name":"Sugars","status":"unknown","title":"Sugars in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Missing nutrition facts","name":"Saturated fat","status":"unknown","title":"Saturated fat in unknown quantity"}],"id":"nutritional_quality","name":"Nutritional quality"},{"attributes":[{"debug":"en:gluten in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-gluten.svg","id":"allergens_no_gluten","match":0,"name":"Gluten","status":"known","title":"Contains: Gluten"},{"debug":"en:milk in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-milk.svg","id":"allergens_no_milk","match":0,"name":"Milk","status":"known","title":"Contains: Milk"},{"debug":"en:eggs in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-eggs.svg","id":"allergens_no_eggs","match":0,"name":"Eggs","status":"known","title":"Contains: Eggs"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg","id":"allergens_no_nuts","match":100,"name":"Nuts","status":"known","title":"Does not contain: Nuts"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg","id":"allergens_no_peanuts","match":100,"name":"Peanuts","status":"known","title":"Does not contain: Peanuts"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg","id":"allergens_no_sesame_seeds","match":100,"name":"Sesame seeds","status":"known","title":"Does not contain: Sesame seeds"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg","id":"allergens_no_soybeans","match":100,"name":"Soybeans","status":"known","title":"Does not contain: Soybeans"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg","id":"allergens_no_celery","match":100,"name":"Celery","status":"known","title":"Does not contain: Celery"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg","id":"allergens_no_mustard","match":100,"name":"Mustard","status":"known","title":"Does not contain: Mustard"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg","id":"allergens_no_lupin","match":100,"name":"Lupin","status":"known","title":"Does not contain: Lupin"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg","id":"allergens_no_fish","match":100,"name":"Fish","status":"known","title":"Does not contain: Fish"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg","id":"allergens_no_crustaceans","match":100,"name":"Crustaceans","status":"known","title":"Does not contain: Crustaceans"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg","id":"allergens_no_molluscs","match":100,"name":"Molluscs","status":"known","title":"Does not contain: Molluscs"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","match":100,"name":"Sulphur dioxide and sulphites","status":"known","title":"Does not contain: Sulphur dioxide and sulphites"}],"id":"allergens","name":"Allergens","warning":"There is always a possibility that data about allergens may be missing, incomplete, incorrect or that the product's composition has changed. If you are allergic, always check the information on the actual product packaging."},{"attributes":[{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/non-vegan.svg","id":"vegan","match":0,"name":"Vegan","panel_id":"ingredients_analysis_en:non-vegan","status":"known","title":"Non-vegan"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian.svg","id":"vegetarian","match":100,"name":"Vegetarian","panel_id":"ingredients_analysis_en:vegetarian","status":"known","title":"Vegetarian"},{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-palm-oil.svg","id":"palm_oil_free","match":0,"name":"Palm oil free","panel_id":"ingredients_analysis_en:palm-oil","status":"known","title":"Palm oil"}],"id":"ingredients_analysis","name":"Ingredients"},{"attributes":[{"description":"","description_short":"Processed foods","grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"NOVA group","panel_id":"nova","status":"known","title":"NOVA 3"},{"grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg","id":"additives","match":60,"name":"Additives","panel_id":"additives","status":"known","title":"2 additives"}],"id":"processing","name":"Food processing"},{"attributes":[{"description":"","description_short":"Low environmental impact","grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg","id":"ecoscore","match":60,"name":"Eco-Score","panel_id":"ecoscore","status":"known","title":"Eco-Score B"},{"description":"","description_short":"Almost no risk of deforestation","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg","id":"forest_footprint","match":99.9118518518518,"name":"Forest footprint","status":"known","title":"Very small forest footprint"}],"id":"environment","name":"Environment"},{"attributes":[{"description":"Organic farming aims to protect the environment and to conserve biodiversity by prohibiting or limiting the use of synthetic fertilizers, pesticides and food additives.","description_short":"Organic products promote ecological sustainability and biodiversity.","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/not-organic.svg","id":"labels_organic","match":0,"name":"Organic farming","status":"known","title":"Not an organic product"},{"description":"When you buy fair trade products, producers in developing countries are paid an higher and fairer price, which helps them improve and sustain higher social and often environmental standards.","description_short":"Helps producers in developing countries.","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fair-trade.svg","id":"labels_fair_trade","match":100,"name":"Fair trade","status":"known","title":"Fair trade product"}],"id":"labels","name":"Labels"}]}; +var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Poor nutritional quality","grade":"d","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-d-new-en.svg","id":"nutriscore","match":27.3333333333333,"name":"Nutri-Score","panel_id":"nutriscore_2023","status":"known","title":"Nutri-Score D"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Missing nutrition facts","name":"Salt","status":"unknown","title":"Salt in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Missing nutrition facts","name":"Fat","status":"unknown","title":"Fat in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Missing nutrition facts","name":"Sugars","status":"unknown","title":"Sugars in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Missing nutrition facts","name":"Saturated fat","status":"unknown","title":"Saturated fat in unknown quantity"}],"id":"nutritional_quality","name":"Nutritional quality"},{"attributes":[{"debug":"en:gluten in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-gluten.svg","id":"allergens_no_gluten","match":0,"name":"Gluten","status":"known","title":"Contains: Gluten"},{"debug":"en:milk in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-milk.svg","id":"allergens_no_milk","match":0,"name":"Milk","status":"known","title":"Contains: Milk"},{"debug":"en:eggs in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-eggs.svg","id":"allergens_no_eggs","match":0,"name":"Eggs","status":"known","title":"Contains: Eggs"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg","id":"allergens_no_nuts","match":100,"name":"Nuts","status":"known","title":"Does not contain: Nuts"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg","id":"allergens_no_peanuts","match":100,"name":"Peanuts","status":"known","title":"Does not contain: Peanuts"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg","id":"allergens_no_sesame_seeds","match":100,"name":"Sesame seeds","status":"known","title":"Does not contain: Sesame seeds"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg","id":"allergens_no_soybeans","match":100,"name":"Soybeans","status":"known","title":"Does not contain: Soybeans"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg","id":"allergens_no_celery","match":100,"name":"Celery","status":"known","title":"Does not contain: Celery"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg","id":"allergens_no_mustard","match":100,"name":"Mustard","status":"known","title":"Does not contain: Mustard"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg","id":"allergens_no_lupin","match":100,"name":"Lupin","status":"known","title":"Does not contain: Lupin"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg","id":"allergens_no_fish","match":100,"name":"Fish","status":"known","title":"Does not contain: Fish"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg","id":"allergens_no_crustaceans","match":100,"name":"Crustaceans","status":"known","title":"Does not contain: Crustaceans"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg","id":"allergens_no_molluscs","match":100,"name":"Molluscs","status":"known","title":"Does not contain: Molluscs"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","match":100,"name":"Sulphur dioxide and sulphites","status":"known","title":"Does not contain: Sulphur dioxide and sulphites"}],"id":"allergens","name":"Allergens","warning":"There is always a possibility that data about allergens may be missing, incomplete, incorrect or that the product's composition has changed. If you are allergic, always check the information on the actual product packaging."},{"attributes":[{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/non-vegan.svg","id":"vegan","match":0,"name":"Vegan","panel_id":"ingredients_analysis_en:non-vegan","status":"known","title":"Non-vegan"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian.svg","id":"vegetarian","match":100,"name":"Vegetarian","panel_id":"ingredients_analysis_en:vegetarian","status":"known","title":"Vegetarian"},{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-palm-oil.svg","id":"palm_oil_free","match":0,"name":"Palm oil free","panel_id":"ingredients_analysis_en:palm-oil","status":"known","title":"Palm oil"}],"id":"ingredients_analysis","name":"Ingredients"},{"attributes":[{"grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"NOVA group","panel_id":"nova","status":"known","title":"Processed foods"},{"grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg","id":"additives","match":60,"name":"Additives","panel_id":"additives","status":"known","title":"2 additives"}],"id":"processing","name":"Food processing"},{"attributes":[{"description":"","description_short":"Low environmental impact","grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg","id":"ecoscore","match":60,"name":"Eco-Score","panel_id":"ecoscore","status":"known","title":"Eco-Score B"},{"description":"","description_short":"Almost no risk of deforestation","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg","id":"forest_footprint","match":99.9118518518518,"name":"Forest footprint","status":"known","title":"Very small forest footprint"}],"id":"environment","name":"Environment"},{"attributes":[{"description":"Organic farming aims to protect the environment and to conserve biodiversity by prohibiting or limiting the use of synthetic fertilizers, pesticides and food additives.","description_short":"Organic products promote ecological sustainability and biodiversity.","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/not-organic.svg","id":"labels_organic","match":0,"name":"Organic farming","status":"known","title":"Not an organic product"},{"description":"When you buy fair trade products, producers in developing countries are paid an higher and fairer price, which helps them improve and sustain higher social and often environmental standards.","description_short":"Helps producers in developing countries.","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fair-trade.svg","id":"labels_fair_trade","match":100,"name":"Fair trade","status":"known","title":"Fair trade product"}],"id":"labels","name":"Labels"}]}; diff --git a/tests/integration/expected_test_results/web_html/world-search-results.html b/tests/integration/expected_test_results/web_html/world-search-results.html index 39a30f841b37a..8f490256d48fc 100644 --- a/tests/integration/expected_test_results/web_html/world-search-results.html +++ b/tests/integration/expected_test_results/web_html/world-search-results.html @@ -921,8 +921,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -930,7 +928,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"c", @@ -1250,8 +1248,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -1259,7 +1255,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"c", @@ -1579,8 +1575,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Unprocessed or minimally processed foods", "grade":"a", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-1.svg", "id":"nova", @@ -1588,7 +1582,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 1" + "title":"Unprocessed or minimally processed foods" }, { "grade":"a", @@ -1908,8 +1902,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Unprocessed or minimally processed foods", "grade":"a", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-1.svg", "id":"nova", @@ -1917,7 +1909,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 1" + "title":"Unprocessed or minimally processed foods" }, { "grade":"a", @@ -2236,8 +2228,6 @@

    Discover the project

    { "attributes":[ { - "description":"", - "description_short":"Processed foods", "grade":"b", "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg", "id":"nova", @@ -2245,7 +2235,7 @@

    Discover the project

    "name":"NOVA group", "panel_id":"nova", "status":"known", - "title":"NOVA 3" + "title":"Processed foods" }, { "grade":"c", diff --git a/tests/unit/expected_test_results/attributes/en-attributes.json b/tests/unit/expected_test_results/attributes/en-attributes.json index 3486bbfe54fba..b9a03ab4d83d8 100644 --- a/tests/unit/expected_test_results/attributes/en-attributes.json +++ b/tests/unit/expected_test_results/attributes/en-attributes.json @@ -269,8 +269,7 @@ { "attributes" : [ { - "description" : "", - "description_short" : "Ultra processed foods", + "description_short" : "6 ultra-processing markers", "grade" : "e", "icon_url" : "https://server_domain/images/attributes/dist/nova-group-4.svg", "id" : "nova", @@ -278,7 +277,7 @@ "name" : "NOVA group", "panel_id" : "nova", "status" : "known", - "title" : "NOVA 4" + "title" : "Ultra-processed foods" }, { "grade" : "c", diff --git a/tests/unit/expected_test_results/attributes/en-maybe-vegan.json b/tests/unit/expected_test_results/attributes/en-maybe-vegan.json index 7b45a574b0863..e6d588a90ce62 100644 --- a/tests/unit/expected_test_results/attributes/en-maybe-vegan.json +++ b/tests/unit/expected_test_results/attributes/en-maybe-vegan.json @@ -249,8 +249,6 @@ { "attributes" : [ { - "description" : "", - "description_short" : "Processed foods", "grade" : "b", "icon_url" : "https://server_domain/images/attributes/dist/nova-group-3.svg", "id" : "nova", @@ -258,7 +256,7 @@ "name" : "NOVA group", "panel_id" : "nova", "status" : "known", - "title" : "NOVA 3" + "title" : "Processed foods" }, { "grade" : "a", diff --git a/tests/unit/expected_test_results/attributes/en-nova-groups-markers.json b/tests/unit/expected_test_results/attributes/en-nova-groups-markers.json index 410cc0c0a74e3..655bd74fde952 100644 --- a/tests/unit/expected_test_results/attributes/en-nova-groups-markers.json +++ b/tests/unit/expected_test_results/attributes/en-nova-groups-markers.json @@ -257,8 +257,7 @@ { "attributes" : [ { - "description" : "", - "description_short" : "Ultra processed foods", + "description_short" : "5 ultra-processing markers", "grade" : "e", "icon_url" : "https://server_domain/images/attributes/dist/nova-group-4.svg", "id" : "nova", @@ -266,7 +265,7 @@ "name" : "NOVA group", "panel_id" : "nova", "status" : "known", - "title" : "NOVA 4" + "title" : "Ultra-processed foods" }, { "grade" : "b", diff --git a/tests/unit/expected_test_results/attributes/en-nutriscore.json b/tests/unit/expected_test_results/attributes/en-nutriscore.json index 94e64127ca2fc..41af858861876 100644 --- a/tests/unit/expected_test_results/attributes/en-nutriscore.json +++ b/tests/unit/expected_test_results/attributes/en-nutriscore.json @@ -253,8 +253,6 @@ { "attributes" : [ { - "description" : "", - "description_short" : "Unprocessed or minimally processed foods", "grade" : "a", "icon_url" : "https://server_domain/images/attributes/dist/nova-group-1.svg", "id" : "nova", @@ -262,7 +260,7 @@ "name" : "NOVA group", "panel_id" : "nova", "status" : "known", - "title" : "NOVA 1" + "title" : "Unprocessed or minimally processed foods" }, { "grade" : "a",