Onyscribe Admin: Initialer Stand

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>
This commit is contained in:
RubenRWU
2026-10-15 15:30:26 +02:00
commit 7d8c226da2
89 changed files with 13975 additions and 0 deletions

30
.env.example Normal file
View File

@@ -0,0 +1,30 @@
# ── Pflicht ───────────────────────────────────────────────────────────────────
# Datenbank: Postgres (docker-compose setzt sie selbst) oder SQLite für lokale Entwicklung
DATABASE_URL=sqlite:///./.data/onyscribe-admin.db
# Master-Key für Secrets in der DB UND Session-Cookies (Fernet-Key). SICHERN – ohne ihn sind Secrets unlesbar.
# python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
SECRET_KEY=
# ── Login der Admin-Plattform (login.onyva.dev) ───────────────────────────────
AUTH_ENABLED=false
OIDC_ISSUER=https://login.onyva.dev
OIDC_CLIENT_ID=
OIDC_CLIENT_SECRET=
OIDC_REDIRECT_URI=https://admin.example.de/auth/callback
OIDC_LOGOUT_REDIRECT_URI=https://admin.example.de/
APP_COOKIE_SECURE=true
# Zugriffsregel (mindestens eine, sonst Default-Deny):
ADMIN_ALLOWED_EMAILS=
ADMIN_REQUIRED_ROLE=
# ── Deploys ───────────────────────────────────────────────────────────────────
DEPLOY_ALLOWED_TENANTS= # Tenants, die LIVE angefasst werden dürfen (kommagetrennt, * = alle, leer = keiner) – zum Start nur den Test-Tenant, z. B. demo-admin
DEPLOY_LIVE=false # true erlaubt ECHTE Schreibzugriffe auf Mittwald – bewusst aus lassen, bis der Core umgebaut ist
MITTWALD_API_TOKEN= # optional für lesende Dry-Run-Aufrufe
# ── OIDC-Clients der Tenants automatisch verwalten (login.onyva.dev /api/v1) ──
ONYVA_LOGIN_API_KEY= # Admin-Key aus dem Login-Dashboard (API-Keys); wie ein Passwort behandeln
OIDC_SYNC_LIVE=false # true = darf im Login Apps anlegen/ändern; ohne: nur lesen/Plan (Dry-Run)
# ── KI ────────────────────────────────────────────────────────────────────────
CORTECS_API_KEY= # alternativ: Einstellungen → Geteilte Secrets