fix(receipt-import): add hard bacon override to pork category
This commit is contained in:
@@ -295,9 +295,13 @@ export class ReceiptImportService {
|
||||
? this.applyContradictionGuard(signalText || item.rawName, nextSuggestion, categories)
|
||||
: null;
|
||||
|
||||
const finalSuggestion = guardedSuggestion
|
||||
? this.applyHardCategoryOverrides(signalText || item.rawName, guardedSuggestion, categories)
|
||||
: null;
|
||||
|
||||
enriched.push(
|
||||
guardedSuggestion
|
||||
? { ...item, categorySuggestion: guardedSuggestion }
|
||||
finalSuggestion
|
||||
? { ...item, categorySuggestion: finalSuggestion }
|
||||
: item,
|
||||
);
|
||||
} catch {
|
||||
@@ -309,6 +313,43 @@ export class ReceiptImportService {
|
||||
return enriched;
|
||||
}
|
||||
|
||||
private applyHardCategoryOverrides(
|
||||
signalText: string,
|
||||
suggestion: CategorySuggestion,
|
||||
categories: Awaited<ReturnType<CategoriesService['findFlattened']>>,
|
||||
): CategorySuggestion {
|
||||
const normalized = normalizeForRules(signalText);
|
||||
const hasBaconLikeSignal =
|
||||
/\bbacon\b/.test(normalized) ||
|
||||
/\bbacn\b/.test(normalized) ||
|
||||
/\bbaco\b/.test(normalized) ||
|
||||
/\bbac[a-z]{1,3}\b/.test(normalized) ||
|
||||
/\bsidflask\b/.test(normalized) ||
|
||||
/\bpancetta\b/.test(normalized);
|
||||
|
||||
if (!hasBaconLikeSignal) return suggestion;
|
||||
|
||||
const l3Pork = categories.find(
|
||||
(c) =>
|
||||
c.name.toLowerCase() === 'fläsk' &&
|
||||
c.path.toLowerCase().startsWith('kött, chark & fågel > kött > '),
|
||||
);
|
||||
if (!l3Pork) return suggestion;
|
||||
|
||||
if (suggestion.categoryId === l3Pork.id) return suggestion;
|
||||
|
||||
this.logger.log(
|
||||
`Hard-override: "${signalText}" remappas från "${suggestion.path}" till "${l3Pork.path}"`,
|
||||
);
|
||||
return {
|
||||
categoryId: l3Pork.id,
|
||||
categoryName: l3Pork.name,
|
||||
path: l3Pork.path,
|
||||
confidence: 'high',
|
||||
usedFallback: true,
|
||||
};
|
||||
}
|
||||
|
||||
private ruleBasedCategorySuggestion(
|
||||
rawName: string,
|
||||
categories: Awaited<ReturnType<CategoriesService['findFlattened']>>,
|
||||
|
||||
Reference in New Issue
Block a user