Weltkueche Herkunft: kuratierte AT-Zweitlieferanten + Distraktor-Fixes (Thomas-Review)

Neu: additives `correct_for[heimat]` in buildTaskFor — uebersteuert die Gravitations-
Schaetzung NUR bei kuratierten Zutaten (echte Handelsdaten), alles andere unveraendert.
- mehl→AT+Ungarn (Weizenimport 2023: HU 604k >> DE 41k), kartoffel→AT+Schweiz,
  eier→AT+Slowakei (Variation weg vom Dauer-AT+DE), majoran→AT+Deutschland (statt FR),
  safran→Spanien+Iran (statt IT mit 1 t), feta/lamm→Griechenland+Bulgarien (Balkan statt FR).
- Datenfixes gegen „echter Lieferant faelschlich als Distraktor": AT raus aus Mozzarella-
  climate_possible + als Produzent ergaenzt; CH raus aus Kartoffel-climate_possible +
  Produzent; SK als Eier-Produzent; Aegypten-Zwiebel local→global (echter kleiner Lieferant).
- Verifiziert: 7 kuratierte korrekt; keine Regression (DE-Gerichte nutzen weiter Algorithmus).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-20 21:36:48 +02:00
parent 4c0183f2e0
commit bf2a4cd0d1
2 changed files with 64 additions and 11 deletions
+8 -1
View File
@@ -1074,7 +1074,14 @@ function buildTaskFor(ingKey) {
.filter(([c, info]) => C[c] && c !== heimat && mrank(info.market) < 2)
.sort((a, b) => (mrank(a[1].market) - mrank(b[1].market)) || (grav(b) - grav(a)))
.map(([c]) => c);
const correct = [heimat, ...realistic.slice(0, 1)]; // Heimat + eine realistische Zweit-Wahl (wie normaler Zweig: 2 Korrekte)
// Kuratierte Zweit-Lieferanten (echte AT-Handelsdaten) übersteuern die
// Gravitations-Schätzung dort, wo sie danebenliegt (z.B. Weizen → Ungarn
// statt Deutschland). ADDITIV: greift NUR bei Zutaten mit `correct_for`
// für diese Heimat — alle anderen Zutaten bleiben unverändert.
const _curated = ((ing.correct_for && ing.correct_for[heimat]) || []).filter(c => C[c] && c !== heimat);
const correct = _curated.length
? [heimat, ..._curated]
: [heimat, ...realistic.slice(0, 1)]; // Heimat + eine realistische Zweit-Wahl
if (correct.length < 2) { // Garantie: es gibt IMMER eine zweite Wahl
const any = Object.entries(ing.producers)
.filter(([c]) => C[c] && c !== heimat && !correct.includes(c))