2025-12-09 16:06:07 +08:00
|
|
|
|
# 这个文件用来储存所有的category和occasion,这是标准文件。
|
|
|
|
|
|
OCCASION = [
|
|
|
|
|
|
"Casual", "Formal", "Activewear", "Resort", "Evening", "Outdoor",
|
|
|
|
|
|
"Business / workwear", "Cocktail / Semi-Formal", "Black Tie / White Tie",
|
|
|
|
|
|
"Bridal / Wedding", "Festival / Concert", "Party / Clubbing",
|
|
|
|
|
|
"Travel / Transit", "Athleisure", "Beach / Swim", "Ski / Snow / Mountain",
|
|
|
|
|
|
"Garden Party / Daytime Event"
|
|
|
|
|
|
]
|
2025-12-10 17:27:56 +08:00
|
|
|
|
|
2025-12-12 17:37:07 +08:00
|
|
|
|
FASHION_TAXONOMY = {
|
2025-12-10 17:27:56 +08:00
|
|
|
|
'clothing': [
|
2025-12-12 17:37:07 +08:00
|
|
|
|
# --- Tops ---
|
|
|
|
|
|
't-shirts', # T恤
|
|
|
|
|
|
'shirts', # 衬衫 (泛指梭织)
|
|
|
|
|
|
'blouses', # 女式衬衫
|
|
|
|
|
|
'polo shirts', # Polo衫
|
|
|
|
|
|
'tank tops', # 背心/坎肩
|
|
|
|
|
|
# --- Knits/Sweaters ---
|
|
|
|
|
|
'sweaters', # 毛衣 (泛指)
|
|
|
|
|
|
'cardigans', # 开衫
|
|
|
|
|
|
'pullovers', # 套头衫
|
|
|
|
|
|
'hoodies', # 连帽衫
|
|
|
|
|
|
'sweatshirts', # 圆领卫衣
|
|
|
|
|
|
'vests', # 马甲/背心 (外穿)
|
|
|
|
|
|
# --- Outerwear ---
|
|
|
|
|
|
'coats', # 大衣 (长款)
|
|
|
|
|
|
'jackets', # 夹克 (短款)
|
|
|
|
|
|
'blazers', # 西装外套
|
|
|
|
|
|
# --- Bottoms ---
|
|
|
|
|
|
'jeans', # 牛仔裤 (虽是材质,但在时尚界视为独立大类)
|
|
|
|
|
|
'trousers', # 西裤/正装长裤
|
|
|
|
|
|
'pants', # 长裤 (泛指休闲)
|
|
|
|
|
|
'joggers', # 束脚裤
|
|
|
|
|
|
'leggings', # 打底裤/紧身裤
|
|
|
|
|
|
'shorts', # 短裤
|
|
|
|
|
|
'skirts', # 半身裙
|
|
|
|
|
|
'skorts', # 裙裤
|
|
|
|
|
|
# --- One-Piece ---
|
|
|
|
|
|
'dresses', # 连衣裙
|
|
|
|
|
|
'jumpsuits', # 连体长裤
|
|
|
|
|
|
'bodysuits', # 连体紧身衣
|
|
|
|
|
|
'suits', # 套装 (西装套)
|
|
|
|
|
|
# --- Intimates/Swim ---
|
|
|
|
|
|
'bras', # 文胸
|
|
|
|
|
|
'underwear', # 内衣
|
|
|
|
|
|
'lingerie', # 性感内衣
|
|
|
|
|
|
'pajamas', # 睡衣套装
|
|
|
|
|
|
'swimwear', # 泳装
|
2025-12-10 17:27:56 +08:00
|
|
|
|
],
|
|
|
|
|
|
'shoes': [
|
|
|
|
|
|
'sneakers',
|
|
|
|
|
|
'formal shoes',
|
|
|
|
|
|
'heels',
|
|
|
|
|
|
'flats',
|
|
|
|
|
|
'sandals',
|
|
|
|
|
|
'slides',
|
|
|
|
|
|
'boots',
|
|
|
|
|
|
],
|
|
|
|
|
|
'bags': [
|
2025-12-12 17:37:07 +08:00
|
|
|
|
'shoulder bags',
|
|
|
|
|
|
'crossbody',
|
|
|
|
|
|
'bucket bags',
|
|
|
|
|
|
'tote bags',
|
|
|
|
|
|
'clutch bags',
|
|
|
|
|
|
'backpacks',
|
|
|
|
|
|
'travel bags',
|
|
|
|
|
|
'luggage',
|
2025-12-10 17:27:56 +08:00
|
|
|
|
],
|
|
|
|
|
|
'accessories': [
|
2025-12-12 17:37:07 +08:00
|
|
|
|
# --- Jewelry & Watches ---
|
2025-12-10 17:27:56 +08:00
|
|
|
|
'necklaces',
|
2025-12-12 17:37:07 +08:00
|
|
|
|
'earrings',
|
2025-12-10 17:27:56 +08:00
|
|
|
|
'bracelets',
|
2025-12-12 17:37:07 +08:00
|
|
|
|
'rings',
|
|
|
|
|
|
'cufflinks',
|
|
|
|
|
|
'watches',
|
|
|
|
|
|
# --- Head/Face ---
|
|
|
|
|
|
'hats',
|
2025-12-10 17:27:56 +08:00
|
|
|
|
'eyewear',
|
2025-12-12 17:37:07 +08:00
|
|
|
|
# --- Body/Textile ---
|
|
|
|
|
|
'belts',
|
2025-12-10 17:27:56 +08:00
|
|
|
|
'scarves',
|
|
|
|
|
|
'gloves',
|
|
|
|
|
|
'ties',
|
2025-12-12 17:37:07 +08:00
|
|
|
|
'bow ties',
|
|
|
|
|
|
'pocket squares',
|
|
|
|
|
|
'socks',
|
2025-12-10 17:27:56 +08:00
|
|
|
|
]
|
|
|
|
|
|
}
|
2025-12-12 17:37:07 +08:00
|
|
|
|
CATEGORY_LIST = list(FASHION_TAXONOMY.keys())
|
|
|
|
|
|
ALL_SUBCATEGORY_LIST = sum(FASHION_TAXONOMY.values(), [])
|
2025-12-10 17:27:56 +08:00
|
|
|
|
|
2026-01-06 15:42:30 +08:00
|
|
|
|
IGNORE_SUBCATEGORY = ['socks', 'watches', 'hats', 'eyewear']
|
2025-12-19 11:37:39 +08:00
|
|
|
|
|
|
|
|
|
|
BRAND_WHITELIST = [
|
|
|
|
|
|
"ALAÏA",
|
|
|
|
|
|
"BALENCIAGA",
|
|
|
|
|
|
"BALMAIN",
|
|
|
|
|
|
"BARBOUR",
|
|
|
|
|
|
"BOTTEGA VENETA",
|
|
|
|
|
|
"BRUNELLO CUCINELLI",
|
|
|
|
|
|
"ALEXANDERWANG",
|
|
|
|
|
|
"CHLOÉ",
|
|
|
|
|
|
"DIOR",
|
|
|
|
|
|
"FEAR OF GOD",
|
|
|
|
|
|
"FENDI",
|
|
|
|
|
|
"GIA STUDIOS",
|
|
|
|
|
|
"GUCCI",
|
|
|
|
|
|
"HELMUT LANG",
|
|
|
|
|
|
"JACQUEMUS",
|
|
|
|
|
|
"JIMMY CHOO",
|
|
|
|
|
|
"JW ANDERSON",
|
|
|
|
|
|
"KHAITE",
|
|
|
|
|
|
"LEMAIRE",
|
|
|
|
|
|
"LOEWE",
|
|
|
|
|
|
"MAISON MARGIELA",
|
|
|
|
|
|
"MIU MIU",
|
|
|
|
|
|
"MM6 MAISON MARGIELA",
|
|
|
|
|
|
"MONCLER",
|
|
|
|
|
|
"PEDDER RED",
|
|
|
|
|
|
"PETER DO",
|
|
|
|
|
|
"PHOEBE PHILO",
|
|
|
|
|
|
"PRADA",
|
|
|
|
|
|
"RICK OWENS",
|
|
|
|
|
|
"SACAI",
|
|
|
|
|
|
"SKIMS",
|
|
|
|
|
|
"THE ROW",
|
|
|
|
|
|
"THEORY",
|
|
|
|
|
|
"THOM BROWNE",
|
|
|
|
|
|
"THE FRANKIE SHOP",
|
|
|
|
|
|
"TOTEME",
|
2026-01-06 15:42:30 +08:00
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
OCCASION_CATEGORY_MAP = {
|
|
|
|
|
|
"Casual": {
|
|
|
|
|
|
"clothing": ["trousers", "pants", "jeans", "t-shirts", "tank tops", "polo shirts", "hoodies", "leggings", "shorts", "skirts"],
|
|
|
|
|
|
"shoes": ["sneakers", "flats", "boots"],
|
|
|
|
|
|
"bags": ["shoulder bags", "crossbody"],
|
|
|
|
|
|
"accessories": ["earrings", "necklaces", "bracelets", "rings"]
|
|
|
|
|
|
},
|
|
|
|
|
|
"Formal": {
|
|
|
|
|
|
"clothing": ["suits", "trousers", "shirts", "blazers", "skirts", "dresses", "coats"],
|
|
|
|
|
|
"shoes": ["formal shoes"],
|
|
|
|
|
|
"bags": [],
|
|
|
|
|
|
"accessories": ["ties", "earrings", "necklaces", "bracelets", "rings"]
|
|
|
|
|
|
},
|
|
|
|
|
|
"Activewear": {
|
|
|
|
|
|
"clothing": ["leggings", "tank tops", "pants", "joggers", "hoodies", "jackets"],
|
|
|
|
|
|
"shoes": ["sneakers"],
|
|
|
|
|
|
"bags": ["travel bags"],
|
|
|
|
|
|
"accessories": ["earrings", "bracelets"]
|
|
|
|
|
|
},
|
|
|
|
|
|
"Resort": {
|
|
|
|
|
|
"clothing": ["dresses", "shorts", "tank tops", "swimwear"],
|
|
|
|
|
|
"shoes": ["sandals"],
|
|
|
|
|
|
"bags": ["tote bags"],
|
|
|
|
|
|
"accessories": ["earrings", "necklaces", "bracelets", "rings", "scarves"]
|
|
|
|
|
|
},
|
|
|
|
|
|
"Evening": {
|
|
|
|
|
|
"clothing": ["dresses", "blazers", "coats"],
|
|
|
|
|
|
"shoes": ["heels"],
|
|
|
|
|
|
"bags": ["clutch bags"],
|
|
|
|
|
|
"accessories": ["earrings", "necklaces", "bracelets", "rings"]
|
|
|
|
|
|
},
|
|
|
|
|
|
"Outdoor": {
|
|
|
|
|
|
"clothing": ["jackets", "jeans", "sweaters"],
|
|
|
|
|
|
"shoes": ["boots"],
|
|
|
|
|
|
"bags": ["backpacks", "travel bags"],
|
|
|
|
|
|
"accessories": []
|
|
|
|
|
|
},
|
|
|
|
|
|
"Business / workwear": {
|
|
|
|
|
|
"clothing": ["trousers", "blouses", "blazers", "skirts"],
|
|
|
|
|
|
"shoes": ["formal shoes", "heels", "flats"],
|
|
|
|
|
|
"bags": ["tote bags", "shoulder bags"],
|
|
|
|
|
|
"accessories": []
|
|
|
|
|
|
},
|
|
|
|
|
|
"Cocktail / Semi-Formal": {
|
|
|
|
|
|
"clothing": ["dresses", "jumpsuits", "skirts", "blouses", "blazers", "coats"],
|
|
|
|
|
|
"shoes": ["heels"],
|
|
|
|
|
|
"bags": ["clutch bags", "shoulder bags"],
|
|
|
|
|
|
"accessories": ["earrings", "necklaces", "bracelets", "rings", "scarves"]
|
|
|
|
|
|
},
|
|
|
|
|
|
"Black Tie / White Tie": {
|
|
|
|
|
|
"clothing": ["dresses", "suits"],
|
|
|
|
|
|
"shoes": ["formal shoes"],
|
|
|
|
|
|
"bags": ["clutch bags"],
|
|
|
|
|
|
"accessories": ["earrings", "necklaces", "bracelets", "rings"]
|
|
|
|
|
|
},
|
|
|
|
|
|
"Bridal / Wedding": {
|
|
|
|
|
|
"clothing": ["dresses", "suits"],
|
|
|
|
|
|
"shoes": ["heels", "formal shoes"],
|
|
|
|
|
|
"bags": ["clutch bags"],
|
|
|
|
|
|
"accessories": ["earrings", "necklaces", "bracelets", "rings"]
|
|
|
|
|
|
},
|
|
|
|
|
|
"Festival / Concert": {
|
|
|
|
|
|
"clothing": ["jackets", "shorts", "tank tops", "skirts"],
|
|
|
|
|
|
"shoes": ["boots"],
|
|
|
|
|
|
"bags": ["crossbody", "shoulder bags"],
|
|
|
|
|
|
"accessories": ["earrings", "necklaces", "bracelets", "rings"]
|
|
|
|
|
|
},
|
|
|
|
|
|
"Party / Clubbing": {
|
|
|
|
|
|
"clothing": ["jackets", "dresses", "skirts", "bodysuits"],
|
|
|
|
|
|
"shoes": ["heels", "boots"],
|
|
|
|
|
|
"bags": ["clutch bags"],
|
|
|
|
|
|
"accessories": []
|
|
|
|
|
|
},
|
|
|
|
|
|
"Travel / Transit": {
|
|
|
|
|
|
"clothing": ["joggers", "sweatshirts", "t-shirts", "hoodies", "sweaters", "jackets"],
|
|
|
|
|
|
"shoes": ["sneakers"],
|
|
|
|
|
|
"bags": ["backpacks", "travel bags", "tote bags"],
|
|
|
|
|
|
"accessories": []
|
|
|
|
|
|
},
|
|
|
|
|
|
"Athleisure": {
|
|
|
|
|
|
"clothing": ["leggings", "hoodies", "tank tops", "joggers", "jackets"],
|
|
|
|
|
|
"shoes": ["sneakers"],
|
|
|
|
|
|
"bags": ["travel bags", "tote bags"],
|
|
|
|
|
|
"accessories": ["earrings", "bracelets"]
|
|
|
|
|
|
},
|
|
|
|
|
|
"Beach / Swim": {
|
|
|
|
|
|
"clothing": ["swimwear", "shorts", "dresses"],
|
|
|
|
|
|
"shoes": ["sandals"],
|
|
|
|
|
|
"bags": ["tote bags"],
|
|
|
|
|
|
"accessories": ["earrings", "necklaces", "bracelets", "rings"]
|
|
|
|
|
|
},
|
|
|
|
|
|
"Ski / Snow / Mountain": {
|
|
|
|
|
|
"clothing": ["jackets", "coats", "sweaters", "hoodies", "pants"],
|
|
|
|
|
|
"shoes": ["boots"],
|
|
|
|
|
|
"bags": [],
|
|
|
|
|
|
"accessories": ["gloves"]
|
|
|
|
|
|
},
|
|
|
|
|
|
"Garden Party / Daytime Event": {
|
|
|
|
|
|
"clothing": ["dresses", "skirts", "blouses", "cardigans"],
|
|
|
|
|
|
"shoes": ["sandals"],
|
|
|
|
|
|
"bags": ["shoulder bags", "crossbody"],
|
|
|
|
|
|
"accessories": ["earrings", "necklaces", "bracelets", "rings"]
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
OCCASION_MATERIAL_MAP = {
|
|
|
|
|
|
"Casual": "Cotton, denim, jersey, fleece, relaxed fits, distressed textures.",
|
|
|
|
|
|
"Formal": "Wool, silk, crisp cotton, structured tailoring, cufflinks, leather soles.",
|
|
|
|
|
|
"Activewear": "Spandex, moisture-wicking synthetics, mesh, breathable fabrics, compression.",
|
|
|
|
|
|
"Resort": "Linen, crochet, chiffon, straw/raffia, tropical prints, breezy silhouettes.",
|
|
|
|
|
|
"Evening": "Silk, satin, velvet, sequins, lace, sheer panels, metallic finishes.",
|
|
|
|
|
|
"Outdoor": "Gore-Tex, fleece, down, wool, waterproof leather, corduroy, flannel.",
|
|
|
|
|
|
"Business / workwear": "Gabardine, crepe, silk blends, modest cuts, structured leather bags.",
|
|
|
|
|
|
"Cocktail / Semi-Formal": "Satin, crepe, lace details, ruffles, asymmetric hems, polished hardware.",
|
|
|
|
|
|
"Black Tie / White Tie": "Tulle, silk taffeta, fine wool, crystals, pearls, opera gloves.",
|
|
|
|
|
|
"Bridal / Wedding": "Chiffon, lace, silk, floral prints (for guests), pastel tones.",
|
|
|
|
|
|
"Festival / Concert": "Denim, fringe, leather, crochet, sequins, bold prints, band tees.",
|
|
|
|
|
|
"Party / Clubbing": "Sequins, leather/pleather, mesh, cut-outs, bodycon fits, latex.",
|
|
|
|
|
|
"Travel / Transit": "Cotton jersey, cashmere blends, stretch denim, soft knits, layers.",
|
|
|
|
|
|
"Athleisure": "Scuba fabric, tech fleece, rib-knit, clean lines, logo details.",
|
|
|
|
|
|
"Beach / Swim": "Lycra, terry cloth, linen, straw, quick-dry fabrics, sheer voile.",
|
|
|
|
|
|
"Ski / Snow / Mountain": "Down feathers, wool, thermal tech, faux fur, waterproof shells.",
|
|
|
|
|
|
"Garden Party / Daytime Event": "Floral prints, linen, eyelet lace, cotton poplin, gingham, straw accessories."
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
SUBCATEGORY_MERGE_MAP = {
|
|
|
|
|
|
"clutch bags": ["clutch bags", "shoulder bags"],
|
|
|
|
|
|
"shoulder bags": ["shoulder bags", "clutch bags"],
|
|
|
|
|
|
"crossbody": ["crossbody", "shoulder bags"],
|
|
|
|
|
|
"luggage": ["luggage", "backpacks", "travel bags"],
|
|
|
|
|
|
"jumpsuits": ["jumpsuits", "dresses"],
|
|
|
|
|
|
"bodysuits": ["bodysuits", "dresses"],
|
|
|
|
|
|
"suits": ["suits", "dresses"],
|
|
|
|
|
|
"pullovers": ["pullovers", "sweaters"],
|
|
|
|
|
|
}
|