From 17fdc993a56dadcf4950fd2766db456c8676c486 Mon Sep 17 00:00:00 2001 From: dadaloop82 Date: Sun, 15 Mar 2026 17:19:36 +0000 Subject: [PATCH] =?UTF-8?q?Bring:=20non=20inviare=20marca/quantit=C3=A0,?= =?UTF-8?q?=20usa=20solo=20nomi=20generici=20catalogo.=20Puliti=2027=20art?= =?UTF-8?q?icoli.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/index.php | 52 ++++++++++++++++++++++++++++++++++++++++------- assets/js/app.js | 9 +------- data/dispensa.db | Bin 155648 -> 155648 bytes index.html | 2 +- 4 files changed, 47 insertions(+), 16 deletions(-) diff --git a/api/index.php b/api/index.php index b4a681f..dd5681f 100644 --- a/api/index.php +++ b/api/index.php @@ -109,6 +109,9 @@ try { case 'bring_remove': bringRemoveItem(); break; + case 'bring_clean_specs': + bringCleanSpecs(); + break; case 'bring_suggest': bringSuggestItems($db); break; @@ -627,11 +630,10 @@ function useFromInventory(PDO $db): void { // Already on the list, skip adding $addedToBring = false; } else { - $spec = $product['brand'] ?: ''; $body = http_build_query([ 'uuid' => $listUUID, 'purchase' => $bringName, - 'specification' => $spec, + 'specification' => '', ]); $result = bringRequest('PUT', "https://api.getbring.com/rest/v2/bringlists/{$listUUID}", $body); $addedToBring = ($result !== null); @@ -1901,7 +1903,6 @@ function bringAddItems(): void { foreach ($items as $item) { $name = $item['name'] ?? ''; - $spec = $item['specification'] ?? ''; if (empty($name)) continue; // Map Italian name to Bring! catalog key (German) for proper recognition @@ -1916,7 +1917,7 @@ function bringAddItems(): void { $body = http_build_query([ 'uuid' => $listUUID, 'purchase' => $bringName, - 'specification' => $spec, + 'specification' => '', ]); $result = bringRequest('PUT', "https://api.getbring.com/rest/v2/bringlists/{$listUUID}", $body); @@ -1959,6 +1960,42 @@ function bringRemoveItem(): void { echo json_encode(['success' => $result !== null]); } +function bringCleanSpecs(): void { + $auth = bringAuth(); + if (!$auth) { + echo json_encode(['success' => false, 'error' => 'Credenziali Bring! non configurate']); + return; + } + + $listUUID = $auth['bringListUUID']; + if (empty($listUUID)) { + echo json_encode(['success' => false, 'error' => 'Lista non trovata']); + return; + } + + $data = bringRequest('GET', "https://api.getbring.com/rest/v2/bringlists/{$listUUID}"); + if (!$data || !isset($data['purchase'])) { + echo json_encode(['success' => false, 'error' => 'Errore nel recupero della lista']); + return; + } + + $cleaned = 0; + foreach ($data['purchase'] as $item) { + $spec = $item['specification'] ?? ''; + if ($spec !== '') { + $body = http_build_query([ + 'uuid' => $listUUID, + 'purchase' => $item['name'], + 'specification' => '', + ]); + bringRequest('PUT', "https://api.getbring.com/rest/v2/bringlists/{$listUUID}", $body); + $cleaned++; + } + } + + echo json_encode(['success' => true, 'cleaned' => $cleaned]); +} + function bringSuggestItems(PDO $db): void { $env = loadEnvVars(); $apiKey = $env['GEMINI_API_KEY'] ?? ''; @@ -2098,14 +2135,15 @@ LIMITI: - Massimo 12 suggerimenti - Ordina per PRIORITÀ REALE (prima le mancanze gravi, poi i nice-to-have) - Ogni motivo deve essere SPECIFICO ("non hai proteine fresche" non "è buono") -- Nel campo "specification" indica SEMPRE la quantità consigliata per una famiglia (es: "500g", "6 uova bio", "2 mazzetti", "1 bottiglia da 1L") +- NON inserire quantità, marche o dettagli nel campo "specification" — lascialo sempre vuoto. +- Usa nomi GENERICI dal catalogo Bring! (es: "Latte" non "Latte Granarolo 1L"). Rispondi SOLO con un JSON valido (senza markdown, senza backtick): { "suggestions": [ { - "name": "nome prodotto in italiano", - "specification": "quantità consigliata e dettagli (es: 500g, 6 uova bio, 2 mazzetti, 1 bottiglia da 1L)", + "name": "nome prodotto generico in italiano", + "specification": "", "reason": "motivo breve", "category": "frutta|verdura|latticini|carne|pesce|pane|pasta|conserve|condimenti|bevande|snack|surgelati|cereali|igiene|pulizia|altro", "priority": "alta|media|bassa" diff --git a/assets/js/app.js b/assets/js/app.js index 60e14ec..bba1cc0 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -4030,14 +4030,7 @@ async function addSelectedSuggestions() { try { const items = selected.map(s => { - // Build rich specification: combine quantity/detail + priority emoji - let spec = s.specification || ''; - const priorityEmoji = { 'alta': '🔴', 'media': '🟡', 'bassa': '🟢' }; - const emoji = priorityEmoji[s.priority] || ''; - if (emoji) { - spec = spec ? `${emoji} ${spec}` : emoji; - } - return { name: s.name, specification: spec }; + return { name: s.name }; }); const data = await api('bring_add', {}, 'POST', { items, listUUID: shoppingListUUID }); diff --git a/data/dispensa.db b/data/dispensa.db index ba757b6380cd2213dfd0dafc616fdb5d5917c05e..9a64122b80867185ab419b00c5ae3b0dec18e76f 100644 GIT binary patch delta 1064 zcmbtSOH30{6rDG3+UbY#Go=_MOrwYH*cljJ|K%jC@H2aHWJnYB&9`3NyyhE{I81I^Z zOquGf%}*!6Z6iq#`Dz;2Ku0KUB7lQ*@_f3;09IPqmR1+*ak1XgiFa{chVunEe~=68 z0_6o0cujVMq)j5VM6~`-qCk+<%+j}PaqCb%X$5yWVKrd0bQCx#(ht~N#!P|Gv_Y*P z8u`7>jJJZ!)bqUUFUR{6qgQ2x32W9Sm_Z~+Ly4%2;z$ss;IM#Xgt@h22F|UeBg;8J z4W4*r!S*Ewe)Harzke>ju1_Lin)QpIKAYCGMC?T^(+7%L{>a)dEl5&CIl;sP zMG=`1BuWXU1VvD6OO}`#Qei6*8usjH76<;6Wlk%eJ2juMg(6PZy#79<5JJ731O z?sys7n!ni#)L9s&+OqTqFhfxzRGSvEM=;uuY1GWEA{{nfMG{yq8oZ4`cd#LIXtOV^ z^{wpIr>7`?>k~*{fqnF<<}~@3qCe8B+9o@l{dS(T9Vx|4CnV-;Ay01Gq%#n6`j0GU M1bgz;7sxgGCw`V4xBvhE delta 349 zcmZoTz}awsa|4S4b1BF6$?OWzlT#E@HlI>B$v$y`#^&uB|HWjNafkl9M2@mUL_5e@D&58nBxi+)L{Ab2)W`-9# z3!ffC++@~*1Iz-vhk)vT@k~Bcnh>@)dx5kx z9AH-AnE=#c$F-TQ+l7&fX9)urP!$kN4(SQt;@JV?ZeG_DR?K3_(8e;AgRzK(b0I_9 z);h*XY)l;T+lAN}c^O%_^%$HcPPE&e$iaA)i3Mna%fyKe+l#mvC%G^SF!xSp4`5UT z+LX$?y*HS#yocG9rEfa>1IBKk*dONYeNPz6vYA8Je*@JqtptjBvrj)6&cr+2ij9$L KyHEtvJ9YrsF=O=r diff --git a/index.html b/index.html index 1c946ac..87b8345 100644 --- a/index.html +++ b/index.html @@ -884,6 +884,6 @@ - +