from typing import Dict, List

def kv_deltas_toplist(kv: Dict, offer_data: Dict[str, Dict] | None) -> List[dict]:
    """
    Falls offer_data vorhanden: Delta gegen günstigsten EP je Pos.
    Sonst nur KV sortieren (Platzhalter).
    """
    results=[]
    ref = {}
    if offer_data:
        # günstigster EP je Pos
        for vendor, m in offer_data.items():
            for pos, vals in m.items():
                ep = vals.get("EP")
                if ep is None: continue
                if pos not in ref or ep < ref[pos]:
                    ref[pos] = ep
    for pos, vals in kv.items():
        kv_ep = vals.get("EP")
        if kv_ep is None: continue
        ref_ep = ref.get(pos)
        if ref_ep is None: 
            continue
        delta_pct = (ref_ep - kv_ep) / kv_ep * 100.0
        why = "Chance (Angebot < KV)" if delta_pct < 0 else "Risiko (Angebot > KV)"
        results.append({"pos": pos, "delta_pct": delta_pct, "why": why})
    results.sort(key=lambda r: abs(r["delta_pct"]), reverse=True)
    return results
