feat(ai): 3 new AI features — product storage hint, shopping tips, anomaly explain

Feature 1: AI product storage/shelf-life hint
- New API: gemini_product_hint → {location, expiry_days, reason}
- After opening the add form, Gemini suggests optimal storage and expiry
- Shown inline next to expiry estimate as a subtle AI badge with tooltip
- Also updates location buttons if AI suggests a different location
- Cached permanently in food_facts_cache.json (per name+lang)

Feature 2: AI-enriched shopping suggestions
- New API: gemini_shopping_enrich → adds tip field to each suggestion
- After bring_suggest renders, Gemini adds practical buying/storing tips
- Tips shown inline under each suggestion item in indigo italic text
- Cached per item list + lang in food_facts_cache.json

Feature 3: AI anomaly explanation
- New API: gemini_anomaly_explain → plain-language explanation
- '🤖 Spiega' button added to anomaly banners (when Gemini available)
- Explains in 2-3 conversational sentences why the discrepancy likely happened
- Replaces technical banner detail text with friendly explanation
- No caching (anomaly context is always specific)
This commit is contained in:
dadaloop82
2026-05-04 06:01:44 +00:00
parent a85390b498
commit 529c09fda3
3 changed files with 419 additions and 1 deletions
+10
View File
@@ -2093,6 +2093,12 @@ body {
color: var(--text-muted);
margin-top: 2px;
}
.suggestion-ai-tip {
font-size: 0.75rem;
color: #6366f1;
margin-top: 3px;
opacity: 0.88;
}
.priority-badge {
display: inline-block;
@@ -4899,6 +4905,10 @@ body.cooking-mode-active .app-header {
background: #e0e7ff;
color: #4338ca;
}
.btn-banner-ai {
background: #ede9fe;
color: #7c3aed;
}
.btn-banner-weigh {
background: #f3e8ff;
color: #7c3aed;