fix(streckkod+kvitto): sparad-bekraftelse, fettvarden, kvitto-antal
Streckkod / produktbidrag: - Tydlig bekraftelse 'Sparad i delade katalogen - tack!' visas nu efter att en fotad produkt lasts av, sa man ser att bidraget gick fram (forut bara 'Skanna igen' utan aterkoppling). - Naringsetiketter laser nu ocksa enkelomattat och fleromattat fett (t.ex. olivolja visar tre fettrader). Nya valfria falt monounsaturatedFatG/ polyunsaturatedFatG i NutritionValues + READ_NUTRITION_LABEL + prompt + produktpanelen. Obligatoriska EU-falt oforandrade. Kvitto: - Rader som ar samma vara (samma normaliserade namn + enhet) slas nu ihop till EN vara med ratt antal - '2 x mjolk' pa kvittot blir en vara a 2 st i stallet for tva rader a 1 st. Priser summeras, rabatter dras som forut. En kvittorad raknas som minst 1 exemplar aven om antal saknas. Verifierat: typecheck hela repot gront, nutrition-engine 19/19, ai-contracts 24/24, worker 23/23, api 104/104, samt repro mot testdatabas (2 mjolk-rader -> 1 vara a 2; olivolja sparar fett/mattat/enkel-/fleromattat).
This commit is contained in:
@@ -972,7 +972,7 @@ Språk: ${lang}.`;
|
||||
|
||||
Läs av exakt det som står på förpackningen. Gissa aldrig värden som inte syns. Returnera:
|
||||
- basis: "per_100_g", "per_100_ml" eller "per_portion" – vad gäller näringstabellen?
|
||||
- values: { kcal, proteinG, carbsG, fatG, saturatedFatG, fiberG, sugarG, saltG } – null om ej synligt.
|
||||
- values: { kcal, proteinG, carbsG, fatG, saturatedFatG, monounsaturatedFatG, polyunsaturatedFatG, fiberG, sugarG, saltG } – null om ej synligt. Läs ALLA "varav"-rader under Fett: varav mättat (saturatedFatG), varav enkelomättat (monounsaturatedFatG), varav fleromättat (polyunsaturatedFatG).
|
||||
- ingredientsText: rå text med ingredienser (från baksidan), eller null.
|
||||
- allergensDeclared: lista med allergener som explicit nämns (t.ex. ["gluten", "mjölk", "nötter"]).
|
||||
- gtin: streckkod/EAN om synlig, annars null.
|
||||
@@ -983,7 +983,7 @@ Läs av exakt det som står på förpackningen. Gissa aldrig värden som inte sy
|
||||
Svara ENDAST med giltig JSON som matchar detta schema:
|
||||
{
|
||||
"basis": "per_100_g" | "per_100_ml" | "per_portion" | null,
|
||||
"values": { "kcal": number|null, "proteinG": number|null, "carbsG": number|null, "fatG": number|null, "saturatedFatG": number|null, "fiberG": number|null, "sugarG": number|null, "saltG": number|null } | null,
|
||||
"values": { "kcal": number|null, "proteinG": number|null, "carbsG": number|null, "fatG": number|null, "saturatedFatG": number|null, "monounsaturatedFatG": number|null, "polyunsaturatedFatG": number|null, "fiberG": number|null, "sugarG": number|null, "saltG": number|null } | null,
|
||||
"ingredientsText": string | null,
|
||||
"allergensDeclared": string[],
|
||||
"gtin": string | null,
|
||||
|
||||
@@ -222,6 +222,8 @@ export const readNutritionLabelOutput = z.object({
|
||||
carbsG: z.number().nullable(),
|
||||
fatG: z.number().nullable(),
|
||||
saturatedFatG: z.number().nullable(),
|
||||
monounsaturatedFatG: z.number().nullable().default(null),
|
||||
polyunsaturatedFatG: z.number().nullable().default(null),
|
||||
fiberG: z.number().nullable(),
|
||||
sugarG: z.number().nullable(),
|
||||
saltG: z.number().nullable(),
|
||||
|
||||
@@ -16,6 +16,10 @@ export interface NutritionValues {
|
||||
fatG: number;
|
||||
/** gram */
|
||||
saturatedFatG: number;
|
||||
/** gram – enkelomättat fett. Valfritt (står oftast bara på vissa etiketter, t.ex. olja/nötter). */
|
||||
monounsaturatedFatG?: number;
|
||||
/** gram – fleromättat fett. Valfritt (som ovan). */
|
||||
polyunsaturatedFatG?: number;
|
||||
/** gram */
|
||||
fiberG: number;
|
||||
/** gram */
|
||||
|
||||
Reference in New Issue
Block a user