"""Verify parent_map.py picks up XLSX correctly + falls back when needed."""
import sys
sys.path.insert(0, "PromoTool")
import pandas as pd
import parent_map as pm

# Load XLSX directly to see what's available
xlsx_map = pm._load_xlsx_parent_map()
print(f"XLSX SKU map loaded: {len(xlsx_map) if xlsx_map else 0} entries")
print()

# Build a tiny plan with a mix of: in-XLSX, not-in-XLSX, with multi-variants
plan = pd.DataFrame([
    # These three SKUs should group under "Bra SoftLux Crossed Black" (XLSX)
    {"sku": "SWY00073", "name": "SoftLux Bra"},
    {"sku": "SWY00074", "name": "SoftLux Bra"},
    {"sku": "SWY00075", "name": "SoftLux Bra"},
    # Three Venum gloves
    {"sku": "VEN00082", "name": "Venum Gloves"},
    {"sku": "VEN00083", "name": "Venum Gloves"},
    {"sku": "VEN00084", "name": "Venum Gloves"},
    # SKU not in XLSX → falls back to heuristic
    {"sku": "FAKE-PREFIX-A", "name": "Fake Product A"},
    {"sku": "FAKE-PREFIX-B", "name": "Fake Product B"},
    # Another SKU not in XLSX
    {"sku": "ZZZ99999", "name": "Another Fake Product"},
])
result = pm.build_parent_map(plan)
print("=== Parent map result ===")
for key, info in result.items():
    print(f"  {key}")
    print(f"    display: {info['display']}")
    print(f"    skus: {info['skus']}")
print()

multi = {k: v for k, v in result.items() if len(v["skus"]) > 1}
print(f"Multi-child groups: {len(multi)} of {len(result)} total")
print()

# Sanity check on full Polleo plan_list if available
try:
    plan_full = pd.read_csv("PromoTool/data/sku_plan_list.csv")
except Exception:
    try:
        plan_full = pd.read_csv("data/sku_plan_list.csv")
    except Exception:
        plan_full = None
if plan_full is not None:
    if "sku" not in plan_full.columns and "SKU" in plan_full.columns:
        plan_full = plan_full.rename(columns={"SKU": "sku"})
    if "name" not in plan_full.columns and "Name" in plan_full.columns:
        plan_full = plan_full.rename(columns={"Name": "name"})
    pm._load_xlsx_parent_map.cache_clear()
    full_map = pm.build_parent_map(plan_full)
    print(f"=== Full plan_list run ===")
    print(f"  SKUs: {len(plan_full)}")
    print(f"  Parent groups: {len(full_map)}")
    multi_full = {k: v for k, v in full_map.items() if len(v["skus"]) > 1}
    print(f"  Multi-child groups: {len(multi_full)}")
    by_source = {"XLSX": 0, "SKU heuristic": 0, "NAME heuristic": 0}
    for k in full_map:
        if k.startswith("XLSX::"): by_source["XLSX"] += 1
        elif k.startswith("SKU::"): by_source["SKU heuristic"] += 1
        else: by_source["NAME heuristic"] += 1
    print(f"  By source: {by_source}")
    # SKUs covered by XLSX
    xlsx_skus_in_plan = sum(1 for s in plan_full["sku"].astype(str) if s.strip() in (xlsx_map or {}))
    print(f"  SKUs in plan covered by XLSX: {xlsx_skus_in_plan} / {len(plan_full)}")
