diff --git a/backend/guide.py b/backend/guide.py
index 6595834..a4c29a5 100644
--- a/backend/guide.py
+++ b/backend/guide.py
@@ -63,13 +63,6 @@ def _load_subbausteine(topic: str) -> dict[str, list[dict]]:
return out
-def _section_markup(sec: dict) -> str:
- """Section-Text mit Sub-Markern (für Lese-Check/Fix), damit die Struktur erhalten bleibt."""
- if not sec.get("subs"):
- return sec["md"]
- return "\n\n".join(f"\n{s['md']}" for s in sec["subs"])
-
-
def _zuteilung_subs(chunk: list[dict], entries: dict[int, str], subs_by_titel: dict[str, list[dict]]) -> str:
"""Wie _zuteilung_text, aber listet pro Baustein seine Subbausteine mit Stufe."""
lines: list[str] = []
@@ -654,11 +647,11 @@ async def _generate_sections(
chunk_nums = [[num for ch in chunk for num in ch["nums"] if num in by_num] for chunk in chunks]
def sections_text(nums: list[int]) -> str:
- return "\n\n".join(f"SECTION: {_titel(entries[num])}\n{_section_markup(by_num[num])}" for num in nums)
+ return "\n\n".join(f"SECTION: {_titel(entries[num])}\n{by_num[num]['md']}" for num in nums)
def auftraege_text(nums: list[int], probleme: dict[int, str]) -> str:
return "\n\n".join(
- f"SECTION: {_titel(entries[num])}\nPROBLEM: {probleme[num]}\nAKTUELLER INHALT:\n{_section_markup(by_num[num])}"
+ f"SECTION: {_titel(entries[num])}\nPROBLEM: {probleme[num]}\nAKTUELLER INHALT:\n{by_num[num]['md']}"
for num in nums
)
@@ -740,16 +733,12 @@ async def _generate_sections(
scope = [[num for num in nums if num in ersetzt] for nums in chunk_nums]
await _set_progress(guide_id, "Setze zusammen…")
- def _section(num: int) -> dict:
- sec = by_num[num]
- d = {"num": num, "title": _titel(entries[num]), "md": sec["md"]}
- if sec.get("subs"):
- d["subbausteine"] = [{"stufe": s["stufe"], "titel": s["titel"], "md": s["md"]} for s in sec["subs"]]
- return d
-
chapters: list[dict] = []
for ch in plan:
- sections = [_section(num) for num in ch["nums"] if num in by_num]
+ sections = [
+ {"num": num, "title": _titel(entries[num]), "md": by_num[num]["md"]}
+ for num in ch["nums"] if num in by_num
+ ]
if sections:
chapters.append({"title": ch["title"], "sections": sections})
geplant = {num for ch in plan for num in ch["nums"]}
diff --git a/frontend/src/App.vue b/frontend/src/App.vue
index bf266ac..5c6ad7e 100644
--- a/frontend/src/App.vue
+++ b/frontend/src/App.vue
@@ -440,10 +440,6 @@ onMounted(async () => {
--warning-soft: #fef3c7;
--warning-border: #fbbf24;
--danger: #991b1b;
- /* Subbaustein-Stufen als Ampel (Schwierigkeit), bewusst NICHT die Stand-Farben. */
- --stufe-einfach: #22c55e;
- --stufe-mittel: #f59e0b;
- --stufe-schwer: #ef4444;
--code-bg: #1e2a3a;
--code-fg: #e6e6e6;
--shadow: rgba(0, 0, 0, 0.12);
@@ -472,9 +468,6 @@ html.dark {
--warning-soft: #3a2c0a;
--warning-border: #a06a12;
--danger: #f87171;
- --stufe-einfach: #22c55e;
- --stufe-mittel: #f59e0b;
- --stufe-schwer: #ef4444;
--shadow: rgba(0, 0, 0, 0.5);
}
diff --git a/frontend/src/components/BausteinFokus.vue b/frontend/src/components/BausteinFokus.vue
index 7488dfd..7cf0e77 100644
--- a/frontend/src/components/BausteinFokus.vue
+++ b/frontend/src/components/BausteinFokus.vue
@@ -1,6 +1,5 @@
-
-
-
-
-
- {{ verborgen }} ausgeblendet
-
-
-
- {{ s.stufe }}
- {{ s.titel }}
-
-
-
-
-
-
-
-
diff --git a/frontend/src/components/TopicDetail.vue b/frontend/src/components/TopicDetail.vue
index 7ad926e..45a1da9 100644
--- a/frontend/src/components/TopicDetail.vue
+++ b/frontend/src/components/TopicDetail.vue
@@ -5,7 +5,6 @@ import { renderMarkdown } from '../markdown.js'
import { useChat } from '../composables/useChat.js'
import BausteinPanel from './BausteinPanel.vue'
import BausteinFokus from './BausteinFokus.vue'
-import SubbausteinView from './SubbausteinView.vue'
const props = defineProps({
previewGuide: { type: Object, default: null },
@@ -200,8 +199,7 @@ function extractContext() {
✓✓ Verstanden✓ Absolviert
-
-
+
`-Marker (Subbausteine), BEHALTE diese Struktur bei: gib pro Subbaustein wieder den Marker und darunter den überarbeiteten Text. Stufe und Subbaustein-Titel exakt übernehmen, keine Subbausteine entfernen oder hinzufügen.
-
-Schreibe NUR die Datei {out_path} in GENAU diesem Format — für JEDE beanstandete Section ein section-Marker (Titel EXAKT wie oben), darunter der vollständige neue Markdown-Body (mit den ``-Markern, falls die Section welche hatte):
+Schreibe NUR die Datei {out_path} in GENAU diesem Format — für JEDE beanstandete Section ein section-Marker (Titel EXAKT wie oben), darunter der vollständige neue Markdown-Body:
-
-Überarbeiteter Text zu diesem Teilpunkt…
+Erklärung (Einordnung → Wie/Warum) laut SECTION-SPEZIFIKATION…
+
+### Beispiel
+(Beispiel im themengerechten Format laut SECTION-SPEZIFIKATION: Codeblock NUR bei Code-Themen, sonst Beispielsätze oder Mini-Szenario)
Die Marker-Zeilen exakt so schreiben. Kein Text außerhalb der Sections.
{extra}
diff --git a/templates/Prompt/Guide-Writer.md b/templates/Prompt/Guide-Writer.md
index 01e47e3..72a90d9 100644
--- a/templates/Prompt/Guide-Writer.md
+++ b/templates/Prompt/Guide-Writer.md
@@ -1,40 +1,36 @@
Schreibe Sections für einen Lern-Guide zum Thema "{topic}" (Format: {format_name}).
-Dir zugeteilt sind folgende Kapitel und Bausteine — verbindlich: jede zugeteilte Section muss vorkommen, keine zusätzlichen erfinden. Unter jedem Baustein stehen seine SUBBAUSTEINE mit Stufe (`[einfach]`, `[mittel]`, `[schwer]`):
+Dir zugeteilt sind folgende Kapitel und Bausteine — verbindlich: jede zugeteilte Section muss vorkommen, keine zusätzlichen erfinden. Unter jedem Baustein stehen seine SUBBAUSTEINE mit Stufe (`[einfach]`/`[mittel]`/`[schwer]`):
{zuteilung}
{facts}
Das Format ({format_name}) beeinflusst NICHT, wie ein Baustein geschrieben wird — nur, wie viele Bausteine das Thema abdecken. Derselbe Baustein bekommt in MiniGuide, Guide und FullGuide denselben Text.
-SUBBAUSTEINE — so schreibst du:
-- Pro zugeteiltem Subbaustein schreibst du EINEN kurzen, eigenständigen Abschnitt. Ein Subbaustein = ein Teilpunkt.
-- Jeder Subbaustein-Abschnitt steht für sich: allein verständlich, ohne die anderen gelesen zu haben. Ein Anfänger darf später nur die `[einfach]`-Abschnitte sehen — die müssen für sich Sinn ergeben.
-- Die Stufe steuert die Tiefe: `[einfach]` = Grundlage, knapp und sofort verständlich. `[mittel]` = ein Detail/eine Variante. `[schwer]` = Sonderfall/Tücke.
-- So lang wie nötig, so kurz wie möglich: 1–4 Sätze je Subbaustein. Ein Beispiel NUR, wo es wirklich hilft (Format laut Spezifikation).
-- Ein Baustein mit vielen Subbausteinen wird dadurch lang, einer mit wenigen kurz — das ist gewollt.
+SO SCHREIBST DU einen Baustein — EIN zusammenhängender Text, kein Stichwort-Stakkato:
+- Schreibe pro Baustein EINEN fließenden Lern-Text laut SECTION-SPEZIFIKATION (Einordnung → Erklärung → Beispiel). Ein roter Faden, mit Übergängen.
+- Die Subbausteine sind deine INHALTS-CHECKLISTE, keine Überschriften: webe sie in den Fließtext ein. Behandle jeden, aber als Teil eines Ganzen — nicht als isolierten Mini-Absatz.
+- Reihenfolge: erst die `[einfach]`-Punkte (das Fundament), dann `[mittel]` (Details/Varianten), zuletzt `[schwer]` (Sonderfälle/Tücken — knapp, als fortgeschrittener Hinweis).
+- Tiefe folgt der Zahl der Subbausteine: ein Baustein mit vielen Subbausteinen wird ein langer, gehaltvoller Text; einer mit wenigen bleibt kurz. Das ist gewollt.
+- KEIN festes Längen-Limit. So lang wie nötig, damit ein Anfänger es ohne Vorwissen versteht. Lieber ein Satz mehr und klar.
+- Beispiel großzügig einsetzen, wo es hilft — bei Code-/Tool-Themen fast immer ein kurzes Code-Snippet (Format laut Spezifikation).
GEPRÜFTE INHALTE je Baustein — das ist verbindlich, was gelehrt werden muss:
{inhalte}
-Nutze diese Inhalte. Erfinde nichts dazu, lass nichts Wesentliches weg. Verteile sie auf die Subbausteine. Lehre simpel: kurze Sätze, Listen für Aufzählungen, ein Anfänger versteht es sofort.
+Nutze diese Inhalte. Erfinde nichts dazu, lass nichts Wesentliches weg. Lehre simpel: kurze Sätze, Listen für Aufzählungen, ein Anfänger versteht es sofort.
-SECTION-SPEZIFIKATION (gilt je Subbaustein-Abschnitt):
+SECTION-SPEZIFIKATION (gilt je Baustein):
{spec}
-Schreibe NUR die Datei {out_path} in GENAU diesem Format — pro Kapitel ein kapitel-Marker, pro Baustein ein section-Marker (Titel EXAKT aus der Zuteilung), darunter PRO Subbaustein ein sub-Marker `` und dann der Markdown-Body dieses Subbausteins:
+Schreibe NUR die Datei {out_path} in GENAU diesem Format — pro Kapitel ein kapitel-Marker, pro Baustein ein section-Marker (Titel EXAKT aus der Zuteilung), darunter der zusammenhängende Markdown-Body:
-
-Kurzer, eigenständiger Text zu diesem Teilpunkt…
+Erklärung (Einordnung → Wie/Warum) laut SECTION-SPEZIFIKATION…
-
-Kurzer Text…
+### Beispiel
+(Beispiel im themengerechten Format laut SECTION-SPEZIFIKATION: Codeblock NUR bei Code-Themen, sonst Beispielsätze oder Mini-Szenario)
-Regeln für die Marker:
-- `stufe` ist genau eines von: einfach, mittel, schwer (aus der Zuteilung übernehmen).
-- Der Subbaustein-Titel nach `|` EXAKT aus der Zuteilung.
-- Hat ein Baustein in der Zuteilung KEINE Subbausteine, schreibe direkt unter den section-Marker einen normalen Section-Body (ohne sub-Marker).
-- Kein Text außerhalb der Marker, kein Dokument-Titel, kein Inhaltsverzeichnis.
+Die Marker-Zeilen exakt so schreiben. Kein Text außerhalb der Sections, kein Dokument-Titel, kein Inhaltsverzeichnis.
{extra}