#!/usr/bin/env python3
"""Überführt das pantry-Konzept (lokale Zutaten) auf die ings-Liste.
Pantry-Items werden auf ING-Slugs gemappt; nicht-erforschbare Standards
(Salz, Wasser, Pfeffer-Pulver, Backpulver, Hagelzucker etc.) werden SKIP."""
import json
from pathlib import Path

DATA = Path('C:/xampp/htdocs/geograsim/App/sims/weltkueche/assets/data')

# Mapping: Pantry-Label → ING-Slug (oder None für SKIP)
MAP = {
    # SKIP — keine didaktisch sinnvolle Verortung
    'Salz': None, 'Wasser': None, 'Pfeffer': None, 'Backpulver': None,
    'Speisestärke': None, 'Staubzucker': None, 'Würfelzucker': None, 'Hagelzucker': None,
    'Zucker': None, 'Salz (Limettensalz)': None, 'Natronlauge (oder Speisestärke)': None,
    'Senf': None, 'Semmelbrösel': None, 'Brötchen (vom Vortag)': None,
    'Brot (Vortagsbrot)': None, 'Fleischbrühe': None, 'Plunderteig': None,
    'Spaghetti': None, 'Fladenbrot': None, 'Mürbteig (Butter, Mehl, Ei, Salz)': None,
    'Kirschwasser (Schwarzwälder)': None, 'Kirschwasser (optional)': None,
    'Korianderblätter': None, 'Koriandergrün': None,  # → koriander schon in ings
    # Mappings auf neue oder bestehende ING-Slugs
    'Mehl': 'mehl', 'Mehl (Glatt)': 'mehl', 'Mehl (Strudelteig)': 'mehl',
    'Mehl (Spätzlemehl)': 'mehl', 'Mehl (Weizen)': 'mehl',
    'Eier': 'eier', 'Eigelb': 'eier',
    'Butter': 'butter', 'Butterschmalz': 'butter', 'Schmalz': 'butter', 'Schweineschmalz': 'butter',
    'Zwiebel': 'zwiebel', 'Schalotte': 'zwiebel', 'Frühlingszwiebel': 'zwiebel',
    'Knoblauch': 'knoblauch',
    'Schnittlauch': 'kraeuter', 'Petersilie': 'kraeuter', 'Lorbeer': 'kraeuter',
    'Wacholderbeeren': 'kraeuter', 'Muskat': 'muskat', 'Rosmarin': 'kraeuter',
    'Thymian': 'kraeuter', 'Basilikum': 'kraeuter', 'Minze (Bohnen­kraut)': 'kraeuter',
    'Hefe': 'hefe',
    'Speck': 'speck', 'Speck (geräuchert)': 'speck', 'Guanciale (Schweinebacke)': 'speck',
    'Erdäpfel': 'kartoffel', 'Erdäpfel (mehlig)': 'kartoffel', 'Erdäpfel (festkochend)': 'kartoffel',
    'Erdäpfel (festkochend, vom Vortag)': 'kartoffel', 'Bauernkartoffel': 'kartoffel',
    'Karotten': 'wurzelgemuese', 'Karotte': 'wurzelgemuese',
    'Sellerie': 'wurzelgemuese', 'Lauch': 'wurzelgemuese',
    'Petersilwurzel': 'wurzelgemuese', 'Kren': 'wurzelgemuese',
    'Topfen (Magertopfen)': 'topfen', 'Topfen (Quark)': 'topfen',
    'Frischkäse': 'topfen', 'Camembert': 'mozzarella',  # mild Käse → mozzarella-Familie
    'Gruyère AOP': 'mozzarella', 'Vacherin Fribourgeois AOP': 'mozzarella',
    'Vorarlberger Bergkäse': 'mozzarella', 'Räßkäse (Sauermilchkäse)': 'mozzarella',
    'Sauerkirschen': 'kirschen',
    'Apfel': 'apfel',
    'Wachauer Marillen': 'marille', 'Marillenmarmelade': 'marille',
    'Schokolade (dunkel)': 'kakao',
    'Tomate': 'tomaten',
    'Aubergine': 'gemuese', 'Zucchini': 'gemuese', 'Paprikaschoten': 'gemuese',
    'Paprika (rot, gelb)': 'gemuese', 'Erbsen': 'gemuese', 'Blumenkohl': 'gemuese',
    'Gurke': 'gemuese', 'Grüne Bohnen (Garrofó)': 'gemuese', 'Weiße Bohnen (Ferraúra)': 'gemuese',
    'Spinat': 'gemuese', 'Sojasprossen': 'soja',
    'Tofu': 'soja',
    'Rindfleisch (Beinscheibe)': 'fleisch', 'Rindfleisch (Schulter)': 'fleisch',
    'Rindfleisch (Wadschunken)': 'fleisch', 'Kalbsschnitzel': 'fleisch',
    'Kalbfleisch (Filet oder Nuss)': 'fleisch', 'Hühnchen': 'fleisch',
    'Kaninchen': 'fleisch', 'Lammhackfleisch': 'fleisch',
    'Brät (Brühwurst-Mischung)': 'fleisch',
    'Sahne': 'milch', 'Rahm (Sahne)': 'milch', 'Crème fraîche': 'milch',
    'Schlagobers': 'milch', 'Milch': 'milch',
    'Reisessig': 'essig', 'Essig': 'essig',
    'Wein (rot)': 'wein', 'Rotwein': 'wein', 'Weißwein': 'wein',
    'Weißwein (trocken, Fendant)': 'wein', 'Bier': 'wein',
    'Grieß': 'hartweizen',
    'Walnüsse': 'mandeln', 'Mandeln': 'mandeln',
    'Tahini (Sesampaste)': 'sesam',
    'Champignons': 'champignons',
    'Kümmel': 'kuemmel',
    'Olivenöl': 'olivenoel', 'Öl': 'olivenoel', 'Öl (zum Frittieren)': 'olivenoel',
    'Sonnenblumenöl': 'olivenoel',
    'Kürbiskernöl': 'olivenoel',
    'Palmzucker': 'rohrzucker',
    'Paprikapulver': 'paprika',
}

# Neue Standard-Zutaten-Einträge (werden zu ingredients-extras.json hinzugefügt
# falls noch nicht drin)
NEW_INGS = {
    "mehl": {
        "nm": "Mehl (Weizen)", "ic": "🌾",
        "correct": ["kanada", "frankreich"],
        "choices": ["kanada", "frankreich", "norwegen", "island"],
        "econ": {"leader": "Kanada / Frankreich", "share": "Kanada exportiert weltweit am meisten Weizen",
                 "world": "~770 Mio t Weizen / Jahr", "price": "ca. 0,10 € / 100 g"},
        "note": "Weizen wächst in gemäßigtem Klima — nicht zu kalt, nicht zu trocken. Kanada (Prairie) und Frankreich (Beauce) sind Hauptanbaugebiete.",
        "more": "Aus 1 kg Weizen werden etwa 800 g Mehl — der Rest ist Kleie und Keimling."
    },
    "eier": {
        "nm": "Eier", "ic": "🥚",
        "correct": ["deutschland", "polen"],
        "choices": ["deutschland", "polen", "norwegen", "island"],
        "econ": {"leader": "Deutschland / Polen", "share": "EU produziert ~7 Mio t Eier / Jahr",
                 "world": "weltweit ~80 Mio t / Jahr", "price": "ca. 0,30 € / Ei"},
        "note": "Eier in Mitteleuropa kommen meist aus lokaler Produktion — Bodenhaltung, Freiland, Bio.",
        "more": "Eine Henne legt etwa 280 Eier pro Jahr. EU-Eier müssen einen Code tragen, der die Haltungsform verrät (0=Bio, 1=Freiland, 2=Boden, 3=Käfig)."
    },
    "butter": {
        "nm": "Butter", "ic": "🧈",
        "correct": ["frankreich", "deutschland"],
        "choices": ["frankreich", "deutschland", "norwegen", "island"],
        "econ": {"leader": "Frankreich, Deutschland, Irland", "share": "EU-Produktion ~2,4 Mio t / Jahr",
                 "world": "weltweit ~11 Mio t Butter / Jahr", "price": "ca. 1-2 € / 100 g"},
        "note": "Butter braucht viele Liter Milch — 1 kg Butter = ca. 23 L Milch. Hoher Klima-Footprint, aber regional erzeugt.",
        "more": "Die berühmte ‚Beurre d'Isigny' aus der Normandie hat g.U.-Schutz. Französische Butter hat oft 82 % Fett, deutsche meist 80 %."
    },
    "zwiebel": {
        "nm": "Zwiebel", "ic": "🧅",
        "correct": ["niederlande", "polen"],
        "choices": ["niederlande", "polen", "norwegen", "island"],
        "econ": {"leader": "China (weltweit) / Niederlande (Export)", "share": "China produziert ~25 % der Weltzwiebeln",
                 "world": "~100 Mio t / Jahr", "price": "ca. 0,15 € / 100 g"},
        "note": "Zwiebeln wachsen in gemäßigtem Klima fast überall — Niederlande sind weltgrößter Export-Drehkreuz.",
        "more": "Beim Schneiden setzen Zwiebeln Schwefel-Verbindungen frei, die mit Tränenflüssigkeit zu Schwefelsäure reagieren — daher die Tränen."
    },
    "hefe": {
        "nm": "Hefe", "ic": "🍞",
        "correct": ["deutschland", "frankreich"],
        "choices": ["deutschland", "frankreich", "norwegen", "island"],
        "econ": {"leader": "Mitteleuropa", "share": "Lokale Produktion in jedem Industrieland",
                 "world": "weltweit ~3 Mio t / Jahr", "price": "ca. 0,30 € / Würfel"},
        "note": "Backhefe sind Mikroorganismen, die Zucker zu CO₂ und Alkohol vergären. So geht der Teig auf.",
        "more": "Hefe wurde 1857 von Louis Pasteur als lebender Pilz erkannt — vorher hielt man sie für tot."
    },
    "speck": {
        "nm": "Speck / Bauchspeck", "ic": "🥓",
        "correct": ["italien", "deutschland"],
        "choices": ["italien", "deutschland", "norwegen", "island"],
        "econ": {"leader": "Italien (Guanciale, Pancetta) / DE (Bauchspeck)", "share": "Regionale Spezialitäten",
                 "world": "Schweine-Welt-Produktion ~110 Mio t / Jahr", "price": "ca. 1-3 € / 100 g"},
        "note": "Speck ist die geräucherte Schweinebacke oder -bauch. Guanciale (IT, Backe) und Pancetta (IT, Bauch) sind die Klassiker.",
        "more": "Tiroler Speck ist g.g.A. Vom Schwein über Pökeln, Räuchern, Trocknen — bis zu 6 Monate Reife."
    },
    "kartoffel": {
        "nm": "Erdäpfel / Kartoffeln", "ic": "🥔",
        "correct": ["deutschland", "polen"],
        "choices": ["deutschland", "polen", "saudi", "island"],
        "econ": {"leader": "Deutschland / Polen (EU)", "share": "China weltweit Nr. 1",
                 "world": "~370 Mio t / Jahr", "price": "ca. 0,10 € / 100 g"},
        "note": "Kartoffeln kamen erst nach 1492 aus Südamerika nach Europa. Heute Grundnahrungsmittel.",
        "more": "Eine Kartoffel besteht zu 80 % aus Wasser. In ihrer schale stecken die meisten Vitamine."
    },
    "wurzelgemuese": {
        "nm": "Wurzelgemüse", "ic": "🥕",
        "correct": ["oesterreich", "deutschland"],
        "choices": ["oesterreich", "deutschland", "saudi", "island"],
        "econ": {"leader": "Mitteleuropa", "share": "Klassisches Wintergemüse",
                 "world": "lokal angebaut", "price": "ca. 0,10-0,20 € / 100 g"},
        "note": "Karotten, Sellerie, Petersilwurzel, Lauch — die Klassiker des Wintergartens. Vor der Kühltechnik die Hauptquelle für Vitamine.",
        "more": "Karotten waren ursprünglich VIOLETT (oder weiß/gelb). Die orange Karotte ist eine niederländische Züchtung aus dem 17. Jh. zu Ehren des Hauses Oranien."
    },
    "topfen": {
        "nm": "Topfen / Quark", "ic": "🥛",
        "correct": ["oesterreich", "deutschland"],
        "choices": ["oesterreich", "deutschland", "norwegen", "island"],
        "econ": {"leader": "DACH-Region", "share": "Traditionelles Mitteleuropa-Milchprodukt",
                 "world": "lokal produziert", "price": "ca. 0,60-1 € / 250 g"},
        "note": "Topfen (AT) = Quark (DE) = Fromage blanc (FR). Frischkäse, keine Reife — schnell verbraucht.",
        "more": "Aus 5 L Milch wird etwa 1 kg Topfen. Wichtige Eiweißquelle für Sportler:innen."
    },
    "fleisch": {
        "nm": "Rotes Fleisch (Rind, Kalb, Lamm)", "ic": "🥩",
        "correct": ["argentinien", "brasilien"],
        "choices": ["argentinien", "brasilien", "norwegen", "saudi"],
        "econ": {"leader": "Brasilien / USA / Argentinien", "share": "Brasilien ist weltgrößter Rindfleisch-Exporteur",
                 "world": "weltweit ~80 Mio t Rindfleisch / Jahr", "price": "ca. 2-5 € / 100 g"},
        "note": "Rindfleisch hat den höchsten Klima-Footprint aller Lebensmittel — ~25 kg CO₂ pro kg Fleisch.",
        "more": "Argentinische Rinder weiden auf der Pampa. Brasilianisches Rindfleisch ist oft mit Regenwald-Rodung verbunden."
    },
    "gemuese": {
        "nm": "Sommer-Gemüse", "ic": "🥬",
        "correct": ["spanien", "italien"],
        "choices": ["spanien", "italien", "norwegen", "island"],
        "econ": {"leader": "Spanien / Italien (EU)", "share": "Mittelmeer-Hauptlieferant für Europa",
                 "world": "lokal + Welthandel", "price": "ca. 0,20-0,40 € / 100 g"},
        "note": "Aubergine, Zucchini, Paprika, Tomaten — die Mittelmeer-Klassiker. Spanien und Italien sind EU-Hauptlieferanten.",
        "more": "Im Winter kommt das Gemüse aus beheizten Gewächshäusern in Almería (ES) — ein 350 km² großer Plastikgewächshaus-Komplex, sichtbar aus dem Weltall."
    },
    "milch": {
        "nm": "Milch / Sahne", "ic": "🥛",
        "correct": ["deutschland", "frankreich"],
        "choices": ["deutschland", "frankreich", "norwegen", "saudi"],
        "econ": {"leader": "Deutschland (EU Nr. 1)", "share": "EU produziert ~155 Mio t Milch / Jahr",
                 "world": "weltweit ~890 Mio t / Jahr", "price": "ca. 0,10 € / 100 ml"},
        "note": "Milch in Europa kommt fast immer regional. DACH und Frankreich sind Kontinent-Hauptproduzenten.",
        "more": "Eine Kuh gibt 25-40 Liter Milch pro Tag. Pro Kuh werden ~600 kg CO₂ pro Jahr ausgestoßen (Methan-Furze inklusive)."
    },
    "essig": {
        "nm": "Essig", "ic": "🧪",
        "correct": ["italien", "deutschland"],
        "choices": ["italien", "deutschland", "norwegen", "island"],
        "econ": {"leader": "Italien (Modena, Balsamico)", "share": "Mittelmeer-Tradition",
                 "world": "lokal produziert", "price": "ca. 0,30 € / 100 ml"},
        "note": "Essig entsteht durch eine zweite Gärung: Alkohol → Essigsäure (Essigbakterien).",
        "more": "Aceto Balsamico di Modena reift bis zu 25 Jahre in Holzfässern — kostet dann hunderte Euro pro 100 ml."
    },
    "wein": {
        "nm": "Wein", "ic": "🍷",
        "correct": ["frankreich", "italien"],
        "choices": ["frankreich", "italien", "norwegen", "island"],
        "econ": {"leader": "Italien / Frankreich / Spanien", "share": "Italien knapp vor Frankreich Nr. 1",
                 "world": "~260 Mio Hektoliter / Jahr", "price": "ca. 0,30-2 € / 100 ml"},
        "note": "Wein braucht Sonne und mildes Klima — Mittelmeerraum perfekt. Sortenvielfalt, regionale Spezialitäten.",
        "more": "Älteste Weingebiete der Welt liegen in Georgien (6000 v. Chr.). Heute ist Wein eines der EU-meistgehandelten Agrarprodukte."
    },
    "kirschen": {
        "nm": "Kirschen / Sauerkirschen", "ic": "🍒",
        "correct": ["deutschland", "polen"],
        "choices": ["deutschland", "polen", "norwegen", "island"],
        "econ": {"leader": "Türkei (Welt) / Polen (EU)", "share": "Türkei Nr. 1 Welt, Polen Nr. 1 EU",
                 "world": "~2,5 Mio t / Jahr", "price": "ca. 0,30-0,50 € / 100 g"},
        "note": "Sauerkirschen sind in Mittel- und Osteuropa traditionell — Schwarzwald, Polen, Ungarn.",
        "more": "Süßkirschen werden frisch gegessen, Sauerkirschen meist verarbeitet (Marmelade, Kuchen, Sirup)."
    },
    "marille": {
        "nm": "Marillen / Aprikosen", "ic": "🍑",
        "correct": ["oesterreich", "tuerkei"],
        "choices": ["oesterreich", "tuerkei", "norwegen", "island"],
        "econ": {"leader": "Türkei (Weltmarkt)", "share": "Türkei produziert ~25 % Welt-Aprikosen",
                 "world": "~4 Mio t / Jahr", "price": "ca. 0,40-0,80 € / 100 g"},
        "note": "Marillen brauchen warme Sommer und milde Winter. Wachau (AT) hat g.U.-Status.",
        "more": "Aprikosen kamen über die Seidenstraße nach Europa. In Österreich heißen sie Marillen, in Deutschland Aprikosen."
    }
}

# 1. Erweitere ingredients-extras.json
ingredients_path = DATA / 'ingredients-extras.json'
ing_data = json.loads(ingredients_path.read_text(encoding='utf-8'))
added = 0
for slug, entry in NEW_INGS.items():
    if slug not in ing_data:
        ing_data[slug] = entry
        added += 1
ingredients_path.write_text(json.dumps(ing_data, indent=2, ensure_ascii=False), encoding='utf-8')
print(f'ingredients-extras.json: {added} neue Standard-Zutaten ergänzt')

# 2. Mergen mit allen Tranchen + dishes.json updaten
dishes_path = DATA / 'dishes.json'
dishes = json.loads(dishes_path.read_text(encoding='utf-8'))

unknown_pantry = set()
total_added = 0
for key, dish in dishes.items():
    if key.startswith('_'):
        continue
    pantry = dish.get('pantry', [])
    existing_ings = list(dish.get('ings', []))
    new_ings = list(existing_ings)
    for p in pantry:
        if p in MAP:
            slug = MAP[p]
            if slug is None:
                continue  # SKIP
            if slug not in new_ings:
                new_ings.append(slug)
                total_added += 1
        else:
            unknown_pantry.add(p)
    dish['ings'] = new_ings
    # Pantry-Feld leeren — Konzept ist raus
    dish['pantry'] = []

dishes_path.write_text(json.dumps(dishes, indent=2, ensure_ascii=False), encoding='utf-8')
print(f'dishes.json: +{total_added} Zutaten als ings ergänzt')
if unknown_pantry:
    print(f'WARN: {len(unknown_pantry)} Pantry-Items hatten kein Mapping (übersprungen):')
    for u in sorted(unknown_pantry):
        print(f'  - {u}')
