From a7c5630e5b999df22db1695edf948d9dd64cb63c Mon Sep 17 00:00:00 2001 From: Lars Date: Sat, 8 Nov 2025 21:48:01 +0100 Subject: [PATCH] app/core/note_payload.py aktualisiert --- app/core/note_payload.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/app/core/note_payload.py b/app/core/note_payload.py index f60db87..c80973f 100644 --- a/app/core/note_payload.py +++ b/app/core/note_payload.py @@ -196,6 +196,42 @@ def make_note_payload( for k in ("area", "project", "source", "lang", "slug", "aliases"): if k in fm: payload[k] = fm[k] +# --- MINIMAL PATCH: retriever_weight in Note-Payload injizieren (ohne Seiteneffekte) --- +# Annahmen: Variablen `payload`, `parsed_note`, `retriever_weight`, `type_defaults` existieren bereits +# und `payload` enthält die bisherigen Felder wie gehabt. + +# Frontmatter defensiv holen, ohne Struktur zu verändern: +fm = {} +try: + fm = getattr(parsed_note, "frontmatter", {}) or {} +except Exception: + pass +if not isinstance(fm, dict): + fm = {} + +# Note-Typ möglichst aus Frontmatter oder parsed_note lesen, ohne bestehende Logik zu beeinflussen: +note_type = fm.get("type") +if not note_type: + note_type = getattr(parsed_note, "type", None) + +# Wertkaskade: Frontmatter > type_defaults > Funktionsargument > (kein Fallback: wir setzen nur, wenn vorhanden) +rw_val = None +if "retriever_weight" in fm: + rw_val = fm["retriever_weight"] +elif type_defaults and note_type in type_defaults and isinstance(type_defaults[note_type], dict): + if "retriever_weight" in type_defaults[note_type]: + rw_val = type_defaults[note_type]["retriever_weight"] +elif retriever_weight is not None: + rw_val = retriever_weight + +# Nur setzen, wenn ein Wert vorhanden ist – und robust nach float wandeln: +if rw_val is not None: + try: + payload["retriever_weight"] = float(str(rw_val).replace(",", ".")) + except Exception: + # Keine Havarie riskieren – wenn nicht konvertierbar, nicht setzen. + pass +# --- END MINIMAL PATCH --- return payload