feat(reco): högtids-sök – expandera till eventets foodTags + holidayTag (MIKRO E1)
CI / Typecheck, test & build (push) Failing after 43s

This commit is contained in:
Sven (AAMOS AI)
2026-08-14 22:45:44 +07:00
parent ed536bcf96
commit 9c8ffbe2ab
+22 -3
View File
@@ -399,15 +399,34 @@ export async function recommendationRoutes(app: FastifyInstance) {
? viewWeights(q.view)
: depersonalize(viewWeights(q.view));
// Om användaren sökte specifikt (t.ex. "kyckling") visa matchande recept först.
// Högtids-sök: matchar sökningen ett event för marknaden (året runt) → expandera till dess foodTags + slug.
const holidayFoodTags: string[] = [];
const holidaySlugs: string[] = [];
if (q.craving) {
const qc = q.craving.toLowerCase();
for (const e of events) {
if (
qc.includes(e.slug) ||
qc.includes(e.nameSv.toLowerCase()) ||
(e.nameLocalized ? qc.includes(e.nameLocalized.toLowerCase()) : false)
) {
holidayFoodTags.push(...e.foodTags);
holidaySlugs.push(e.slug);
}
}
}
// Sökte användaren specifikt (råvara "kyckling" ELLER högtid "midsommar")? Visa matchande först.
let pool = scoredCandidates;
if (craving && (craving.keywords.length > 0 || craving.cuisine)) {
if (craving && (craving.keywords.length > 0 || craving.cuisine || holidaySlugs.length > 0)) {
const matches = scoredCandidates.filter((c) => {
const title = c.titleSv.toLowerCase();
const tagSet = new Set<string>(c.tags as unknown as string[]);
return (
(!!craving.cuisine && c.cuisine === craving.cuisine) ||
craving.keywords.some((k) => title.includes(k) || tagSet.has(k))
craving.keywords.some((k) => title.includes(k) || tagSet.has(k)) ||
holidaySlugs.some((s) => c.holidayTags.includes(s)) ||
holidayFoodTags.some((ft) => title.includes(ft) || tagSet.has(ft))
);
});
if (matches.length > 0) pool = matches; // annars behåll alla (aldrig tomt)