fix: Restore all files lost during destructive rebase
A previous `git pull --rebase origin main` dropped 177 local commits,
losing 3400+ files across admin-v2, backend, studio-v2, website,
klausur-service, and many other services. The partial restore attempt
(660295e2) only recovered some files.
This commit restores all missing files from pre-rebase ref 98933f5e
while preserving post-rebase additions (night-scheduler, night-mode UI,
NightModeWidget dashboard integration).
Restored features include:
- AI Module Sidebar (FAB), OCR Labeling, OCR Compare
- GPU Dashboard, RAG Pipeline, Magic Help
- Klausur-Korrektur (8 files), Abitur-Archiv (5+ files)
- Companion, Zeugnisse-Crawler, Screen Flow
- Full backend, studio-v2, website, klausur-service
- All compliance SDKs, agent-core, voice-service
- CI/CD configs, documentation, scripts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
148
backend/main.py
Normal file
148
backend/main.py
Normal file
@@ -0,0 +1,148 @@
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
from pathlib import Path
|
||||
|
||||
from original_service import router as original_router
|
||||
from learning_units_api import router as learning_units_router
|
||||
from frontend.studio import router as studio_router
|
||||
from frontend.preview import router as preview_router
|
||||
from frontend.school import router as school_router
|
||||
from frontend.meetings import router as meetings_router
|
||||
from frontend.customer import router as customer_router
|
||||
from frontend.dev_admin import router as dev_admin_router
|
||||
from meetings_api import router as meetings_api_router
|
||||
from recording_api import router as recording_api_router
|
||||
from consent_api import router as consent_router
|
||||
from consent_admin_api import router as consent_admin_router
|
||||
from gdpr_api import router as gdpr_router, admin_router as gdpr_admin_router
|
||||
from auth_api import router as auth_router
|
||||
from notification_api import router as notification_router
|
||||
from deadline_api import router as deadline_router
|
||||
from email_template_api import router as email_template_router, versions_router as email_template_versions_router
|
||||
from dsr_api import router as dsr_router
|
||||
from dsr_admin_api import router as dsr_admin_router, templates_router as dsr_templates_router
|
||||
from messenger_api import router as messenger_router
|
||||
from jitsi_api import router as jitsi_router
|
||||
from school_api import router as school_api_router
|
||||
from letters_api import router as letters_router
|
||||
from certificates_api import router as certificates_router
|
||||
from worksheets_api import router as worksheets_router
|
||||
from correction_api import router as correction_router
|
||||
from state_engine_api import router as state_engine_router
|
||||
from klausur_service_proxy import router as klausur_service_router
|
||||
from abitur_docs_api import router as abitur_docs_router
|
||||
from rbac_api import router as rbac_router
|
||||
from security_api import router as security_router
|
||||
from api.tests import router as tests_registry_router
|
||||
from system_api import router as system_router
|
||||
from classroom_api import router as classroom_router
|
||||
|
||||
# LLM Gateway, Alerts Agent, und GPU Infra (optional, wenn konfiguriert)
|
||||
import os
|
||||
LLM_GATEWAY_ENABLED = os.getenv("LLM_GATEWAY_ENABLED", "false").lower() == "true"
|
||||
ALERTS_AGENT_ENABLED = os.getenv("ALERTS_AGENT_ENABLED", "false").lower() == "true"
|
||||
VAST_API_KEY = os.getenv("VAST_API_KEY") # vast.ai wird aktiviert wenn API Key gesetzt
|
||||
|
||||
app = FastAPI(title="BreakPilot Backend")
|
||||
|
||||
# Mount static files directory for CSS, JS, and other assets
|
||||
static_dir = Path(__file__).parent / "frontend" / "static"
|
||||
if static_dir.exists():
|
||||
app.mount("/static", StaticFiles(directory=str(static_dir)), name="static")
|
||||
|
||||
# CORS-Konfiguration für Frontend-Zugriff
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["*"], # In Produktion spezifische Origins angeben
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
# Hier hängen wir die einzelnen Service-Router ein.
|
||||
# Alle Routen bekommen das Präfix /api, damit das Frontend sie findet.
|
||||
app.include_router(original_router, prefix="/api")
|
||||
app.include_router(learning_units_router, prefix="/api")
|
||||
app.include_router(consent_router, prefix="/api")
|
||||
app.include_router(consent_admin_router, prefix="/api")
|
||||
app.include_router(gdpr_router, prefix="/api")
|
||||
app.include_router(gdpr_admin_router, prefix="/api")
|
||||
app.include_router(auth_router, prefix="/api")
|
||||
app.include_router(notification_router, prefix="/api")
|
||||
app.include_router(deadline_router, prefix="/api")
|
||||
app.include_router(email_template_router) # Hat bereits /api Präfix im Router
|
||||
app.include_router(email_template_versions_router) # Hat bereits /api Präfix im Router
|
||||
# DSR (Data Subject Requests / Betroffenenanfragen)
|
||||
app.include_router(dsr_router, prefix="/api")
|
||||
app.include_router(dsr_admin_router, prefix="/api")
|
||||
app.include_router(dsr_templates_router, prefix="/api")
|
||||
# Frontend-UI und Preview-Endpunkte (ohne /api Präfix)
|
||||
app.include_router(studio_router)
|
||||
app.include_router(preview_router)
|
||||
app.include_router(school_router) # Schulverwaltung Frontend
|
||||
app.include_router(meetings_router) # Meetings/Jitsi Frontend
|
||||
app.include_router(meetings_api_router) # Meetings API (already has /api/meetings prefix)
|
||||
app.include_router(recording_api_router) # Recording API (already has /api/recordings prefix)
|
||||
app.include_router(customer_router) # Slim Customer Portal (/customer, /account, /mein-konto)
|
||||
app.include_router(dev_admin_router) # Developer Admin Frontend (/dev-admin)
|
||||
# Messenger API (Kontakte, Konversationen, Nachrichten)
|
||||
app.include_router(messenger_router) # Hat bereits /api/messenger Präfix im Router
|
||||
# Jitsi API (Meeting-Einladungen per Email)
|
||||
app.include_router(jitsi_router) # Hat bereits /api/jitsi Präfix im Router
|
||||
# School Service API Proxy (leitet an school-service:8084 weiter)
|
||||
app.include_router(school_api_router, prefix="/api")
|
||||
# Letters API (Elternbriefe mit PDF-Export und GFK-Integration)
|
||||
app.include_router(letters_router, prefix="/api")
|
||||
# Certificates API (Zeugnisse mit PDF-Export und Workflow)
|
||||
app.include_router(certificates_router, prefix="/api")
|
||||
# Worksheets API (Content-Generatoren: MC, Cloze, Mindmap, Quiz)
|
||||
app.include_router(worksheets_router, prefix="/api")
|
||||
# Correction API (OCR-basierte Klassenarbeits-Korrektur)
|
||||
app.include_router(correction_router, prefix="/api")
|
||||
# State Engine API (Begleiter-Modus mit Phasen und Antizipation)
|
||||
app.include_router(state_engine_router, prefix="/api")
|
||||
# Klausur-Service Proxy (leitet an klausur-service:8086 weiter)
|
||||
app.include_router(klausur_service_router, prefix="/api")
|
||||
# Abitur Docs API (NiBiS-Dokumente, RAG-Vorbereitung)
|
||||
app.include_router(abitur_docs_router, prefix="/api")
|
||||
# RBAC API (Lehrer- und Rollenverwaltung)
|
||||
app.include_router(rbac_router, prefix="/api")
|
||||
# Security API (DevSecOps Dashboard)
|
||||
app.include_router(security_router, prefix="/api")
|
||||
# Test Registry API (Test Dashboard mit Echtzeit-Fortschritt)
|
||||
app.include_router(tests_registry_router) # Hat bereits /api/tests Praefix im Router
|
||||
# System API (Health Check, Local IP fuer QR-Code Mobile Upload)
|
||||
app.include_router(system_router) # Hat bereits Pfade im Router
|
||||
# Classroom API (Unterrichts-Steuerung mit Phasen und Timer)
|
||||
app.include_router(classroom_router, prefix="/api/classroom")
|
||||
|
||||
# LLM Gateway Routes (optional)
|
||||
if LLM_GATEWAY_ENABLED:
|
||||
from llm_gateway.routes import chat_router, playbooks_router, health_router, tools_router
|
||||
app.include_router(health_router, prefix="/llm", tags=["LLM Gateway"])
|
||||
app.include_router(chat_router, prefix="/llm/v1", tags=["LLM Gateway"])
|
||||
app.include_router(playbooks_router, prefix="/llm", tags=["LLM Gateway"])
|
||||
app.include_router(tools_router, prefix="/llm/tools", tags=["LLM Tools"])
|
||||
|
||||
# Alerts Agent Routes (optional)
|
||||
if ALERTS_AGENT_ENABLED:
|
||||
from alerts_agent.api import router as alerts_router
|
||||
app.include_router(alerts_router, prefix="/api", tags=["Alerts Agent"])
|
||||
|
||||
# vast.ai GPU Infrastructure Routes (optional)
|
||||
if VAST_API_KEY:
|
||||
from infra.vast_power import router as vast_router
|
||||
app.include_router(vast_router, tags=["GPU Infrastructure"])
|
||||
|
||||
# EduSearch Seeds API (immer aktiv - Admin-Verwaltung der Crawler-Seeds)
|
||||
from llm_gateway.routes.edu_search_seeds import router as edu_search_seeds_router
|
||||
app.include_router(edu_search_seeds_router, prefix="/v1", tags=["EduSearch"])
|
||||
|
||||
# Communication API (Lehrer-Eltern-Kommunikation mit GFK-Prinzipien)
|
||||
from llm_gateway.routes.communication import router as communication_router
|
||||
app.include_router(communication_router, prefix="/v1", tags=["Communication"])
|
||||
|
||||
# Legal Crawler API (Crawlt Schulgesetze und rechtliche Inhalte)
|
||||
from llm_gateway.routes.legal_crawler import router as legal_crawler_router
|
||||
app.include_router(legal_crawler_router, prefix="/v1", tags=["Legal Crawler"])
|
||||
Reference in New Issue
Block a user