from fastapi import APIRouter, Depends from sqlalchemy.ext.asyncio import AsyncSession from app.api.deps import require_roles from app.db.session import get_db from app.models.auth import RolleTyp from app.schemas.dashboard import AblaufdatumRead, KennzahlenRead from app.services.dashboard import bevorstehende_ablaufdaten, kennzahlen router = APIRouter() _verantwortliche = require_roles( RolleTyp.administration, RolleTyp.materialverantwortlicher, RolleTyp.leitungsverantwortlicher ) @router.get("/dashboard/kennzahlen", response_model=KennzahlenRead) async def hole_kennzahlen(db: AsyncSession = Depends(get_db), _=Depends(_verantwortliche)) -> KennzahlenRead: """Prompt 12.1: Zielgruppe Materialverantwortlicher/Leitungsverantwortlicher/ Administration. Filterung nach Zuständigkeitsbereich (Karte 04) folgt später, V1 zeigt globale Zahlen für diese Rollen.""" return KennzahlenRead(**await kennzahlen(db)) @router.get("/dashboard/ablaufdaten", response_model=list[AblaufdatumRead]) async def hole_ablaufdaten(db: AsyncSession = Depends(get_db), _=Depends(_verantwortliche)) -> list[AblaufdatumRead]: return [AblaufdatumRead(**eintrag) for eintrag in await bevorstehende_ablaufdaten(db)]