feat(fach): Duplikate case-insensitiv verhindern, Verwendung anzeigen und ersetzen/zusammenführen
CI / backend-tests (push) Failing after 2m7s
CI / frontend-build (push) Successful in 18s

Anlegen prüft jetzt case-insensitiv auf Duplikate (409 statt "Fach A"
neben "fach a"). Neuer Endpunkt GET /faecher/{id}/objekte zeigt, welche
Objekte ein Fach über ihre Vorlage tatsächlich nutzen. POST
/faecher/{id}/ersetzen benennt um und zieht alle Vorlagenpositionen
mit; landet der neue Name auf einem bereits bestehenden Fach, werden
beide zusammengeführt. Frontend: Fach anklicken öffnet Verwendung +
Ersetzen-Eingabe direkt in der Fächer-Verwaltung.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
This commit is contained in:
2026-09-07 00:18:04 +02:00
co-authored by Claude Sonnet 5
parent 8e89755385
commit 5f568c365c
5 changed files with 283 additions and 14 deletions
+4 -3
View File
@@ -17,9 +17,10 @@ async def _stelle_faecher_sicher(
if not benoetigt:
return
result = await db.execute(select(Fach.name).where(Fach.objekttyp_id == objekttyp_id))
vorhanden = set(result.scalars().all())
for name in benoetigt - vorhanden:
db.add(Fach(objekttyp_id=objekttyp_id, name=name))
vorhanden_klein = {name.strip().lower() for name in result.scalars().all()}
for name in benoetigt:
if name.strip().lower() not in vorhanden_klein:
db.add(Fach(objekttyp_id=objekttyp_id, name=name))
await db.flush()