Stufe „Stoff auswählen“ vor der Gliederung: Auswahl und Tiefe je Thema

Neuer Agent entscheidet aus Quellen und Leitfrage, welche Themen ins Buch
kommen und wie tief (herleiten, erklären, nennen, weggelassen), mit
Begründung in buch/STOFF.md. Die Gliederung baut nur daraus, das Gewicht
folgt der Tiefe. Autoren und Prüfer halten sich an STOFF.md.
Nachgetragene Stufen gelten als fertig, wenn eine spätere schon fertig ist.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
team3
2026-10-12 17:53:12 +02:00
parent 1edc13556a
commit 1e8a057615
9 changed files with 88 additions and 17 deletions

View File

@@ -190,13 +190,15 @@ def zustand(name: str) -> dict:
for a in st["agenten"]:
if a["status"] == "laeuft":
a["status"] = "abgebrochen"
# Später hinzugekommene Stufen (z. B. Lektorat) in alte Zustände einfügen, in der Reihenfolge der Konfiguration
# Später hinzugekommene Stufen (z. B. Lektorat, Stoff) in alte Zustände einfügen, in der Reihenfolge der Konfiguration;
# eine nachgetragene Stufe gilt als fertig, wenn eine spätere Stufe schon fertig ist (der Lauf ist darüber hinaus).
vorhanden = {x["id"] for x in st["stufen"]}
if vorhanden != {sid for sid, _ in config.STUFEN}:
alt = {x["id"]: x for x in st["stufen"]}
fertig = st.get("status") == "fertig"
st["stufen"] = [alt.get(sid) or {"id": sid, "titel": t, "status": "fertig" if fertig else "offen", "fertig": 0, "gesamt": 0,
"kosten_usd": 0.0, "tokens": 0, "gestartet": "", "beendet": ""} for sid, t in config.STUFEN]
reihe = [sid for sid, _ in config.STUFEN]
fertig_bis = max((reihe.index(x["id"]) for x in st["stufen"] if x["status"] == "fertig" and x["id"] in reihe), default=-1)
st["stufen"] = [alt.get(sid) or {"id": sid, "titel": t, "status": "fertig" if i <= fertig_bis else "offen", "fertig": 0, "gesamt": 0,
"kosten_usd": 0.0, "tokens": 0, "gestartet": "", "beendet": ""} for i, (sid, t) in enumerate(config.STUFEN)]
_cache[name] = st
return _cache[name]