This commit is contained in:
Team3
2026-06-06 19:13:18 +02:00
parent b7a751e74f
commit 20f42974a5
6 changed files with 48 additions and 22 deletions

View File

@@ -688,6 +688,8 @@ async def _generate_onepager(
def is_cancelled() -> bool: def is_cancelled() -> bool:
return guide_id in _cancelled return guide_id in _cancelled
PFLICHT_KARTEN = ("was ist", "welches problem", "wann nehmen", "einordnung", "so sieht", "fakten", "erste schritte")
def karten_schema(data): def karten_schema(data):
if not isinstance(data, dict): if not isinstance(data, dict):
return None return None
@@ -700,7 +702,14 @@ async def _generate_onepager(
for k in karten: for k in karten:
if not isinstance(k, dict) or not isinstance(k.get("titel"), str) or not isinstance(k.get("merksatz"), str): if not isinstance(k, dict) or not isinstance(k.get("titel"), str) or not isinstance(k.get("merksatz"), str):
return None return None
out.append({"titel": k["titel"].strip(), "merksatz": k["merksatz"].strip()}) titel, merksatz = k["titel"].strip(), k["merksatz"].strip()
if len(merksatz) < 5: # abgebrochene/leere Karten ("Per") sind ungültig
return None
out.append({"titel": titel, "merksatz": merksatz})
vorhanden = [k["titel"].lower() for k in out]
for pflicht in PFLICHT_KARTEN:
if not any(t.startswith(pflicht) for t in vorhanden):
return None
return out return out
# Schritt 1: Recherche — eigene Faktenbasis, unabhängig von den Bausteinen # Schritt 1: Recherche — eigene Faktenbasis, unabhängig von den Bausteinen

View File

@@ -2,10 +2,10 @@ SECTION-AUFBAU
Jeder Baustein wird GENAU eine Section mit: Jeder Baustein wird GENAU eine Section mit:
1. Titel — der Baustein-Titel (kommt aus dem Marker, nicht in den Body schreiben) 1. Titel — der Baustein-Titel (kommt aus dem Marker, nicht in den Body schreiben)
2. Beschreibung — was es ist, wozu es dient, worauf man achten muss 2. Beschreibung — was es ist und wozu: MAXIMAL 12 Sätze
3. Beispiele — kurze, realistische Code-/Anwendungsbeispiele mit je 1 Satz Einordnung. Ein Beispiel pro relevanter Variante des Bausteins: simple Bausteine haben eines, variantenreiche mehrere. Geordnet vom Üblichen zum Speziellen — Nischenfälle zuletzt. Weglassen, wenn ohne Mehrwert. 3. Beispiele — KURZ und SIMPEL: wenige Zeilen Code, das Minimalbeispiel, keine Realwelt-Komplexität. Höchstens 1 knapper Satz Einordnung dazu. Ein Beispiel pro relevanter Variante: simple Bausteine eines, variantenreiche mehrere. Geordnet vom Üblichen zum Speziellen. Weglassen, wenn ohne Mehrwert.
Umfang: so kurz wie möglich, so lang wie nötig — das entscheidet der Baustein, nicht eine Vorgabe. Ein simples Konzept = 23 Sätze, ein komplexes darf länger sein. Umfang: kurz. Die Länge einer Section kommt aus der ZAHL der Beispiele (Varianten), nie aus langen Texten.
Tonalität: klares Deutsch, direkt, praxisorientiert. Fachbegriffe beim ersten Auftreten kurz erklären. Keine Füllsätze, keine Einleitungsfloskeln. Tonalität: klares Deutsch, direkt, praxisorientiert. Fachbegriffe beim ersten Auftreten kurz erklären. Keine Füllsätze, keine Einleitungsfloskeln.

View File

@@ -3,12 +3,15 @@ Sortiere die Bausteine des Themas "{topic}" in EINE Gesamtreihenfolge für einen
BAUSTEINE: BAUSTEINE:
{bausteine} {bausteine}
Kriterium — Lernstufen: Kriterium — bewerte jeden Baustein mit zwei Fragen: Ist er WICHTIG (braucht ihn fast jeder Anwender)? Ist er EINFACH (ohne viel Vorwissen verständlich)? Daraus folgt die Reihenfolge:
1. ANFÄNGER zuerst: was man als Einsteiger zuerst braucht und versteht. 1. wichtig + einfach
2. Dann FORTGESCHRITTEN: was in der echten Praxis dazukommt. 2. wichtig + komplex
3. Dann EXPERTE: was Profis brauchen. 3. unwichtig + einfach
4. NISCHE immer ans Ende — unabhängig vom Niveau (Spezialfälle, Randthemen, selten Gebrauchtes). 4. unwichtig + komplex
5. Querregel: Voraussetzungen stehen vor dem, was auf ihnen aufbaut.
Querregeln:
- Voraussetzungen stehen vor dem, was auf ihnen aufbaut.
- Sortiere NICHT nach Dokument- oder Themenstruktur. Ein seltener Baustein gehört nach hinten, auch wenn er thematisch zu frühen Bausteinen gehört (Beispiel HTML: `<base>` ist ein head-Element wie `<title>`, aber unwichtig → weit hinten).
Regeln: Regeln:
- ALLE Bausteine genau einmal, keine neuen erfinden. - ALLE Bausteine genau einmal, keine neuen erfinden.

View File

@@ -1,16 +1,21 @@
Baue aus der Faktenbasis einen OnePager zum Thema "{topic}" — die wichtigsten Informationen, die auf eine Seite passen. Baue aus der Faktenbasis einen OnePager zum Thema "{topic}" — ein Einordnungs- und Entscheidungsdokument auf einer Seite. Danach muss der Leser verstehen, was das Thema ist, wo es hingehört und ob es das ist, was er sucht.
FAKTENBASIS (alleinige Quelle, nichts hinzuerfinden): FAKTENBASIS (alleinige Quelle, nichts hinzuerfinden):
{recherche} {recherche}
Regeln: Erstelle GENAU diese 7 Karten (Titel exakt so):
- Wähle die wichtigsten Punkte aus — was man über "{topic}" wissen MUSS. Eine Bildschirmseite, also etwa 1018 Karten. 1. "Was ist {topic}?" — Definition in 12 Sätzen
- Pro Karte GENAU ein prägnanter Merksatz: maximal ~15 Wörter, `inline-code` wo es hilft. 2. "Welches Problem löst es?" — der Schmerzpunkt, für den es gebaut wurde
- Titel und Merksätze auf DEUTSCH (Code-Bezeichner bleiben original). 3. "Wann nehmen — wann nicht?" — konkrete Entscheidungshilfe in 24 Stichpunkten
- Reihenfolge: vom Grundlegenden zum Speziellen. 4. "Einordnung & Alternativen" — die wichtigsten Nachbarn und der Unterschied
5. "So sieht es aus" — EIN minimales, typisches Codebeispiel (Markdown-Codeblock)
6. "Fakten" — Version, Reife, Lizenz/Kosten, Verbreitung
7. "Erste Schritte" — wie man anfängt, in 12 Zeilen
Inhalt pro Karte kompakt (14 Sätze bzw. Stichpunkte, Markdown erlaubt), auf DEUTSCH, alles aus der Faktenbasis belegbar.
Schreibe NUR die JSON-Datei nach: {out_path} Schreibe NUR die JSON-Datei nach: {out_path}
Format: Format:
{{"karten": [{{"titel": "", "merksatz": "…"}}]}} {{"karten": [{{"titel": "Was ist {topic}?", "merksatz": "…"}}]}}
{extra} {extra}

View File

@@ -1,8 +1,17 @@
Sammle die Faktenbasis für einen OnePager — die kompakteste Übersicht — zum Thema "{topic}". Sammle die Faktenbasis für einen OnePager — ein Einordnungs- und Entscheidungsdokument — zum Thema "{topic}".
{source} {source}
Recherchiere gezielt diese Dimensionen:
1. Definition: Was ist "{topic}" in 12 Sätzen?
2. Problem: Welches Problem löst es, wer braucht es?
3. Abgrenzung: Wofür ist es geeignet, wofür ausdrücklich nicht?
4. Einordnung: Die wichtigsten Alternativen/Nachbarn und wie sich "{topic}" davon unterscheidet.
5. Anschauung: Ein minimales, typisches Code-/Anwendungsbeispiel.
6. Fakten: Aktuelle Version, Reife/Alter, Lizenz/Kosten, Verbreitung.
7. Einstieg: Wie fängt man an (Installation/erster Schritt)?
Schreibe NUR die Markdown-Datei nach: {out_path} Schreibe NUR die Markdown-Datei nach: {out_path}
Inhalt der Datei: die wichtigsten Punkte des Themas (Kernkonzepte, zentrale Fakten, Versionen, typische Anwendung) — kompakt, faktenorientiert, mit Quelle (URL bzw. Dateipfad) pro Punkt. Keine Fließtexte, keine Einleitung. Die Datei ist die alleinige Faktenbasis für den OnePager. Kompakt, faktenorientiert, mit Quelle (URL bzw. Dateipfad) pro Punkt. Die Datei ist die alleinige Faktenbasis für den OnePager.
{extra} {extra}

View File

@@ -7,9 +7,9 @@ ONEPAGER-KARTEN:
{karten} {karten}
Prüfe: Prüfe:
1. Stimmen alle Aussagen mit der Faktenbasis überein? Nichts Erfundenes? 1. Sind alle 7 Pflicht-Karten vorhanden und vollständig ausgefüllt (keine abgebrochenen oder leeren Inhalte)? — "Was ist {topic}?", "Welches Problem löst es?", "Wann nehmen — wann nicht?", "Einordnung & Alternativen", "So sieht es aus", "Fakten", "Erste Schritte"
2. Fehlt ein Punkt, der für "{topic}" unverzichtbar ist und in der Faktenbasis steht? 2. Stimmen alle Aussagen mit der Faktenbasis überein? Nichts Erfundenes?
3. Sind die Merksätze prägnant (max. ~15 Wörter), deutsch und vom Grundlegenden zum Speziellen geordnet? 3. Beantwortet der OnePager die Leserfrage „Ist das das, was ich suche?" — ist die Abgrenzung konkret genug?
Schreibe NUR die JSON-Datei nach: {out_path} Schreibe NUR die JSON-Datei nach: {out_path}