feat: implement alias strategy for receipt import with user-scoped and global fallback aliases
Test Suite / test (24.15.0) (push) Has been cancelled

This commit is contained in:
Nils-Johan Gynther
2026-05-09 23:31:17 +02:00
parent 7aa93ff5d0
commit b342de906e
+23
View File
@@ -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)