Rechnungen sind finanziell sensibel - nur Materialverantwortliche/ Leitungsverantwortliche/Administration dürfen sie in der Liste sehen und herunterladen (403 bei direktem Downloadversuch), Mitarbeiter nicht. Hochladen bleibt für alle offen (z.B. Wareneingang direkt scannen). Andere Dokumenttypen bleiben unverändert für jeden mit Aktenzugriff sichtbar - die werden im Feldeinsatz gebraucht. EINGESCHRAENKTE_DOKUMENTTYPEN als zentrale Stelle für künftige weitere Einschränkungen. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
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 Umgebungsvariablenapp/core/security.py– Passwort-Hashing, JWTapp/db/– SQLAlchemy Engine/Sessionapp/models/– ORM-Modelle (Sprint 0: nur Auth-relevante Tabellen; weitere Modelle folgen Sprint 1+)app/api/– FastAPI-Router, Dependencies (u.a.require_rolesfü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üllenalembic/versions/0002_seed_hauptserver.py– Sprintplan E6: seedet den einensystemknoten-Datensatz (typ='haupt')