"""
Curated MVP shopping-list seed terms, shared by every retailer scraper.

Rationale (from the SKU Scope brief): the MVP catalogue should reflect
*real household shopping behaviour, not full-store completeness*. So instead of
crawling each retailer's entire category tree, every scraper runs this same list
of high-frequency search terms against the retailer's own search. That:
  - naturally targets the ~600-1,200 SKU range,
  - produces directly comparable baskets across PnP / Checkers / Woolworths / SPAR,
  - and sidesteps four different category-tree reverse-engineering jobs.

Each term maps to one MVP bucket. A single term usually returns several branded
variants (e.g. "long life milk" -> Clover, Parmalat, etc.), which is what we want.

Tune freely: add/remove terms, or raise PER_TERM_CAP in the scrapers.
"""

# bucket -> list of search terms
TERMS: dict[str, list[str]] = {
    # ---- 150-300 high-frequency staples ----
    "staples": [
        "long life milk", "fresh milk", "full cream milk", "low fat milk",
        "white bread", "brown bread", "whole wheat bread", "bread rolls",
        "large eggs", "eggs 18", "white sugar", "brown sugar",
        "white rice", "basmati rice", "maize meal", "super maize meal",
        "cake flour", "self raising flour", "white flour", "spaghetti", "macaroni",
        "instant noodles", "rolled oats", "instant oats", "breakfast cereal",
        "corn flakes", "weetbix", "tea bags", "rooibos tea", "instant coffee",
        "ground coffee", "white salt", "black pepper", "cooking oil", "sunflower oil",
        "canola oil", "olive oil", "margarine", "butter", "peanut butter",
        "apricot jam", "honey", "tomato sauce", "mayonnaise", "vinegar",
        "baked beans", "canned tomatoes", "tomato paste", "canned tuna",
        "pilchards", "canned corn", "mixed vegetables canned", "lentils",
        "dried beans", "soup powder", "stock cubes", "gravy powder",
        "two minute noodles", "samp", "pasta sauce", "couscous",
    ],
    # ---- 150 fresh produce ----
    "fresh_produce": [
        "bananas", "apples", "oranges", "naartjies", "lemons", "grapes",
        "pears", "avocado", "mango", "pineapple", "strawberries", "blueberries",
        "watermelon", "melon", "potatoes", "sweet potato", "onions", "red onion",
        "tomatoes", "cherry tomatoes", "carrots", "cabbage", "lettuce", "spinach",
        "broccoli", "cauliflower", "green beans", "gem squash", "butternut",
        "pumpkin", "green pepper", "red pepper", "cucumber", "mushrooms",
        "garlic", "ginger", "chillies", "celery", "baby marrow", "beetroot",
        "fresh herbs", "coriander", "mint", "salad mix", "mixed vegetables fresh",
    ],
    # ---- 100 dairy, bakery & chilled ----
    "dairy_bakery_chilled": [
        "cheddar cheese", "gouda cheese", "mozzarella cheese", "cream cheese",
        "feta cheese", "cottage cheese", "yoghurt", "greek yoghurt", "double cream yoghurt",
        "fresh cream", "sour cream", "custard", "amasi", "maas",
        "polony", "viennas", "russians", "bacon", "ham", "chicken sausage",
        "fish fingers", "frozen chips", "frozen vegetables", "frozen peas",
        "ice cream", "puff pastry", "croissants", "muffins", "cake",
        "wraps", "pita bread", "naan bread", "tortilla", "fresh pasta",
    ],
    # ---- 100 household & cleaning ----
    "household_cleaning": [
        "toilet paper", "paper towel", "facial tissues", "dishwashing liquid",
        "washing powder", "laundry liquid", "fabric softener", "bleach",
        "multipurpose cleaner", "floor cleaner", "window cleaner", "handy andy",
        "dishwasher tablets", "sponges", "scourers", "refuse bags", "bin bags",
        "cling wrap", "foil", "freezer bags", "candles", "matches",
        "air freshener", "insect spray", "mop", "broom", "furniture polish",
        "rubber gloves", "fabric stain remover",
    ],
    # ---- 100 pantry ----
    "pantry": [
        "curry powder", "turmeric", "paprika", "mixed spice", "cinnamon",
        "cumin", "chilli powder", "barbecue spice", "chicken spice", "aromat",
        "stock", "soy sauce", "worcester sauce", "chutney", "sweet chilli sauce",
        "mustard", "salad dressing", "coconut milk", "cake mix", "baking powder",
        "bicarbonate of soda", "yeast", "vanilla essence", "cocoa", "icing sugar",
        "cornflour", "custard powder", "jelly", "raisins", "mixed nuts",
        "dried fruit", "popcorn kernels", "crackers", "rusks", "condensed milk",
        "evaporated milk", "powdered milk", "creamer",
    ],
    # ---- 50-100 premium / retailer-specific ----
    "premium": [
        "smoked salmon", "biltong", "droewors", "parma ham", "brie cheese",
        "camembert", "blue cheese", "halloumi", "balsamic vinegar",
        "extra virgin olive oil", "dark chocolate", "ground almonds", "quinoa",
        "chia seeds", "granola", "kombucha", "sparkling water", "craft beer",
        "sushi", "ready meals", "rotisserie chicken", "deli platter",
    ],
    # ---- 50 basket-builders: snacks, beverages, personal care ----
    "basket_builders": [
        "potato chips", "nik naks", "doritos", "pretzels", "chocolate slab",
        "sweets", "biscuits", "cookies", "energy bar", "muesli bar",
        "coca cola", "fanta", "sprite", "fruit juice", "energy drink",
        "still water", "iced tea", "cordial", "milk stout", "beer",
        "shampoo", "conditioner", "shower gel", "bar soap", "deodorant",
        "toothpaste", "toothbrush", "mouthwash", "roll on", "hand sanitiser",
        "body lotion", "nappies", "baby wipes", "sanitary pads", "razors",
    ],
}


def all_terms() -> list[tuple[str, str]]:
    """Flatten to [(bucket, term), ...] preserving order."""
    return [(bucket, term) for bucket, terms in TERMS.items() for term in terms]


if __name__ == "__main__":
    flat = all_terms()
    print(f"{len(TERMS)} buckets, {len(flat)} total terms")
    for bucket, terms in TERMS.items():
        print(f"  {bucket:<24} {len(terms)} terms")
