StyleGPT-milestone2 / src /utils /categoryNormalizer.ts
nexusbert's picture
push
016cbbb
const categoryMap: Record<string, string> = {
"t-shirt": "shirts",
"shirt": "shirts",
"polo shirt": "shirts",
"blouse": "shirts",
"tank top": "shirts",
"crop top": "shirts",
"tunic": "shirts",
"jumper": "shirts",
"sweater": "shirts",
"pullover": "shirts",
"cardigan": "shirts",
"hoodie": "shirts",
"sweatshirt": "shirts",
"jersey": "shirts",
"sports jersey": "shirts",
"football jersey": "shirts",
"basketball jersey": "shirts",
"soccer jersey": "shirts",
"dress": "dresses",
"mini dress": "dresses",
"sundress": "dresses",
"cocktail dress": "dresses",
"evening dress": "dresses",
"maxi dress": "dresses",
"romper": "dresses",
"jumpsuit": "dresses",
"overalls": "dresses",
"pants": "pants",
"trousers": "pants",
"jeans": "pants",
"chinos": "pants",
"cargo pants": "pants",
"sweatpants": "pants",
"leggings": "pants",
"tights": "pants",
"yoga pants": "pants",
"shorts": "shorts",
"cargo shorts": "shorts",
"bermuda shorts": "shorts",
"athletic shorts": "shorts",
"board shorts": "shorts",
"swim trunks": "shorts",
"skirt": "skirts",
"mini skirt": "skirts",
"a-line skirt": "skirts",
"pencil skirt": "skirts",
"maxi skirt": "skirts",
"pleated skirt": "skirts",
"shoes": "shoes",
"sneakers": "shoes",
"trainers": "shoes",
"running shoes": "shoes",
"athletic shoes": "shoes",
"boots": "shoes",
"ankle boots": "shoes",
"knee boots": "shoes",
"combat boots": "shoes",
"hiking boots": "shoes",
"rain boots": "shoes",
"heels": "shoes",
"high heels": "shoes",
"stilettos": "shoes",
"pumps": "shoes",
"wedges": "shoes",
"flats": "shoes",
"ballet flats": "shoes",
"loafers": "shoes",
"oxfords": "shoes",
"brogues": "shoes",
"derby shoes": "shoes",
"sandals": "shoes",
"flip flops": "shoes",
"slippers": "shoes",
"house shoes": "shoes",
"clogs": "shoes",
"mules": "shoes",
"slides": "shoes",
"platform shoes": "shoes",
"jacket": "jackets",
"coat": "jackets",
"blazer": "jackets",
"suit jacket": "jackets",
"sports jacket": "jackets",
"leather jacket": "jackets",
"denim jacket": "jackets",
"bomber jacket": "jackets",
"puffer jacket": "jackets",
"down jacket": "jackets",
"quilted jacket": "jackets",
"trench coat": "jackets",
"peacoat": "jackets",
"parka": "jackets",
"raincoat": "jackets",
"winter coat": "jackets",
"windbreaker": "jackets",
"vest": "jackets",
"waistcoat": "jackets",
"gilet": "jackets",
"watch": "watches",
"wristwatch": "watches",
"smartwatch": "watches",
"pocket watch": "watches",
"glasses": "glasses",
"eyeglasses": "glasses",
"reading glasses": "glasses",
"sunglasses": "glasses",
"aviator sunglasses": "glasses",
"bag": "bags",
"handbag": "bags",
"purse": "bags",
"clutch": "bags",
"tote bag": "bags",
"shoulder bag": "bags",
"crossbody bag": "bags",
"messenger bag": "bags",
"backpack": "bags",
"rucksack": "bags",
"duffel bag": "bags",
"travel bag": "bags",
"laptop bag": "bags",
"briefcase": "bags",
"suitcase": "bags",
"luggage": "bags",
"jewelry": "jewelry",
"necklace": "jewelry",
"chain necklace": "jewelry",
"choker": "jewelry",
"pendant": "jewelry",
"earrings": "jewelry",
"stud earrings": "jewelry",
"drop earrings": "jewelry",
"hoop earrings": "jewelry",
"bracelet": "jewelry",
"cuff bracelet": "jewelry",
"charm bracelet": "jewelry",
"bangle": "jewelry",
"ring": "jewelry",
"signet ring": "jewelry",
"engagement ring": "jewelry",
"wedding ring": "jewelry",
"hat": "hats",
"cap": "hats",
"baseball cap": "hats",
"beanie": "hats",
"bucket hat": "hats",
"beret": "hats",
"fedora": "hats",
"wide brim hat": "hats",
"sun hat": "hats",
"visor": "hats",
"headband": "hats",
"turban": "hats",
"belt": "belts",
"leather belt": "belts",
"chain belt": "belts",
"waist belt": "belts",
"scarf": "accessories",
"neck scarf": "accessories",
"head scarf": "scarf",
"shawl": "accessories",
"gloves": "accessories",
"mittens": "accessories",
"socks": "accessories",
"ankle socks": "accessories",
"knee socks": "accessories",
"stockings": "accessories",
"tie": "accessories",
"neck tie": "accessories",
"bow tie": "accessories",
"bowtie": "accessories",
"pin": "accessories",
"brooch": "accessories",
"umbrella": "accessories",
"wallet": "accessories",
"cardholder": "accessories",
"coin purse": "accessories",
"swimwear": "swimwear",
"bikini": "swimwear",
"swimsuit": "swimwear",
"underwear": "underwear",
"bra": "underwear",
"briefs": "underwear",
"boxers": "underwear",
"panties": "underwear",
"lingerie": "underwear",
};
export function normalizeCategory(itemLabel: string): string {
const normalized = itemLabel.toLowerCase().trim();
if (categoryMap[normalized]) {
return categoryMap[normalized];
}
for (const [key, value] of Object.entries(categoryMap)) {
if (normalized.includes(key) || key.includes(normalized)) {
return value;
}
}
return normalized;
}