Commit Graph

50 Commits

Author SHA1 Message Date
dadaloop82 134e5dfa4e 20260316g: Fix conf anomaly detection + auto-split opened packages
- Fixed isSuspiciousDefaultQty: for conf products, checks package_unit thresholds
  (375g is fine for g-max=10000, not checked against conf-max=50)
- Auto-split on use: when using from a conf product with whole+fractional qty,
  automatically separates whole confs from opened part
  e.g. Panna 2.6conf → use 5g → 2conf (sealed) + 0.56conf (opened)
- Move modal now moves only the opened row (via opened_id)
- Use query prefers fractional rows (opened packages) first
- Non-conf products still get standard move-after-use behavior
2026-03-16 08:07:17 +00:00
dadaloop82 5ca809b31f 20260316f: Fix Cracker integrali default_qty (500→16) + detect absurd package sizes
- Fixed Cracker integrali default_quantity from 500 to 16 (was weight in grams, should be pieces)
- Review system now also flags products with absurd default_quantity (package size)
  e.g. a 'pz' product claiming 500pz per package gets flagged as '📦 Conf. sospetta'
- Uses same QTY_THRESHOLDS max values for detection
2026-03-16 08:01:58 +00:00
dadaloop82 4d9fd8638e 20260316d: Sort dashboard sections - opened by remaining qty asc, expiring/expired already correct 2026-03-16 07:51:05 +00:00
dadaloop82 eb5ee60dd7 Sposta prodotto dopo l'uso + fix prodotti aperti
- Dopo aver usato un prodotto, se rimane quantità mostra modal con opzione
  di spostarlo in un'altra posizione (es. dispensa→frigo dopo apertura)
- La scadenza viene ricalcolata per la nuova posizione
- Fix marmellata: default_quantity era 0 → non appariva tra prodotti aperti
- Auto-set default_quantity al primo add per prodotti g/ml/kg/l senza pkg size
- Versione: 20260316b
2026-03-16 06:48:48 +00:00
dadaloop82 d0ecbff5bc 📦 Backup database automatico - 2026-03-16 03:00 2026-03-16 03:00:01 +00:00
dadaloop82 68dd7810f0 Fix ricalcolo scadenza per freezer e sotto vuoto
- selectPurchaseType: non usa più date hardcoded, ricalcola sempre in base
  alla posizione e stato sotto vuoto corrente
- Edit inventario: cambiare posizione o toggle sotto vuoto ricalcola la scadenza
- Spostamento prodotto: ricalcola scadenza per la nuova posizione
- Fix DB: fusi di pollo freezer 120gg, Bel Paese vacuum 21gg, Speck vacuum 75gg
- Versione: 20260315j
2026-03-15 19:15:22 +00:00
dadaloop82 dc9785c160 Estendi 'Prodotti Aperti' a tutti i tipi (g, ml, l, pz, non solo conf)
- Query SQL ora rileva prodotti aperti per tutte le unità dove la quantità
  non è multiplo della dimensione confezione (soglia 2% per evitare errori arrot.)
- Frontend: rendering differente per conf (X conf + rimanente) e altri (Xg / Yg)
- Versione: 20260315i
2026-03-15 19:05:03 +00:00
dadaloop82 e2942d73f2 USA: possibilità di spostare il prodotto in altra posizione dopo l'uso 2026-03-15 18:44:53 +00:00
dadaloop82 f9910c99b5 Fix USA: mostra solo posizioni dove il prodotto esiste (previene 'not found') 2026-03-15 18:37:10 +00:00
dadaloop82 8f1a2b785f Scadenza: freezer estende durata, sotto vuoto formaggi potenziato, ricalcolo al cambio posizione 2026-03-15 18:15:09 +00:00
dadaloop82 4239e0b204 🫙 Sotto vuoto: flag per estendere scadenza prodotti conservati sotto vuoto 2026-03-15 18:09:38 +00:00
dadaloop82 3f0f27e938 Multipack→conf pre-fill (2x200g→2 conf da 200g) + modifica inventario da action page 2026-03-15 17:58:11 +00:00
dadaloop82 b90fe409d6 Sempre modificabile nome/marca prodotto: bottone ✏️ sulla preview 2026-03-15 17:51:22 +00:00
dadaloop82 067a4acb5c Add: mostra totale aggiornato nel toast + auto-rimuovi da Bring dopo acquisto 2026-03-15 17:47:29 +00:00
dadaloop82 17fdc993a5 Bring: non inviare marca/quantità, usa solo nomi generici catalogo. Puliti 27 articoli. 2026-03-15 17:19:36 +00:00
dadaloop82 7e3a3701e6 📦 Backup database automatico - 2026-03-15 03:00 2026-03-15 03:00:01 +00:00
dadaloop82 a960c05ee2 📦 Backup database automatico - 2026-03-14 03:00 2026-03-14 03:00:01 +00:00
dadaloop82 f64423296b Prodotti aperti: includi anche non-conf con quantità parziale (19 prodotti) 2026-03-13 15:10:17 +00:00
dadaloop82 948e851b71 Dashboard: sezione Prodotti Aperti (conf parzialmente usate) 2026-03-13 15:02:27 +00:00
dadaloop82 6c9fade761 Fix display confezioni parziali: mostra '1 conf da 1L + 800ml' invece di arrotondare a 2 2026-03-13 14:50:08 +00:00
dadaloop82 38c8914fea Fix step sub-unità: L ora step 0.1, ml step 50, g step 10 2026-03-13 14:46:12 +00:00
dadaloop82 3733adf2e9 Confezioni: permetti uso parziale in sub-unità (ml, g) con switch unità 2026-03-13 14:42:39 +00:00
dadaloop82 9062c498de Svuota campo ricerca inventario/prodotti al cambio pagina 2026-03-13 14:34:34 +00:00
dadaloop82 e300f56c52 Modifica prodotto: rimossa immagine rotta dal form 2026-03-13 14:24:42 +00:00
dadaloop82 d92b72cfae Fix: svuota ricerca, rimuovi autocomplete prodotto nuovo, camera più grande, modalità spesa, fix duplicati chat 2026-03-13 14:20:00 +00:00
dadaloop82 cbb7d53e78 Screensaver: orologio più grande, frasi dinamiche fade-in/out, font fact ingrandito 2026-03-13 07:16:55 +00:00
dadaloop82 196c38fd23 📦 Backup database automatico - 2026-03-13 03:00 2026-03-13 03:00:01 +00:00
dadaloop82 bf7941b0fd Fix: allow 'waste' transaction type for thrown-out items (CHECK constraint) 2026-03-12 18:39:09 +00:00
dadaloop82 53fb85b42b Weekly recipe variety + soften fridge priority (suggestion, not mandatory) 2026-03-12 18:20:47 +00:00
dadaloop82 f2b090f107 Move recipes, chat, settings to shared DB — sync across devices, 1 recipe per meal per day 2026-03-12 18:06:50 +00:00
dadaloop82 c5f22fdf42 feat: BarcodeDetector nativo + camera selector + recipe dedup + remote debug logging
- Scanner: usa BarcodeDetector API nativa (Chrome Android) come primario, Quagga come fallback
- Settings: aggiunta tab Fotocamera per scegliere posteriore/anteriore/specifica
- Scanner feedback: barra verde (scansione attiva), gialla (barcode rilevato)
- Ricette: invio titoli ricette del giorno per evitare duplicati nello stesso giorno
- Debug: sistema di logging remoto (client_debug.log) per diagnostica da dispositivi chioscati
- Fix: permessi .env per scrittura da Apache
2026-03-12 17:32:54 +00:00
dadaloop82 537a351f73 📦 Backup database automatico - 2026-03-12 03:00 2026-03-12 03:00:01 +00:00
dadaloop82 e6a9fb06a7 fix: cache-busting + validazione conf + reset form prodotto
- Aggiunto version param a CSS/JS per forzare reload browser
- startManualEntry() resetta pf-conf-size-row correttamente
- Validazione: se unit=conf ma dimensione non specificata, errore
- onAddUnitChange: scrollIntoView quando conf-size-row appare
- Reset campi conf quando si cambia unità nel form aggiungi
2026-03-11 15:54:20 +00:00
dadaloop82 bf2e137502 feat: confezioni (conf) chiede dimensione singola confezione
- Nuovo campo package_unit in DB (migrazione automatica)
- Form aggiungi/modifica: quando si seleziona 'conf', appare campo per
  specificare il contenuto della singola confezione (es. 300g, 2L)
- Visualizzazione: '3 conf (da 300g)' in inventario, dettaglio, butta
- formatQuantity aggiornato con supporto package_unit
- API: salva/restituisce package_unit in tutti gli endpoint
- Ricette e chat: contesto arricchito con info confezione
- CSS: stili per il nuovo campo conf-size
2026-03-11 15:43:44 +00:00
dadaloop82 af3b5941a0 Add Gemini Chat: conversational AI assistant for kitchen help
- Gemini star icon button next to camera in header
- Full chat page with message bubbles, typing indicator
- Conversation history persisted in localStorage (last 50 messages)
- System context includes: full inventory with expiry dates, appliances, dietary restrictions
- Multi-turn conversation with Gemini 2.0 Flash
- Pre-built suggestion chips: snack, juice/smoothie, light meal, use expiring items
- Clear chat button for fresh conversations
- Indigo/purple themed UI matching Gemini branding
- PHP gemini_chat API endpoint with inventory context injection
2026-03-11 15:26:19 +00:00
dadaloop82 ff1f27fe8d Add 'Da revisionare' dashboard section for suspicious quantities
- Flags inventory items with abnormally small or large quantities
- Per-unit thresholds (pz/conf, g, kg, ml, l)
- Confirm button (✓) to mark as correct (stored in localStorage)
- Edit button (✏️) opens existing edit modal
- Smooth dismiss animation on confirm
- Amber-themed styling to distinguish from expiry alerts
2026-03-11 13:48:24 +00:00
dadaloop82 c6d7c1f27d Fix tonno 199.9g→100g e frazione più grande (1rem) 2026-03-11 13:40:22 +00:00
dadaloop82 df56d8dc76 Fix conversione unità ricette + indicatore confezione
- Fix qty_number nelle ricette: validazione e conversione automatica
  delle unità di misura (g↔kg, ml↔L, g→pz con default_quantity)
- Sanity check: cap qty_number al disponibile, correzione valori
  assurdamente piccoli dovuti a errori di Gemini
- Aggiunto indicatore confezione (¼, ½, ¾, pieno) vicino alla
  quantità nell'inventario e nella barra stato dopo scansione
- Aggiunto default_quantity nella query inventory_list
- Nuova funzione formatPackageFraction() per calcolo frazioni
2026-03-11 13:36:21 +00:00
dadaloop82 469aadb8fc Aggiunta pagina impostazioni, preview prodotto migliorata, gestione inventario smart e ricette avanzate
- Icona ingranaggio nella navbar, salvataggio su localStorage e .env
- Preview prodotto più grande dopo scansione barcode
- Controllo inventario dopo scan: mostra quantità disponibile in grande
- 3 pulsanti contestuali (AGGIUNGI/USA/BUTTA) se prodotto già presente
- Funzionalità BUTTA con modale per quantità parziale o totale
- Quantità prominenti nella lista inventario
- Quantità visibili negli alert scadenza/scaduti in dashboard
- Unità di misura modificabile nella modale di modifica inventario
- Opzioni ricetta: Pasto Veloce, Poca Fame, Priorità Scadenze, ecc.
- Gestione smart quantità ricette (evita rimasugli inutilizzabili)
- Elettrodomestici configurabili per suggerimenti ricette
- Restrizioni alimentari nel prompt ricette
- Endpoint API: save_settings, get_settings
2026-03-11 13:08:02 +00:00
dadaloop82 05cc2b9138 📦 Backup database automatico - 2026-03-11 03:00 2026-03-11 03:00:01 +00:00
dadaloop82 77ed2d6964 feat: auto-aggiunta a Bring! quando un prodotto finisce
- useFromInventory controlla se il prodotto è esaurito ovunque (qty=0 in tutte le location)
- Se finito, lo aggiunge automaticamente alla lista Bring! con nome e marca
- Toast notifica '🛒 Prodotto finito → aggiunto a Bring!' in tutte le UI (ricetta, uso diretto, usa tutto)
- Prosciutto crudo light e Philadelphia Light aggiunti manualmente a Bring!
2026-03-10 18:18:40 +00:00
dadaloop82 b9f3eb3301 fix: ricorda ingredienti già usati nella ricetta cachata
- Quando clicchi 'Usa', salva used=true nell'ingrediente nel localStorage
- Al reload, ingredienti già usati mostrano '✔️ Scalato' disabilitato
- Evita di scalare lo stesso ingrediente due volte per sbaglio
2026-03-10 17:53:17 +00:00
dadaloop82 8650b377a4 feat: mostra marca, scadenza e posizione negli ingredienti ricetta
- Backend: aggiunge brand e expiry_date all'arricchimento ingredienti
- Frontend: sotto ogni ingrediente dalla dispensa mostra:
  - Marca in corsivo (se presente)
  - Icona posizione (🧊 Frigo/Freezer, 🗄️ Dispensa)
  - Scadenza con colore urgenza ( scaduto, 🔴 <3gg, 🟡 <7gg, 📅 data)
- Nuovo stile CSS per riga dettaglio ingrediente
2026-03-10 17:39:49 +00:00
dadaloop82 991a4a9b99 DB update 2026-03-10 16:15:46 +00:00
dadaloop82 19992e6199 Auto-refresh UI after every data mutation
- Added refreshCurrentPage() to reload active page data
- deleteInventoryItem/submitEditInventory now refresh current page (works from dashboard or inventory)
- removeBringItem/addSelectedSuggestions update dashboard shopping count
- Track current page ID for context-aware refresh
2026-03-10 16:15:01 +00:00
dadaloop82 64696dfaa4 Fix: shopping count uses 'purchase' not 'items' from Bring API 2026-03-10 16:12:24 +00:00
dadaloop82 9fb2c7ab03 Freezer-aware expired safety + shopping count in dashboard
- getExpiredSafety: items in freezer get bonus days (carne/pesce +3m, verdura/frutta +6m, latticini/pane +2m, altro +4m)
- Expired items show location icon (❄️/🧊) for context
- Dashboard: replaced 'Totale' stat card with 'Spesa' showing Bring! list count
- Added loadShoppingCount() to fetch count from Bring! API
2026-03-10 16:10:30 +00:00
dadaloop82 223ceb71b0 📦 Backup database automatico - 2026-03-10 13:16 2026-03-10 13:16:45 +00:00
dadaloop82 3f4d1bd194 Aggiunta ricerca rapida per nome prodotto (frutta/verdura sfusa) 2026-03-10 13:04:53 +00:00
dadaloop82 24dd88b5cf Add daily automatic database backup to GitHub
- Remove data/ from .gitignore (keep WAL/SHM excluded)
- Add backup.sh script: commits and pushes DB changes daily
- Cron job at 3:00 AM: /var/www/html/dispensa/backup.sh
- Include initial database snapshot
2026-03-10 12:38:20 +00:00