feat: implement matchedVia tracking for receipt items and enhance user alias management
Test Suite / test (24.15.0) (push) Has been cancelled

This commit is contained in:
Nils-Johan Gynther
2026-05-07 13:57:41 +02:00
parent f7446cc2df
commit d92272e554
9 changed files with 287 additions and 8 deletions
@@ -309,6 +309,7 @@ export class ReceiptImportService {
matchedProductId: alias.product.id,
matchedProductName: alias.product.canonicalName ?? alias.product.name,
unit: mappedUnit ?? item.unit,
matchedVia: 'alias' as const,
...(cat ? { categorySuggestion: { categoryId: cat.id, categoryName: cat.name, path: cat.name, confidence: 'high' as const, usedFallback: false } } : {}),
};
}
@@ -316,7 +317,7 @@ export class ReceiptImportService {
// 2. Ordbaserad matchning (förslag, kräver bekräftelse)
const suggestion = this.findWordMatch(raw, products);
if (!suggestion) {
return { ...item };
return { ...item, matchedVia: 'none' as const };
}
// Kontrollera om det finns en enhetsmappning för produkten och användaren
@@ -333,6 +334,7 @@ export class ReceiptImportService {
suggestedProductId: suggestion.id,
suggestedProductName: suggestion.canonicalName ?? suggestion.name,
unit: preferredUnit,
matchedVia: 'wordmatch' as const,
...(cat ? { categorySuggestion: { categoryId: cat.id, categoryName: cat.name, path: cat.name, confidence: 'medium' as const, usedFallback: false } } : {}),
};
});
@@ -547,7 +549,7 @@ export class ReceiptImportService {
enriched.push(
finalSuggestion
? { ...item, categorySuggestion: finalSuggestion }
? { ...item, categorySuggestion: finalSuggestion, matchedVia: item.matchedVia ?? (finalSuggestion ? 'ai' as const : 'none' as const) }
: item,
);
} catch (err) {