"""
Product Line Mapping - Đồng bộ từ Lead Stage
"""
PRODUCT_LINE_MAP: dict[str, list[str]] = {
    "Áo Sơ mi": ["áo sơ mi", "áo công sở", "áo đi làm", "sơ mi", "sơmi", "áo sơmi"],
    "Áo Polo": ["áo polo", "áo cổ bẻ", "polo"],
    "Áo phông": ["áo phông", "áo thun", "áo thun ngắn tay", "áo cổ v", "áo cổ tym", "áo cộc tay"],
    "Áo nỉ có mũ": ["áo nỉ có mũ", "áo hoodie", "hoodie"],
    "Áo nỉ": ["áo nỉ", "áo sweater", "sweater"],
    "Áo mặc nhà": ["áo mặc nhà", "áo ngủ", "áo ở nhà"],
    "Áo lót": ["áo lót", "áo ngực", "áo quây", "áo lót nữ", "áo lót nam", "áo lót trẻ em"],
    "Áo len gilet": ["áo len gilet", "áo gile len"],
    "Áo len": ["áo len", "áo len dài tay"],
    "Áo kiểu": ["áo kiểu", "áo điệu", "áo nữ tính"],
    "Áo khoác sợi": ["áo khoác sợi"],
    "Áo khoác nỉ không mũ": ["áo khoác nỉ không mũ", "áo khoác sweater"],
    "Áo khoác nỉ có mũ": ["áo khoác nỉ có mũ", "áo khoác hoodie", "áo khoác nỉ"],
    "Áo khoác lông vũ": ["áo khoác lông vũ", "áo phao lông vũ", "áo lông vũ"],
    "Áo khoác gió": ["áo khoác gió", "áo gió", "áo khoác mỏng"],
    "Áo khoác gilet chần bông": ["áo khoác gilet chần bông", "áo khoác gilet trần bông", "áo gilet chần bông", "áo gilet trần bông"],
    "Áo khoác gilet": ["áo khoác gilet", "áo gile", "gile"],
    "Áo khoác dạ": ["áo khoác dạ", "áo dạ"],
    "Áo khoác dáng ngắn": ["áo khoác dáng ngắn", "áo khoác croptop"],
    "Áo khoác chống nắng": ["áo khoác chống nắng", "áo chống nắng"],
    "Áo khoác chần bông": ["áo khoác chần bông", "áo khoác trần bông", "áo chần bông", "áo trần bông", "áo phao"],
    "Áo khoác": ["áo khoác", "áo ấm", "áo rét"],
    "Áo giữ nhiệt": ["áo giữ nhiệt", "áo tản nhiệt", "áo heattech"],
    "Áo bra active": ["áo bra active", "áo bra", "bra", "áo tập", "áo thể thao"],
    "Áo Body": ["áo body", "áo croptop", "croptop", "baby tee", "áo lửng", "áo dáng ngắn", "áo ôm"],
    "Áo ba lỗ": ["áo ba lỗ", "áo sát nách", "tanktop", "tank top", "áo dây", "áo 2 dây", "áo hai dây"],
    "Váy liền": ["váy liền", "đầm", "váy công sở", "đầm công sở", "váy liền thân", "đầm suông", "váy dài", "váy body"],
    "Chân váy": ["chân váy", "váy maxi", "váy midi", "chân váy dài", "chân váy chữ a", "chân váy công sở", "váy ngắn"],
    "Quần giả váy": ["quần giả váy", "quần váy", "skort"],
    "Quần soóc": ["quần soóc", "quần đùi", "quần short", "quần lửng", "quần ngố", "short", "quần đùi nam", "quần đùi nữ"],
    "Quần nỉ": ["quần nỉ", "quần jogger", "quần ống bo chun", "jogger", "quần thể thao"],
    "Quần mặc nhà": ["quần mặc nhà", "quần ngủ", "quần đùi mặc nhà"],
    "Quần lót đùi": ["quần lót đùi", "quần sịp đùi", "quần boxer", "boxer", "sịp đùi", "quần xì đùi"],
    "Quần lót tam giác": ["quần lót tam giác", "quần sịp tam giác", "quần brief", "brief", "sịp tam giác", "quần xì tam giác"],
    "Quần lót": ["quần lót", "quần chip", "quần sịp", "quần trong", "quần nhỏ", "quần xơ lít", "quần xì", "sịp", "chip", "đồ lót"],
    "Quần leggings mặc nhà": ["quần leggings mặc nhà", "quần legging mặc nhà"],
    "Quần leggings": ["quần leggings", "leggings", "quần legging", "legging", "quần thun ôm"],
    "Quần Khaki": ["quần khaki", "quần âu", "quần vải", "quần tây", "quần công sở", "quần đi làm", "quần âu nam", "quần âu nữ", "quần kaki"],
    "Quần jean": ["quần jean", "quần bò", "quần jeans", "denim", "jeans", "bò", "jean", "quần dzin"],
    "Quần giữ nhiệt": ["quần giữ nhiệt", "quần heattech"],
    "Quần dài": ["quần dài", "quần suông", "quần ống rộng", "quần ống suông", "quần lưng thun"],
    "Quần culottes": ["quần culottes", "culottes", "quần lửng ống rộng"],
    "Quần Body": ["quần body", "quần ôm"],
    "Pyjama": ["pyjama", "pajama", "đồ pijama"],
    "Mũ": ["mũ", "nón", "phụ kiện Canifa"],
    "Tất": ["tất", "vớ", "bao chân", "vớ chân", "tất chân"],
    "Quần tất": ["quần tất", "quần vớ", "tất quần"],
    "Mũ thể thao": ["mũ thể thao", "mũ snapback", "mũ lưỡi trai", "cap"],
    "Khẩu trang": ["khẩu trang", "mask", "mặt nạ vải"],
    "Túi xách": ["túi xách", "túi"],
}

SYNONYM_TO_DB: dict[str, str] = {}
for db_value, synonyms in PRODUCT_LINE_MAP.items():
    for syn in synonyms:
        SYNONYM_TO_DB[syn.lower()] = db_value

RELATED_LINES: dict[str, list[str]] = {
    "Áo bra active": ["Áo lót"],
    "Áo lót": ["Áo bra active"],
    "Quần lót": ["Quần lót đùi", "Quần lót tam giác"],
    "Quần lót đùi": ["Quần lót", "Quần lót tam giác"],
    "Quần lót tam giác": ["Quần lót", "Quần lót đùi"],
}

def get_related_lines(product_line: str) -> list[str]:
    return [product_line] + RELATED_LINES.get(product_line, [])

def resolve_product_line(raw_value: str) -> list[str]:
    parts = [p.strip() for p in raw_value.split("/") if p.strip()]
    resolved = []
    for part in parts:
        mapped = SYNONYM_TO_DB.get(part.lower())
        if mapped:
            resolved.append(mapped)
        else:
            resolved.append(part)
    return resolved
