Admin-Plattform für die Tenants von Onyscribe: Editor mit Live-Vorschau (echter Core in Sandbox), Versionen, KI-Agent (Cortecs), OIDC-Abgleich über die Login-Developer-API, Deploy-Engine (Mittwald, gesperrt ohne DEPLOY_LIVE, Freigabe pro Tenant), Core-Vertrag (Schema/Manifest), Core-Releases mit Kompatibilitätsprüfung, Canary-Rollout und Rollback, Zustandsabgleich. Runbook: docs/RUNBOOK_PARALLELTEST.md Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
20 lines
501 B
Python
20 lines
501 B
Python
from __future__ import annotations
|
|
|
|
from fastapi import Depends, HTTPException, Request
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.auth import actor_name
|
|
from app.db import get_db
|
|
from app.models import Tenant
|
|
|
|
|
|
def actor(request: Request) -> str:
|
|
return actor_name(request)
|
|
|
|
|
|
def tenant_or_404(tenant_id: str, db: Session = Depends(get_db)) -> Tenant:
|
|
t = db.get(Tenant, tenant_id)
|
|
if t is None:
|
|
raise HTTPException(404, f"Tenant „{tenant_id}“ nicht gefunden")
|
|
return t
|