ui fix prompt fix

This commit is contained in:
Lars 2025-12-12 15:55:08 +01:00
parent 7b6cc8da7c
commit 30047f8e00
2 changed files with 25 additions and 9 deletions

View File

@ -113,11 +113,13 @@ def parse_markdown_draft(full_text):
"""Robustes Parsing + Sanitization."""
clean_text = full_text
# 1. Markdown Code-Blöcke entfernen
pattern_block = r"```(?:markdown|md)?\s*(.*?)\s*```"
match_block = re.search(pattern_block, full_text, re.DOTALL | re.IGNORECASE)
if match_block:
clean_text = match_block.group(1).strip()
# 2. Split YAML / Body
parts = re.split(r"^---+\s*$", clean_text, maxsplit=2, flags=re.MULTILINE)
meta = {}
@ -126,13 +128,28 @@ def parse_markdown_draft(full_text):
if len(parts) >= 3:
yaml_str = parts[1]
body_candidate = parts[2]
# --- FIX 1: Hashtag-Cleaner für YAML ---
# Entfernt #, wenn sie innerhalb von [] stehen, um YAML-Kommentare zu verhindern.
# Wir entfernen pauschal # im YAML-Block, da Tags dort keine brauchen.
yaml_str_clean = yaml_str.replace("#", "")
try:
parsed = yaml.safe_load(yaml_str)
parsed = yaml.safe_load(yaml_str_clean)
if isinstance(parsed, dict):
meta = parsed
body = body_candidate.strip()
except Exception:
pass
except Exception as e:
print(f"YAML Parsing Warning: {e}")
# Fallback: Body retten, Meta leer lassen
body = body_candidate.strip()
# --- FIX 2: Type/Status Swap Korrektur ---
# Wenn das LLM halluziniert hat: type='draft' -> Das ist eigentlich der Status.
if meta.get("type") == "draft":
meta["status"] = "draft"
# Wir raten einen besseren Typ oder setzen default
meta["type"] = "experience" # Da Interviews oft Experiences sind
return normalize_meta_and_body(meta, body)

View File

@ -97,7 +97,6 @@ technical_template: |
# ---------------------------------------------------------
# 5. INTERVIEW: Der "One-Shot Extractor" (Performance Mode)
# ---------------------------------------------------------
interview_template: |
TASK:
Erstelle einen Markdown-Entwurf für eine Notiz vom Typ '{target_type}'.
@ -114,14 +113,14 @@ interview_template: |
OUTPUT REGELN (STRIKT BEACHTEN):
A. FRONTMATTER (YAML):
- Darf NUR folgende Felder enthalten: [type, status, title, tags].
- Schreibe KEINE inhaltlichen Sätze (wie 'Situation', 'Ziel') in das YAML!
- Setze 'status: draft'.
- 'type': Muss '{target_type}' sein (oder 'experience', 'project' etc.). NIEMALS 'draft'.
- 'status': Muss IMMER 'draft' sein.
- 'tags': Eine JSON-Liste von Strings OHNE Hashtags. Beispiel: ['Recycling', 'Konflikt']. NICHT: [#Recycling].
- Keine Sätze im YAML, nur Daten.
B. BODY (Markdown):
- Nutze für jedes Schema-Feld eine Markdown-Überschrift (## Feldname).
- Schreibe den Inhalt DARUNTER.
- Nutze "[TODO: Ergänzen]", wenn Infos fehlen.
HINWEIS ZUM TYP:
{schema_hint}
@ -132,7 +131,7 @@ interview_template: |
type: {target_type}
status: draft
title: ...
tags: [...]
tags: ["Tag1", "Tag2"]
---
# Titel der Notiz