feat: Enhance category suggestion logic with improved matching rules and disambiguation guidelines
Test Suite / test (24.15.0) (push) Has been cancelled

This commit is contained in:
Nils-Johan Gynther
2026-05-11 10:35:30 +02:00
parent 56050a896b
commit c63afad672
+14 -5
View File
@@ -160,22 +160,31 @@ Regler:
Tillgängliga kategorier (format: [id] Sökväg): Tillgängliga kategorier (format: [id] Sökväg):
${categoryList} ${categoryList}
KWICK-MATCHNING (gör detta först): PRIORITERINGSORDNING (måste följas):
1. Regelmatch (keyword + sortlexikon)
2. Synonym/semantisk match inom livsmedelsdomän
3. Fallback enligt regler nedan
SNABBMATCHNING (gör detta först):
- Kött/fläsk: Sök efter ord som "fläsk", "flaskytterfile", "bacon", "kotlett", "karré" → Kött, chark & fågel > Fläsk - Kött/fläsk: Sök efter ord som "fläsk", "flaskytterfile", "bacon", "kotlett", "karré" → Kött, chark & fågel > Fläsk
- Fågel: Sök efter "kyckling", "kalkon", "drumstick", "filé" → Kött, chark & fågel > Fågel - Fågel: Sök efter "kyckling", "kalkon", "drumstick", "filé" → Kött, chark & fågel > Fågel
- Äpplen/fruktsorter: Sök efter "äpple", "apple", "granny smith", "pink lady", "royal gala", "golden delicious", "jonagold", "fuji" → Frukt & Grönt > Frukt > Äpplen (eller Frukt om Äpplen saknas) - Äpplen/fruktsorter: Sök efter "äpple", "apple", "granny smith", "pink lady", "royal gala", "golden delicious", "jonagold", "fuji", "braeburn", "aroma", "red moon" → Frukt & Grönt > Frukt > Äpplen (eller Frukt om Äpplen saknas)
- Choklad/spreads: Sök efter "nutella", "choklad", "kakao", "spreads" → Sötsaker & snacks > Choklad & spreads - Choklad/spreads: Sök efter "nutella", "choklad", "kakao", "spreads" → Sötsaker & snacks > Choklad & spreads
- Bröd: Sök efter "bröd", "toast", "brödrost", "limpa" → Bröd & bakvaror > Bröd - Bröd: Sök efter "bröd", "toast", "brödrost", "limpa" → Bröd & bakvaror > Bröd
DISAMBIGUERING:
- Om ett ord kan vara både varumärke och livsmedelssort, välj livsmedelstolkning ENDAST om ordet finns i sort/keyword-reglerna eller tydligt matchar kategoriträdet.
- Om ingen tydlig livsmedelsmatch finns, gå till fallback istället för att gissa aggressivt.
Regler: Regler:
1. Använd KEYWORD-MATCHNING först innan annat. 1. Använd SNABBMATCHNING först innan annat.
2. Om ingen keyword-match, välj den mest specifika underkategorin som passar. 2. Om ingen keyword-match, välj den mest specifika underkategorin som passar.
3. Om ingen specifik kategori passar, välj en underkategori under "Övrigt" om möjligt. 3. Om ingen specifik kategori passar, välj en underkategori under "Övrigt" om möjligt.
4. Om ingen underkategori under "Övrigt" passar, välj "Övrigt" (den kategori vars sökväg är exakt "Övrigt"). 4. Om ingen underkategori under "Övrigt" passar, välj "Övrigt" (den kategori vars sökväg är exakt "Övrigt").
5. Du MÅSTE alltid returnera ett svar — aldrig null eller tomt. 5. Du MÅSTE alltid returnera ett svar — aldrig null eller tomt.
6. Svara ENDAST med giltig JSON i detta format: { "categoryId": <nummer>, "confidence": "high" | "medium" | "low" } 6. Svara ENDAST med giltig JSON i detta format: { "categoryId": <nummer>, "confidence": "high" | "medium" | "low" }
- "high": keyword-match ELLER uppenbart matchande kategori - "high": regelmatch (keyword/sort) ELLER uppenbart exakt kategoriträff
- "medium": trolig matchning - "medium": trolig semantisk matchning inom livsmedelsdomän
- "low": osäker, används fallback (Övrigt eller underkategori till Övrigt)`; - "low": osäker, används fallback (Övrigt eller underkategori till Övrigt)`;
const userPrompt = `Produkt: "${productName}"`; const userPrompt = `Produkt: "${productName}"`;