Files
MABEA/backend
patrickandClaude Sonnet 5 7f5bbb65d5
CI / backend-tests (push) Failing after 1m19s
CI / frontend-build (push) Successful in 23s
Rollen-differenzierte Verwaltungs-UI (Material-/Leitungsverantwortliche)
Bug: Frontend prüfte nur istAdmin, Materialverantwortliche und Leitungs-
verantwortliche sahen exakt dieselbe UI wie Mitarbeiter - obwohl das Backend
längst granular unterscheidet (require_roles je Endpunkt).

- AuthContext gibt volle Rollenliste + istVerantwortlich/istMaterial-
  verantwortlich/istLeitungsverantwortlich weiter.
- /admin-Route für alle drei Rollen offen, AdminPage filtert Tabs nach
  Rolle (Material/Leitung: Objekte-Pflege, Kontrollverantwortung,
  Änderungslog; nur Administration: Stammdaten/Benutzer/Eskalation/
  Zuständigkeit).
- ObjektSection blendet Anlegen/Duplizieren/Kopplung für Nicht-Admins aus
  (waren admin-only im Backend, hätten 403 geworfen).
- Promise.allSettled statt Promise.all beim Laden, damit ein admin-only
  Endpunkt (z.B. /benutzer) nicht die ganze Seite für niedrigere Rollen
  blockiert.
- Backend: GET /benutzer jetzt auch für Material-/Leitungsverantwortliche
  lesbar (für Kontrollverantwortung-Auswahl im Frontend nötig), Schreiben
  bleibt admin-only.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-04 22:25:32 +02:00
..

MABEA Backend Sprint 0

FastAPI-Skeleton, Datenbankschema (Alembic), Auth (JWT), Rollen-Dependency. Details: ergebnisse/sprintplan.md, ergebnisse/19_technische_architektur.md, ergebnisse/20_datenbank_schema.md.

Setup (auf dem Zielsystem, nicht lokal)

python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

cp example.env .env
# .env editieren: DATABASE_URL, JWT_SECRET_KEY, SYSTEMKNOTEN_ID

alembic upgrade head
uvicorn app.main:app --host 0.0.0.0 --port 8000

Tests (CI oder Zielsystem)

pytest

Erwartet eine per Alembic migrierte PostgreSQL-Test-Datenbank (DATABASE_URL zeigt darauf). CI-Workflow: .gitea/workflows/ci.yml.

Struktur

  • app/core/app_settings.py Konfiguration aus Umgebungsvariablen
  • app/core/security.py Passwort-Hashing, JWT
  • app/db/ SQLAlchemy Engine/Session
  • app/models/ ORM-Modelle (Sprint 0: nur Auth-relevante Tabellen; weitere Modelle folgen Sprint 1+)
  • app/api/ FastAPI-Router, Dependencies (u.a. require_roles für Prompt-05-Berechtigungsmatrix)
  • alembic/versions/0001_initial_schema.py vollständiges Ziel-Schema (Prompt 20), auch für Tabellen, die erst spätere Sprints per API befüllen
  • alembic/versions/0002_seed_hauptserver.py Sprintplan E6: seedet den einen systemknoten-Datensatz (typ='haupt')