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

@@ -34,7 +34,6 @@ class ThemaNeu(BaseModel):
class VersionNeu(BaseModel):
hinweise: str | None = None # None: wie die bisherige Version
spezialisierung: str | None = None
class Position(BaseModel):
@@ -73,7 +72,8 @@ def _thema_info(t: dict) -> dict | None:
if not vs:
return None
neueste = vs[-1]
return {"slug": t["slug"], "name": t["name"], "titel": t["titel"], "hinweise": t.get("hinweise", ""), "spezialisierung": t.get("spezialisierung", ""),
return {"slug": t["slug"], "name": t["name"], "thema": t.get("thema") or t["name"], "spezialisierung": t.get("spezialisierung", ""),
"titel": t["titel"], "hinweise": t.get("hinweise", ""),
"angelegt": t.get("angelegt", ""), "status": neueste["status"], "laeuft": neueste["laeuft"],
"stufe": neueste["stufe"], "versionen": vs}
@@ -86,7 +86,7 @@ async def themen():
@app.post("/api/themen")
async def thema_anlegen(body: ThemaNeu):
name = body.name.strip()
if not state.name_ok(name):
if not state.name_ok(name) or not state.name_ok(state.bezeichnung(name, body.spezialisierung.strip())):
raise HTTPException(400, "Ungültiger Name")
try:
return _thema_info(state.anlegen(name, body.hinweise, body.spezialisierung))
@@ -110,9 +110,9 @@ async def thema_loeschen(slug: str):
@app.post("/api/themen/{slug}/versionen")
async def version_anlegen(slug: str, body: VersionNeu | None = None):
"""Neue Version: frischer Lauf ohne Wissen über die Vorgänger; Hinweise und Spezialisierung wahlweise geändert."""
"""Neue Version: frischer Lauf ohne Wissen über die Vorgänger; Hinweise wahlweise geändert."""
b = body or VersionNeu()
key = state.version_anlegen(_thema(slug)["name"], b.hinweise, b.spezialisierung)
key = state.version_anlegen(_thema(slug)["name"], b.hinweise)
return {"v": int(key.rsplit("/v", 1)[1])}
@@ -121,8 +121,8 @@ async def zustand(slug: str, n: int):
key = _key(slug, n)
t = _thema(slug)
st = state.zustand(key)
h, sp = state.eingaben(key)
return {"slug": slug, "name": t["name"], "version": n, "titel": t["titel"], **st, "hinweise": h, "spezialisierung": sp,
return {"slug": slug, "name": t["name"], "thema": t.get("thema") or t["name"], "version": n, "titel": t["titel"], **st,
"hinweise": state.hinweise_von(key), "spezialisierung": state.spezialisierung_von(key),
"deutung": st.get("deutung") or state.deutung(key), "ereignisse": st["ereignisse"][-100:]}