From b342de906e921feb410a880998fe500c6a7b19ac Mon Sep 17 00:00:00 2001 From: Nils-Johan Gynther Date: Sat, 9 May 2026 23:31:17 +0200 Subject: [PATCH] feat: implement alias strategy for receipt import with user-scoped and global fallback aliases --- NEXT_STEPS.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/NEXT_STEPS.md b/NEXT_STEPS.md index 205d791b..d7d92ba3 100644 --- a/NEXT_STEPS.md +++ b/NEXT_STEPS.md @@ -30,6 +30,29 @@ All detaljhistorik och djup teknisk bakgrund finns i respektive tekniska dokumen ## Huvudprioriteringar 1. Aliasstrategi i kvittoimport: user-scope som standard, global fallback via admin. + - Målbild: + - Vanliga användare skapar och använder privata alias som bara gäller deras egna importer. + - Admin kan dessutom skapa globala alias som fungerar som fallback för alla användare. + - Matchningsordning ska alltid vara: user alias -> global alias -> vanlig produktmatchning. + - Backend: + - Centralisera normalisering av `receiptName` så samma regler används i lookup, upsert och alias-inlärning. + - Härda guardrails för alias: blockera tomma alias, uppenbart brus (`rabatt`, `summa`, `pant`) och andra olämpliga kvittonamn. + - Säkerställ deterministisk prioritet mellan privata och globala alias i receipt-import. + - Behåll nuvarande schema i första fasen; ingen ny migration behövs så länge nuvarande `ReceiptAlias`-modell räcker. + - Flutter: + - Lägg alias-lärande nära manuell korrigering i receipt-import så användaren explicit kan välja att spara matchningen för framtida importer. + - Lägg en enkel aliasöversikt där användaren kan se och ta bort sina privata alias. + - Admin-UI ska kunna skapa globala alias utan att blanda ihop dem med vanliga användares privata alias. + - Tester: + - Verifiera att user alias alltid prioriteras före global alias för samma `receiptName`. + - Verifiera att global alias används när user alias saknas. + - Verifiera att vanlig användare inte kan skapa globala alias eller ta bort andras alias. + - Verifiera att manuell korrigering + `learnAlias` ger direkt träff vid nästa import. + - Verifiera att normalisering gör alias robust mot versaler, whitespace och enklare stavningsvariationer. + - Leveransordning: + - Fas 1: backend-hardening + tester. + - Fas 2: UI-stöd i receipt import för alias-inlärning. + - Fas 3: separat aliasöversikt för användare och admin. 2. ✅ **[CLEANUP] Receipt import legacy code (2026-05-09):** KLART - Borttaget: `matchProducts()`, `enrichWithAiCategories()`, `findWordMatch()` (gammal), m.fl. - Tester uppdaterade och gröna (66/66)