"""Reproduce a synthetic displayed-price audit. No network or market valuation."""
from decimal import Decimal, InvalidOperation
from statistics import median


def money(value):
    try:
        amount = Decimal(str(value))
    except (InvalidOperation, ValueError):
        return None
    return amount if amount.is_finite() and amount >= 0 else None


def summarize(rows, included_ids, basis, currency="USD"):
    if basis not in {"item_only", "item_plus_shipping"}:
        raise ValueError("Unknown amount basis")
    values, seen = [], set()
    for row in rows:
        item_id = row.get("itemId")
        if not item_id or item_id in seen:
            continue
        seen.add(item_id)
        if item_id not in included_ids or row.get("listingType") != "sold":
            continue
        if row.get("soldCurrency") != currency:
            continue
        if row.get("quality", {}).get("priceBasis") != "displayed_listing_price":
            continue
        amount = money(row.get("soldPrice"))
        if amount is None:
            continue
        if basis == "item_plus_shipping":
            shipping, total = money(row.get("shippingPrice")), money(row.get("totalPrice"))
            if shipping is None or total is None or row.get("shippingCurrency") != currency:
                continue
            if total != amount + shipping:
                continue
            amount = total
        values.append(amount)
    return {"count": len(values), "median": median(values) if values else None}


def row(item_id, amount, shipping, basis="displayed_listing_price"):
    total = None if shipping is None or basis != "displayed_listing_price" else str(Decimal(amount) + Decimal(shipping))
    return {"itemId": item_id, "listingType": "sold", "soldPrice": amount, "soldCurrency": "USD",
            "shippingPrice": shipping, "shippingCurrency": "USD" if shipping is not None else None,
            "totalPrice": total, "bestOfferAccepted": None, "quality": {"priceBasis": basis,
            "acceptedOfferAmount": None, "saleDateVerified": False, "exactProductMatchVerified": False}}


if __name__ == "__main__":
    rows = [row("A", "100.00", "10.00"), row("B", "110.00", "0.00"),
            row("C", "90.00", None), row("D", "200.00", "0.00"),
            row("E", "80.00", "0.00", "range_lower_bound"), row("F", "120.00", "0.00")]
    included = {"A", "B", "C", "E", "F"}  # E is still rejected by its price basis.
    item = summarize(rows, included, "item_only")
    landed = summarize(rows, included, "item_plus_shipping")
    assert item == {"count": 4, "median": Decimal("105.00")}
    assert landed == {"count": 3, "median": Decimal("110.00")}
    assert summarize(rows + [rows[0]], included, "item_only") == item
    assert summarize([], set(), "item_only")["median"] is None
    assert summarize([row("X", "NaN", None)], {"X"}, "item_only")["count"] == 0
    assert money("-1") is None and money("Infinity") is None and money(None) is None
    mismatch = row("X", "100", "10")
    mismatch["shippingCurrency"] = "EUR"
    assert summarize([mismatch], {"X"}, "item_plus_shipping")["count"] == 0
    mismatch["shippingCurrency"], mismatch["totalPrice"] = "USD", "999"
    assert summarize([mismatch], {"X"}, "item_plus_shipping")["count"] == 0
    print("SYNTHETIC EXAMPLE ONLY; no live prices or verified transaction amounts.")
    print(f"Displayed item-only median: USD {item['median']:.2f}, n={item['count']}")
    print(f"Displayed item-plus-shipping median: USD {landed['median']:.2f}, n={landed['count']}")
