Spezialisierung gehört zum Thema, Hinweise zur Version

Thema „Game Design“ plus Spezialisierung „digitale Sammelkartenspiele“
wird zur Bezeichnung „Game Design – digitale Sammelkartenspiele“
(Ordner, Liste). Die Prompts bekommen das Hauptthema und die
Spezialisierung getrennt. „Neue Version“ ändert nur noch die Hinweise.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
team3
2026-10-12 15:42:44 +02:00
parent d2da9920a3
commit 4c989bc93c
7 changed files with 50 additions and 47 deletions

View File

@@ -55,32 +55,32 @@ 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, spezialisierung: str | None = None) -> str:
"""Neue Version; ohne Angabe übernimmt sie Hinweise und Spezialisierung der neuesten Version (bzw. des Themas)."""
def version_anlegen(name: str, hinweise: str | None = None) -> str:
"""Neue Version; ohne Angabe übernimmt sie die Hinweise der neuesten Version (bzw. des Themas)."""
vs = versionen(name)
alt_h, alt_s = eingaben(f"{name}/v{vs[-1]}") if vs else _eingaben_thema(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)
st = leerer_zustand()
st["hinweise"] = (alt_h if hinweise is None else hinweise).strip()
st["spezialisierung"] = (alt_s if spezialisierung is None else spezialisierung).strip()
_schreiben(v / "state.json", st)
_schreiben(v / "state.json", {**leerer_zustand(), "hinweise": (alt if hinweise is None else hinweise).strip()})
return key
def _eingaben_thema(name: str) -> tuple[str, str]:
t = thema(name) or {}
return t.get("hinweise", ""), t.get("spezialisierung", "")
def eingaben(key: str) -> tuple[str, str]:
"""Hinweise und Spezialisierung einer Version; alte Versionen ohne eigene Eingaben nehmen die des Themas."""
def hinweise_von(key: str) -> str:
"""Hinweise gelten je Version; alte Versionen ohne eigene nehmen die des Themas."""
st = zustand(key)
if "hinweise" in st:
return st["hinweise"], st.get("spezialisierung", "")
return _eingaben_thema(key)
return st["hinweise"] if "hinweise" in st else (thema(key) or {}).get("hinweise", "")
def spezialisierung_von(key: str) -> str:
"""Die Spezialisierung gehört zum Thema: eine andere Spezialisierung ist ein anderes Buch."""
return (thema(key) or {}).get("spezialisierung", "")
def bezeichnung(name: str, spezialisierung: str) -> str:
"""Ordner- und Anzeigename: „Game Design – digitale Sammelkartenspiele“."""
return f"{name} – {spezialisierung}" if spezialisierung else name
def version_loeschen(key: str) -> None:
@@ -138,13 +138,17 @@ def themen() -> list[dict]:
def anlegen(name: str, hinweise: str, spezialisierung: str = "") -> dict:
d = config.STORAGE / name
"""name ist das Hauptthema („Game Design“), die Spezialisierung grenzt es ein; beides zusammen bildet die Bezeichnung."""
spezialisierung = spezialisierung.strip()
bez = bezeichnung(name, spezialisierung)
d = config.STORAGE / bez
if d.exists():
raise ValueError("Thema existiert schon")
d.mkdir(parents=True)
t = {"name": name, "slug": slug_frei(name), "titel": name, "hinweise": hinweise.strip(), "spezialisierung": spezialisierung.strip(), "angelegt": jetzt()}
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(name)
version_anlegen(bez)
return t
@@ -156,14 +160,14 @@ def loeschen(name: str) -> None:
def zuruecksetzen(key: str) -> None:
v = verzeichnis(key)
h, s = eingaben(key)
h = hinweise_von(key)
_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, "spezialisierung": s})
_schreiben(v / "state.json", {**leerer_zustand(), "hinweise": h})
def thema(key: str) -> dict | None: