Optionaler Stopp nach der Gliederung je Version

Häkchen beim Anlegen und bei „Neue Version“: der Lauf hält nach der
Gliederung als „pausiert“ an, damit man sie prüfen kann, bevor die
Kapitel geschrieben werden. „Fortsetzen“ schreibt weiter.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
team3
2026-10-12 15:52:14 +02:00
parent 78a74d140b
commit 4cd4b7ed2e
8 changed files with 31 additions and 15 deletions

View File

@@ -55,15 +55,17 @@ def name_von_slug(sl: str) -> str | None:
return next((t["name"] for t in themen() if t.get("slug") == sl), None)
def version_anlegen(name: str, hinweise: str | None = None) -> str:
"""Neue Version; ohne Angabe übernimmt sie die Hinweise der neuesten Version (bzw. des Themas)."""
def version_anlegen(name: str, hinweise: str | None = None, stopp_gliederung: bool = False) -> str:
"""Neue Version; ohne Angabe übernimmt sie die Hinweise der neuesten Version (bzw. des Themas).
stopp_gliederung: der Lauf hält nach der Gliederung an (günstiger Testlauf), „Fortsetzen“ schreibt weiter."""
vs = versionen(name)
alt = hinweise_von(f"{name}/v{vs[-1]}") if vs else (thema(name) or {}).get("hinweise", "")
key = f"{name}/v{(vs or [0])[-1] + 1}"
v = verzeichnis(key)
for u in ("quellen", "buch", "berichte", "arbeit"):
(v / u).mkdir(parents=True)
_schreiben(v / "state.json", {**leerer_zustand(), "hinweise": (alt if hinweise is None else hinweise).strip()})
_schreiben(v / "state.json", {**leerer_zustand(), "hinweise": (alt if hinweise is None else hinweise).strip(),
"stopp_gliederung": stopp_gliederung})
return key
@@ -137,7 +139,7 @@ def themen() -> list[dict]:
return aus
def anlegen(name: str, hinweise: str, spezialisierung: str = "") -> dict:
def anlegen(name: str, hinweise: str, spezialisierung: str = "", stopp_gliederung: bool = False) -> dict:
"""name ist das Hauptthema („Game Design“), die Spezialisierung grenzt es ein; beides zusammen bildet die Bezeichnung."""
spezialisierung = spezialisierung.strip()
bez = bezeichnung(name, spezialisierung)
@@ -148,7 +150,7 @@ def anlegen(name: str, hinweise: str, spezialisierung: str = "") -> dict:
t = {"name": bez, "thema": name, "spezialisierung": spezialisierung, "slug": slug_frei(bez), "titel": bez,
"hinweise": hinweise.strip(), "angelegt": jetzt()}
_schreiben(d / "thema.json", t)
version_anlegen(bez)
version_anlegen(bez, stopp_gliederung=stopp_gliederung)
return t
@@ -160,14 +162,14 @@ def loeschen(name: str) -> None:
def zuruecksetzen(key: str) -> None:
v = verzeichnis(key)
h = hinweise_von(key)
h, stopp = hinweise_von(key), bool(zustand(key).get("stopp_gliederung"))
_cache.pop(key, None)
for u in ("quellen", "buch", "berichte", "arbeit"):
shutil.rmtree(v / u, ignore_errors=True)
(v / u).mkdir()
for f in ("deutung.json", "log.jsonl", "state.json", "position.json"):
(v / f).unlink(missing_ok=True)
_schreiben(v / "state.json", {**leerer_zustand(), "hinweise": h})
_schreiben(v / "state.json", {**leerer_zustand(), "hinweise": h, "stopp_gliederung": stopp})
def thema(key: str) -> dict | None: