85 lines
5.5 KiB
Markdown
85 lines
5.5 KiB
Markdown
# Session 2026-05-06: User-scoped AI, admin-toggles och premium
|
|
|
|
Denna session:
|
|
- Införde user-scoped AI-förslag för ingrediens- och kategorimatchning (premium-funktion).
|
|
- Admin kan nu slå på/av AI per användare via backend och UI.
|
|
- Flutter och backend respekterar premium-flagga och AI-tillgång i alla flöden.
|
|
- Lessons learned: Fallback-first AI, tydlig separation av analys, och ownerId/userId-filter i all logik ger robustare system.
|
|
|
|
Se även:
|
|
- [TEKNISK_BESKRIVNING.md](../../TEKNISK_BESKRIVNING.md) för teknisk genomgång.
|
|
- [RECIPE_IMPORT_REFACTOR_PLAN.md](../../RECIPE_IMPORT_REFACTOR_PLAN.md) för refaktorplan.
|
|
|
|
# AI-funktioner i Recipe-App: Premium-funktioner och rekommenderade modeller
|
|
|
|
> Se [README.md](README.md) för funktionsöversikt, [TEKNISK_BESKRIVNING.md](TEKNISK_BESKRIVNING.md) för teknisk arkitektur och [NEXT_STEPS.md](NEXT_STEPS.md) för prioriterade nästa steg.
|
|
|
|
## Dokumentstatus (2026-05-03)
|
|
|
|
### Målgrupp
|
|
Detta arkivdokument är för teknisk planering och historik kring AI-strategi.
|
|
|
|
### Komplettering från senaste sessionerna
|
|
- AI-förslag för kategorier används tillsammans med regelbaserad parser, inte som ensam källa.
|
|
- Contradiction guards och domänregler (bl.a. bröd/rostbröd) prioriteras för att reducera felklassning.
|
|
- Klientens UX separerar produktförslag från AI-kategoriförslag för tydligare semantik i granskningen.
|
|
|
|
Detta dokument beskriver de AI-funktioner som implementeras eller planeras som **premium-funktioner** i **recipe-app**. Varje funktion är kopplad till en rekommenderad Mistral-modell, med fokus på att använda de enklaste och mest kostnadseffektiva alternativen.
|
|
|
|
---
|
|
|
|
## Översikt över AI-funktioner
|
|
|
|
| Funktion | Beskrivning | Modell | Status |
|
|
|---|---|---|---|
|
|
| **Automatisk kategorisering** | AI kategoriserar produkter baserat på namn mot systemets kategoriträd. Admins kör bulk-kategorisering; premium-användare får förslag per produkt. | `mistral-small-2603` | ✅ Klart |
|
|
| **Kvittoimport — kategorisuggestion** | Ej matchade kvittorader får ett AI-kategoriförslag för premium-användare, visas som ledtråd i gränssnittet. | `mistral-small-2603` | ✅ Klart |
|
|
| **Receptförslag utifrån hemmalager** | AI analyserar användarens inventory och föreslår recept baserat på tillgängliga ingredienser. | `mistral-small-2603` | ❌ Planerad |
|
|
| **Veckoplanering med AI** | AI genererar en veckoplan baserat på inventory, recept och användarpreferenser. | `mistral-small-2603` | ❌ Planerad |
|
|
| **Smart inköpslista** | AI skapar en inköpslista baserat på saknade ingredienser och historisk förbrukning. | `mistral-small-2603` | ❌ Planerad |
|
|
| **"Vad ska jag laga idag?"** | AI ger snabba receptförslag baserat på vad användaren har hemma. | `mistral-small-2603` | ❌ Planerad |
|
|
| **Enhetskonvertering** | AI hjälper till att konvertera enheter (t.ex. gram till msk) och hanterar osäkerheter. | `mistral-small-2603` | ❌ Planerad |
|
|
| **AI-assisterad lageravräkning** | AI hjälper till att dra av rätt mängder från inventory när ett recept lagas. | `mistral-small-2603` | ❌ Planerad |
|
|
| **Personliga matlagningsråd** | AI ger personliga tips baserat på användarens matlagningshistorik och inventory. | `mistral-small-2603` | ❌ Planerad |
|
|
| **AI-assisterad import av PDF/länkar** | AI extraherar recept och prisdata från PDF-filer och länkar för att underlätta importen. | `mistral-small-2603` | ❌ Planerad |
|
|
| **Kostnadseffektiv inköpslista** | AI skapar en kostnadseffektiv inköpslista baserat på inventory och aktuella butikspriser. | `mistral-small-2603` | ❌ Planerad |
|
|
|
|
---
|
|
|
|
## Bakgrund och motivering
|
|
|
|
### Varför dessa funktioner?
|
|
- **Receptförslag utifrån hemmalager** och **veckoplanering** är centrala för att hjälpa användare att minska matsvinn och spara tid.
|
|
- **Smart inköpslista** och **kostnadseffektiv inköpslista** är viktiga för att optimera användarens matbudget.
|
|
- **AI-assisterad import av PDF/länkar** underlättar för användare att lägga in recept och prisdata utan manuellt arbete.
|
|
|
|
### Varför dessa modeller?
|
|
- **`mistral-small-2603`** används för de flesta funktioner eftersom den är kostnadseffektiv och klarar av strukturerad data och logik.
|
|
- **`mistral-tiny-2603`** används för enklare, snabbare uppgifter som **"Vad ska jag laga idag?"** och **personliga matlagningsråd**.
|
|
- **`labs-leanstral-2603`** används för **enhetskonvertering** eftersom den är optimerad för kod och logik.
|
|
|
|
---
|
|
|
|
## Tekniska överväganden
|
|
|
|
### Integration med befintlig arkitektur
|
|
- **Backend**: AI-funktionerna kommer att implementeras som separata tjänster i NestJS, med egna endpoints för varje funktion.
|
|
- **Frontend**: Resultaten från AI-funktionerna kommer att visas i Next.js-gränssnittet, med tydlig feedback till användaren.
|
|
- **Databas**: Resultat och användardata lagras i MariaDB via Prisma ORM.
|
|
|
|
### Säkerhet och validering
|
|
- **Validering**: AI-output valideras alltid mot strukturerade scheman (t.ex. med Zod) för att säkerställa datakvalitet.
|
|
- **Säkerhet**: Känslig data krypteras enligt den hybridlösning med PGP och AES som vi tidigare diskuterat.
|
|
|
|
---
|
|
|
|
## Nästa steg
|
|
|
|
1. **Receptförslag** — "Vad ska jag laga idag?" är nästa naturliga premium-funktion; bygger direkt på inventory och recept som redan finns i systemet.
|
|
2. **Veckoplanering med AI** — kräver att receptförslag fungerar; planera mot kampanjpriser kräver extern datakälla.
|
|
3. **Validering av AI-output** — säkerställ att AI-svar alltid valideras mot strukturerade scheman (t.ex. Zod) för datakvalitet.
|
|
|
|
---
|
|
|
|
|