Sprint 0: FastAPI-Skeleton, vollständiges DB-Schema (Alembic), Auth (JWT/bcrypt), Rollen-Dependency, CI
CI / backend-tests (push) Failing after 2s

- Vollständiges Ziel-Schema aus Prompt 20 als initiale Migration (inkl. Karte-13-Vorbereitung: UUID-PKs, systemknoten)
- Seed-Migration für Hauptserver-Datensatz (Sprintplan E6)
- JWT-Login + /auth/me, require_roles-Dependency (Prompt 05 Berechtigungsmatrix)
- Tests: health, login/me, Rollen-Ablehnung/-Zulassung (S0-Abnahmekriterien)
- Gitea-Actions-CI: install -> migrate -> pytest mit Coverage-Gate 50%

Nur Code/Config erzeugt, nicht lokal installiert oder ausgeführt (Deployment-Regel).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L85hmKbvX7Cqkq47KnQhFt
This commit is contained in:
sysops
2026-09-03 22:32:54 +02:00
co-authored by Claude Sonnet 5
parent e4ee4e5458
commit cedc39e075
34 changed files with 1006 additions and 0 deletions
+19
View File
@@ -0,0 +1,19 @@
from fastapi import APIRouter, Depends
from app.api.deps import require_roles
from app.models.auth import Benutzer, RolleTyp
router = APIRouter()
@router.get("/health")
async def health() -> dict:
return {"status": "ok"}
@router.get("/health/admin-only")
async def health_admin_only(
current_user: Benutzer = Depends(require_roles(RolleTyp.administration)),
) -> dict:
"""Nachweis, dass die Rollen-Dependency (Prompt 05) greift kein Fachfeature."""
return {"status": "ok", "login": current_user.login}