#!/usr/bin/env python3
"""Relabel catalog from visual review of every cover image. No sarees found."""
import json
from collections import Counter

# id -> (kind, colour, style)
# kind: lehenga | anarkali
MAP = {
    "kc001": ("lehenga", "Rose", "Sequinned"),
    "kc002": ("lehenga", "Rust", "Sequinned"),
    "kc003": ("anarkali", "Black", "Embroidered"),
    "kc004": ("lehenga", "Black", "Classic"),
    "kc005": ("lehenga", "Pink", "Sequinned"),
    "kc006": ("lehenga", "Mint", "Sequinned"),
    "kc007": ("lehenga", "Brown", "Embroidered"),
    "kc008": ("lehenga", "Charcoal", "Sequinned"),
    "kc009": ("anarkali", "Ivory", "Embroidered"),
    "kc010": ("lehenga", "Purple", "Sequinned"),
    "kc011": ("anarkali", "Olive", "Embroidered"),
    "kc012": ("lehenga", "Wine", "Sequinned"),
    "kc013": ("lehenga", "Lavender", "Sequinned"),
    "kc014": ("lehenga", "Grey", "Sequinned"),
    "kc015": ("lehenga", "Camel", "Sequinned"),
    "kc016": ("lehenga", "Purple", "Embroidered"),
    "kc017": ("anarkali", "Mustard", "Embroidered"),
    "kc018": ("lehenga", "Chocolate", "Sequinned"),
    "kc019": ("lehenga", "Black", "Sequinned"),
    "kc020": ("lehenga", "Chocolate", "Embroidered"),
    "kc021": ("lehenga", "Brown", "Festive"),
    "kc022": ("lehenga", "Mint", "Embroidered"),
    "kc023": ("anarkali", "Wine", "Embroidered"),
    "kc024": ("lehenga", "Charcoal", "Embroidered"),
    "kc025": ("lehenga", "Charcoal", "Flared"),
    "kc026": ("lehenga", "Rose", "Embroidered"),
    "kc027": ("lehenga", "Chocolate", "Zari"),
    "kc028": ("lehenga", "Grey", "Festive"),
    "kc029": ("anarkali", "Olive", "Zari"),
    "kc030": ("anarkali", "Brown", "Embroidered"),
    "kc031": ("anarkali", "Brown", "Zari"),
    "kc032": ("anarkali", "Brown", "Festive"),
    "kc033": ("anarkali", "Olive", "Festive"),
    "kc034": ("anarkali", "Navy", "Embroidered"),
    "kc035": ("anarkali", "Lilac", "Embroidered"),
    "kc036": ("lehenga", "Charcoal", "Party"),
    "kc037": ("lehenga", "Blue", "Sequinned"),
    "kc038": ("anarkali", "Mustard", "Zari"),
    "kc039": ("lehenga", "Navy", "Sequinned"),
    "kc040": ("anarkali", "Sage", "Embroidered"),
    "kc041": ("lehenga", "Chocolate", "Flared"),
    "kc042": ("anarkali", "Olive", "Classic"),
    "kc043": ("anarkali", "Teal", "Embroidered"),
    "kc044": ("anarkali", "Brown", "Classic"),
    "kc045": ("lehenga", "Lilac", "Sequinned"),
    "kc046": ("lehenga", "Charcoal", "Mirror"),
    "kc047": ("anarkali", "Teal", "Festive"),
    "kc048": ("lehenga", "Mint", "Flared"),
    "kc049": ("lehenga", "Olive", "Sequinned"),
    "kc050": ("lehenga", "Charcoal", "Sparkle"),
    "kc051": ("lehenga", "Purple", "Festive"),
    "kc052": ("lehenga", "Grey", "Embroidered"),
    "kc053": ("lehenga", "Lilac", "Festive"),
    "kc054": ("anarkali", "Lilac", "Festive"),
    "kc055": ("anarkali", "Teal", "Zari"),
    "kc056": ("anarkali", "Mustard", "Flared"),
    "kc057": ("anarkali", "Chocolate", "Embroidered"),
    "kc058": ("anarkali", "Teal", "Classic"),
    "kc059": ("anarkali", "Brown", "Flared"),
    "kc060": ("anarkali", "Charcoal", "Embroidered"),
    "kc061": ("anarkali", "Brown", "Yoke"),
    "kc062": ("anarkali", "Olive", "Yoke"),
    "kc063": ("anarkali", "Rust", "Embroidered"),
    "kc064": ("anarkali", "Pink", "Embroidered"),
    "kc065": ("anarkali", "Purple", "Embroidered"),
    "kc066": ("anarkali", "Camel", "Embroidered"),
    "kc067": ("anarkali", "Wine", "Zari"),
    "kc068": ("anarkali", "Charcoal", "Flared"),
    "kc069": ("anarkali", "Charcoal", "Festive"),
    "kc070": ("lehenga", "Magenta", "Sequinned"),
    "kc071": ("anarkali", "Olive", "Flared"),
    "kc072": ("anarkali", "Magenta", "Embroidered"),
    "kc073": ("anarkali", "Grey", "Flared"),
    "kc074": ("anarkali", "Blue", "Embroidered"),
    "kc075": ("anarkali", "Teal", "Flared"),
    "kc076": ("anarkali", "Pink", "Festive"),
    "kc077": ("lehenga", "Sand", "Sequinned"),
    "kc078": ("anarkali", "Peach", "Embroidered"),
    "kc079": ("anarkali", "Navy", "Flared"),
    "kc080": ("anarkali", "Teal", "Yoke"),
    "kc081": ("anarkali", "Brown", "Gold"),
    "kc082": ("anarkali", "Rust", "Flared"),
    "kc083": ("anarkali", "Grey", "Embroidered"),
    "kc084": ("anarkali", "Magenta", "Festive"),
    "kc085": ("anarkali", "Camel", "Festive"),
    "kc086": ("anarkali", "Charcoal", "Zari"),
    "kc087": ("anarkali", "Blue", "Festive"),
    "kc088": ("anarkali", "Rose", "Embroidered"),
    "kc089": ("anarkali", "Sand", "Embroidered"),
}

META = {
    "lehenga": {
        "type": "Lehenga Set",
        "fabric": "Georgette lehenga with embroidered blouse",
        "blurb": "Embroidered blouse, flared skirt and dupatta — made for sangeets and receptions.",
        "details": ["Choli + lehenga + dupatta", "Flared skirt", "Occasion wear"],
        "price": 999,
        "compare": 1499,
    },
    "anarkali": {
        "type": "Anarkali Suit",
        "fabric": "Georgette with embroidered yoke",
        "blurb": "A floor-length anarkali with dupatta — light, festive and easy to wear.",
        "details": ["Flared anarkali", "Matching dupatta", "Embroidered yoke"],
        "price": 799,
        "compare": 1199,
    },
}

# Keep existing prices (599/799/999) — only rewrite identity fields.


def main():
    path = "/workspace/src/lib/catalog-data.json"
    products = json.load(open(path))
    ids = {p["id"] for p in products}
    missing = set(MAP) - ids
    extra = ids - set(MAP)
    if missing or extra:
        raise SystemExit(f"id mismatch missing={missing} extra={extra}")

    names = []
    for p in products:
        kind, colour, style = MAP[p["id"]]
        meta = META[kind]
        name = f"{colour} {style} {meta['type']}"
        names.append(name)
        p["name"] = name
        p["category"] = kind
        p["fabric"] = meta["fabric"]
        p["description"] = f"{meta['blurb']} Colour: {colour.lower()}."
        p["details"] = list(meta["details"])
        # keep colour swatch in sync with name
        if p.get("colors"):
            p["colors"][0]["name"] = colour

    dupes = [n for n, c in Counter(names).items() if c > 1]
    if dupes:
        raise SystemExit(f"duplicate names: {dupes}")

    json.dump(products, open(path, "w"), indent=2)
    print("wrote", len(products))
    print("cats", Counter(p["category"] for p in products))
    print("saree leftover", sum("Saree" in p["name"] or p["category"] == "saree" for p in products))
    print("crop leftover", sum("Crop" in p["name"] for p in products))


if __name__ == "__main__":
    main()
